Skip to content

Commit 12c1fdb

Browse files
authored
Merge pull request #1471 from javiteri95/newParametersDataTransfer
new parameters in data transfer file
2 parents e9bcb1a + 2dae608 commit 12c1fdb

File tree

12 files changed

+208
-35
lines changed

12 files changed

+208
-35
lines changed

electron_app/src/__integrations__/Account.integration.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
const DBManager = require('../database');
44
jest.mock('./../Account.js');
5+
jest.mock('../windows/mailbox', () => ({
6+
getShowPreview: () => {
7+
return Promise.resolve(true);
8+
},
9+
setShowPreview: () => {
10+
return Promise.resolve();
11+
}
12+
}));
513

614
const account = {
715
recipientId: 'user',

electron_app/src/__integrations__/Contact.integration.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
/* eslint-env node, jest */
22
const DBManager = require('../database');
33

4+
jest.mock('../windows/mailbox', () => ({
5+
getShowPreview: () => {
6+
return Promise.resolve(true);
7+
},
8+
setShowPreview: () => {
9+
return Promise.resolve();
10+
}
11+
}));
12+
413
let accountId;
514
let accountId2;
615

electron_app/src/__integrations__/DbExporter.integration.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ const myAccount = require('../Account');
2424
const PARSED_SAMPLE_FILEPATH = `${__dirname}/parsed_sample_file.txt`;
2525
const TEMP_DIRECTORY = '/tmp/criptext-tests';
2626

27+
jest.mock('../windows/mailbox', () => ({
28+
getShowPreview: () => {
29+
return Promise.resolve(true);
30+
},
31+
setShowPreview: () => {
32+
return Promise.resolve();
33+
}
34+
}));
35+
2736
let accountId;
2837
let username;
2938
const account = {
@@ -105,11 +114,20 @@ const email = {
105114
}
106115
]
107116
};
117+
const settings = {
118+
language: 'en',
119+
opened: false,
120+
theme: 'dark'
121+
};
108122

109123
const insertAccount = async () => {
110124
return await DBManager.createAccount(account);
111125
};
112126

127+
const insertSettings = async () => {
128+
return await DBManager.createSettings(settings);
129+
};
130+
113131
const insertContacts = async params => {
114132
return await DBManager.createContact({ contacts: params, accountId });
115133
};
@@ -167,6 +185,7 @@ beforeAll(async () => {
167185
});
168186
globalManager.databaseKey.set(dbKey);
169187
const [account] = await insertAccount();
188+
await insertSettings();
170189
myAccount.initialize([account.dataValues]);
171190
accountId = account.dataValues.id;
172191
username = myAccount.email;
@@ -321,11 +340,21 @@ describe('Import Database: ', () => {
321340
};
322341
const same =
323342
emailChecked1.id === emailChecked2.id && emailChecked1.id === rawEmail.id;
343+
344+
const { language, theme } = await DBManager.getSettings();
345+
346+
const [account] = await DBManager.getAccount();
347+
const { signature, signFooter } = account;
348+
324349
expect(same).toBe(true);
325350
expect(emailResult).toMatchObject(expect.objectContaining(email.email));
326351
expect(fileResult).toMatchObject(email.files[0]);
327352
expect(firstContact).toMatchObject(contacts[0]);
328353
expect(secondContact).toMatchObject(contacts[1]);
329354
expect(thirdContact).toMatchObject(contacts[2]);
355+
expect(language).toBe('en');
356+
expect(theme).toBe('dark');
357+
expect(signature).toBe('');
358+
expect(signFooter).toBe(true);
330359
});
331360
});

electron_app/src/__integrations__/Email.integration.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22
const DBManager = require('../database');
33
const systemLabels = require('./../systemLabels');
44

5+
jest.mock('../windows/mailbox', () => ({
6+
getShowPreview: () => {
7+
return Promise.resolve(true);
8+
},
9+
setShowPreview: () => {
10+
return Promise.resolve();
11+
}
12+
}));
13+
14+
jest.setTimeout(7000);
15+
516
let accountId;
617
let emailIdToDelete;
718

electron_app/src/__integrations__/Feeditem.integration.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
/* eslint-env node, jest */
22
const DBManager = require('../database');
33

4+
jest.mock('../windows/mailbox', () => ({
5+
getShowPreview: () => {
6+
return Promise.resolve(true);
7+
},
8+
setShowPreview: () => {
9+
return Promise.resolve();
10+
}
11+
}));
12+
413
let accountId;
514

615
const account = {

electron_app/src/__integrations__/File.integration.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
/* eslint-env node, jest */
22
const DBManager = require('../database');
33

4+
jest.mock('../windows/mailbox', () => ({
5+
getShowPreview: () => {
6+
return Promise.resolve(true);
7+
},
8+
setShowPreview: () => {
9+
return Promise.resolve();
10+
}
11+
}));
12+
413
let accountId;
514

615
const account = {

electron_app/src/__integrations__/Label.integration.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22
const DBManager = require('../database');
33
const systemLabels = require('../systemLabels');
44

5+
jest.mock('../windows/mailbox', () => ({
6+
getShowPreview: () => {
7+
return Promise.resolve(true);
8+
},
9+
setShowPreview: () => {
10+
return Promise.resolve();
11+
}
12+
}));
13+
514
let accountId;
615

716
const account = {

electron_app/src/__integrations__/parsed_sample_file.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{"fileVersion":"6","recipientId":"test","domain":"criptext.com"}
1+
{"fileVersion":"6","recipientId":"test","domain":"criptext.com","signature":"","hasCriptextFooter":true,"language":"en","darkTheme":true,"showPreview":true}
22
{"table":"contact","object":{"id":1,"email":"[email protected]","name":"Alice","isTrusted":false,"spamScore":0}}
33
{"table":"contact","object":{"id":2,"email":"[email protected]","name":"Bob","isTrusted":false,"spamScore":0}}
44
{"table":"contact","object":{"id":3,"email":"[email protected]","name":"Charlie","isTrusted":false,"spamScore":0}}

electron_app/src/database/DBEexporter.js

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ const {
2525
Signedprekeyrecord,
2626
getDB,
2727
Table,
28-
deleteAccountNotSignalRelatedData
28+
deleteAccountNotSignalRelatedData,
29+
getSettings,
30+
updateSettings,
31+
updateAccount
2932
} = require('./DBEmanager');
3033
const myAccount = require('./../Account');
3134
const systemLabels = require('./../systemLabels');
@@ -37,6 +40,7 @@ const {
3740
replaceEmailsWithCopy,
3841
saveEmailBody
3942
} = require('./../utils/FileUtils');
43+
const { getShowPreview, setShowPreview } = require('../windows/mailbox');
4044

4145
const CIPHER_ALGORITHM = 'aes-128-cbc';
4246
const STREAM_SIZE = 512 * 1024;
@@ -844,10 +848,28 @@ const exportEncryptDatabaseToFile = async ({
844848
? accountObj.recipientId.split('@')
845849
: myAccount.recipientId.split('@');
846850
const accountId = accountObj ? accountObj.id : myAccount.id;
851+
const signature =
852+
accountObj && accountObj.signature !== undefined
853+
? accountObj.signature
854+
: myAccount.signature;
855+
856+
const hasCriptextFooter =
857+
accountObj && accountObj.signFooter !== undefined
858+
? accountObj.signFooter
859+
: myAccount.signFooter;
860+
const showPreview = await getShowPreview();
861+
862+
const { language, theme } = await getSettings();
863+
847864
const fileInformation = JSON.stringify({
848865
fileVersion: LINK_DEVICES_FILE_VERSION,
849866
recipientId: recipientId,
850-
domain: domain || APP_DOMAIN
867+
domain: domain || APP_DOMAIN,
868+
signature: signature,
869+
hasCriptextFooter: hasCriptextFooter,
870+
language: language,
871+
darkTheme: theme === 'dark',
872+
showPreview: showPreview
851873
});
852874

853875
exportProgress += 100 / PROGRESS_TOTAL_STEPS;
@@ -947,6 +969,10 @@ const importDatabaseFromFile = async ({
947969
let signedprekeyrecords = [];
948970
let aliases = [];
949971
let customDomains = [];
972+
// eslint-disable-next-line prefer-const
973+
let accountObject = {};
974+
// eslint-disable-next-line prefer-const
975+
let settingsObject = {};
950976

951977
const sequelize = getDB();
952978

@@ -959,12 +985,19 @@ const importDatabaseFromFile = async ({
959985
}
960986

961987
if (isStrict) {
962-
getCustomLinesByStream(filepath, 1, (err, lines) => {
988+
getCustomLinesByStream(filepath, 1, async (err, lines) => {
963989
if (err) throw new Error('Failed to read file information');
964990
const fileInformation = lines[0];
965-
const { fileVersion, recipientId, domain } = JSON.parse(
966-
fileInformation
967-
);
991+
const {
992+
fileVersion,
993+
recipientId,
994+
domain,
995+
signature,
996+
hasCriptextFooter,
997+
language,
998+
darkTheme,
999+
showPreview
1000+
} = JSON.parse(fileInformation);
9681001

9691002
if (recipientId && domain) {
9701003
const fileOwner = `${recipientId}@${domain}`;
@@ -976,6 +1009,32 @@ const importDatabaseFromFile = async ({
9761009
const currentVersion = Number(LINK_DEVICES_FILE_VERSION);
9771010
if (version !== currentVersion) return;
9781011
}
1012+
1013+
if (signature !== undefined) {
1014+
accountObject.signature = signature;
1015+
}
1016+
1017+
if (hasCriptextFooter !== undefined) {
1018+
accountObject.signFooter = hasCriptextFooter;
1019+
}
1020+
1021+
if (language) {
1022+
settingsObject.language = language;
1023+
}
1024+
1025+
if (darkTheme !== undefined) {
1026+
settingsObject.theme = darkTheme ? 'dark' : 'light';
1027+
}
1028+
1029+
if (showPreview !== undefined) {
1030+
await setShowPreview(showPreview);
1031+
}
1032+
if (Object.keys(settingsObject).length !== 0) {
1033+
await updateSettings(settingsObject, trx);
1034+
}
1035+
if (Object.keys(accountObj).length !== 0) {
1036+
await updateAccount(accountObj, trx);
1037+
}
9791038
});
9801039

9811040
if (accountId) {

electron_app/src/database/DBEmanager.js

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -112,30 +112,33 @@ const getAccountByParams = params => {
112112
.map(account => account.toJSON());
113113
};
114114

115-
const updateAccount = ({
116-
id,
117-
deviceId,
118-
jwt,
119-
refreshToken,
120-
name,
121-
blockRemoteContent,
122-
customerType,
123-
privKey,
124-
pubKey,
125-
recipientId,
126-
registrationId,
127-
signature,
128-
signatureEnabled,
129-
signFooter,
130-
isLoggedIn,
131-
isActive,
132-
autoBackupEnable,
133-
autoBackupFrequency,
134-
autoBackupLastDate,
135-
autoBackupLastSize,
136-
autoBackupNextDate,
137-
autoBackupPath
138-
}) => {
115+
const updateAccount = (
116+
{
117+
id,
118+
deviceId,
119+
jwt,
120+
refreshToken,
121+
name,
122+
blockRemoteContent,
123+
customerType,
124+
privKey,
125+
pubKey,
126+
recipientId,
127+
registrationId,
128+
signature,
129+
signatureEnabled,
130+
signFooter,
131+
isLoggedIn,
132+
isActive,
133+
autoBackupEnable,
134+
autoBackupFrequency,
135+
autoBackupLastDate,
136+
autoBackupLastSize,
137+
autoBackupNextDate,
138+
autoBackupPath
139+
},
140+
trx
141+
) => {
139142
const params = noNulls({
140143
deviceId,
141144
jwt,
@@ -163,7 +166,8 @@ const updateAccount = ({
163166
const whereParam = id ? { id } : { recipientId };
164167
myAccount.update({ ...params, ...whereParam });
165168
return Account().update(params, {
166-
where: whereParam
169+
where: whereParam,
170+
transaction: trx
167171
});
168172
};
169173

@@ -1382,7 +1386,7 @@ const getSettings = () => {
13821386
});
13831387
};
13841388

1385-
const updateSettings = async ({ language, opened, theme }) => {
1389+
const updateSettings = async ({ language, opened, theme }, trx) => {
13861390
const params = noNulls({
13871391
language,
13881392
opened,
@@ -1391,7 +1395,11 @@ const updateSettings = async ({ language, opened, theme }) => {
13911395
if (Object.keys(params).length < 1) {
13921396
return Promise.resolve([1]);
13931397
}
1394-
const result = await Settings().update(params, { where: {} });
1398+
const result = await Settings().update(
1399+
params,
1400+
{ where: {} },
1401+
{ transaction: trx }
1402+
);
13951403
mySettings.update(params);
13961404
if (params.language) setLanguage(params.language);
13971405
return result;

0 commit comments

Comments
 (0)