Skip to content

Commit 9586c7c

Browse files
author
Erika Perugachi
authored
Merge pull request #1163 from erikaperugachi/fix
Fix
2 parents 4469a0e + e358dbe commit 9586c7c

File tree

22 files changed

+208
-100
lines changed

22 files changed

+208
-100
lines changed

electron_app/electron-starter.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const {
1717
isFromStore,
1818
getSystemLanguage
1919
} = require('./src/windows/windowUtils');
20+
const {initNucleus} = require('./src/nucleusManager');
2021
require('./src/ipc/composer.js');
2122
require('./src/ipc/loading.js');
2223
require('./src/ipc/login.js');
@@ -25,6 +26,7 @@ require('./src/ipc/database.js');
2526
require('./src/ipc/manager.js');
2627
require('./src/ipc/dataTransfer.js');
2728
require('./src/ipc/backup.js');
29+
require('./src/ipc/nucleus.js');
2830
const ipcUtils = require('./src/ipc/utils.js');
2931

3032
globalManager.forcequit.set(false);
@@ -36,24 +38,27 @@ async function initApp() {
3638
} catch (ex) {
3739
console.log(ex);
3840
}
39-
41+
4042
const [existingAccount] = await dbManager.getAccount();
4143
if (existingAccount) {
4244
if (!!existingAccount.deviceId) {
4345
const appSettings = await dbManager.getSettings();
4446
const settings = Object.assign(appSettings, { isFromStore });
4547
myAccount.initialize(existingAccount);
4648
mySettings.initialize(settings);
49+
initNucleus({language: mySettings.language});
4750
wsClient.start(myAccount);
4851
createAppMenu();
4952
mailboxWindow.show({ firstOpenApp: true });
5053
} else {
51-
await getUserLanguage();
54+
const language = await getUserLanguage();
55+
initNucleus({language});
5256
createAppMenu();
5357
loginWindow.show();
5458
}
5559
} else {
56-
await getUserLanguage();
60+
const language = await getUserLanguage();
61+
initNucleus({language});
5762
createAppMenu();
5863
loginWindow.show({});
5964
}
@@ -97,6 +102,7 @@ if ((isWindows || isLinux) && !isDev) {
97102
const getUserLanguage = async () => {
98103
const osLanguage = await getSystemLanguage();
99104
await dbManager.updateSettings({ language: osLanguage });
105+
return osLanguage;
100106
};
101107

102108
app.on('ready', () => {

electron_app/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "criptext",
3-
"version": "0.23.4",
3+
"version": "0.23.5",
44
"author": {
55
"name": "Criptext Inc",
66
"email": "[email protected]",
@@ -141,7 +141,7 @@
141141
"dotenv": "^6.2.0",
142142
"electron-context-menu": "^0.10.1",
143143
"electron-dl": "^1.12.0",
144-
"electron-nucleus": "^2.2.1",
144+
"electron-nucleus": "^2.3.0",
145145
"electron-updater": "^3.0.3",
146146
"electron-window-state": "^4.1.1",
147147
"getos": "^3.1.1",

electron_app/src/ipc/loading.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ipc.answerRenderer('close-create-keys-loading', () => {
77
globalManager.loadingData.set({});
88
});
99

10-
ipc.answerRenderer('open-create-keys-loading', arg => {
11-
globalManager.loadingData.set(arg);
12-
loadingWindow.show();
10+
ipc.answerRenderer('open-create-keys-loading', params => {
11+
globalManager.loadingData.set(params);
12+
loadingWindow.show({ type: params.loadingType });
1313
});

electron_app/src/ipc/nucleus.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
const ipc = require('@criptext/electron-better-ipc');
2+
const { addEventError, NUCLEUS_EVENTS } = require('./../nucleusManager');
3+
4+
ipc.answerRenderer('nucleups-report-content-unencrypted', error =>
5+
addEventError(NUCLEUS_EVENTS.REPORT_CONTENT_UNENCRYPTED, { error })
6+
);

electron_app/src/nucleusManager.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
const { APP_VERSION, NUCLEUS_ID } = require('./utils/const');
2+
const myAccount = require('./Account');
3+
let Nucleus;
4+
5+
const initNucleus = ({ userId }) => {
6+
const data = {
7+
onlyMainProcess: true,
8+
userId: userId || 'unknown',
9+
version: APP_VERSION
10+
};
11+
Nucleus = require('electron-nucleus')(NUCLEUS_ID, data);
12+
};
13+
14+
const addEventError = (event, data) => {
15+
Nucleus.trackError(event, data);
16+
};
17+
18+
const addEventTrack = (event, data) => {
19+
Nucleus.track(event, data);
20+
};
21+
22+
const updateUserData = () => {
23+
Nucleus.setUserId(myAccount.recipientId);
24+
};
25+
26+
const NUCLEUS_EVENTS = {
27+
LOGIN_OPENED: 'LOGIN_OPENED',
28+
LOGIN_NEW_USER: 'LOGIN_NEW_USER',
29+
LOGIN_NEW_DEVICE: 'LOGIN_NEW_DEVICE',
30+
LOGIN_NEW_ENTERPRISE: 'LOGIN_NEW_ENTERPRISE',
31+
MAILBOX_OPENED: 'MAILBOX_OPENED',
32+
NEW_USER: 'NEW_USER',
33+
REPORT_CONTENT_UNENCRYPTED: 'REPORT_CONTENT_UNENCRYPTED'
34+
};
35+
36+
module.exports = {
37+
initNucleus,
38+
addEventError,
39+
addEventTrack,
40+
updateUserData,
41+
NUCLEUS_EVENTS
42+
};

electron_app/src/socketClient.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ const disconnect = () => {
3535

3636
const start = ({ jwt }) => {
3737
client = new WebSocketClient();
38+
pingFailedCounter = 0;
39+
checkDelay = normalPingDelayMs;
3840
client.connect(
3941
`${SOCKET_URL}?token=${jwt}`,
4042
'criptext-protocol'

electron_app/src/windows/composer.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,15 @@ const destroy = async ({
133133
const { type, key } = emailToEdit;
134134
if (type === composerEvents.EDIT_DRAFT) {
135135
const [oldDraftEmail] = await dbManager.getEmailByKey(key);
136-
const oldEmailId = oldDraftEmail.id;
137-
await dbManager.deleteEmailLabelAndContactByEmailId(
138-
oldEmailId,
139-
undefined
140-
);
136+
if (oldDraftEmail) {
137+
const oldEmailId = oldDraftEmail.id;
138+
await dbManager.deleteEmailLabelAndContactByEmailId(
139+
oldEmailId,
140+
undefined
141+
);
142+
}
141143
event = 'composer-email-delete';
142-
params = { threadId, oldEmailId };
144+
params = { threadId };
143145
} else if (
144146
type === composerEvents.REPLY ||
145147
type === composerEvents.REPLY_ALL

electron_app/src/windows/loading.js

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ const { BrowserWindow } = require('electron');
22
const path = require('path');
33
const { loadingUrl } = require('./../window_routing');
44
const globalManager = require('./../globalManager');
5+
const {
6+
updateUserData,
7+
addEventTrack,
8+
NUCLEUS_EVENTS
9+
} = require('./../nucleusManager');
510
let loadingWindow;
611

712
const LINK_DEVICE_LOADING_TYPES = {
@@ -23,7 +28,6 @@ const create = () => {
2328
show: false,
2429
frame: false,
2530
transparent: true,
26-
alwaysOnTop: true,
2731
center: true
2832
});
2933
loadingWindow.loadURL(loadingUrl);
@@ -53,6 +57,7 @@ const create = () => {
5357
};
5458

5559
const close = () => {
60+
updateUserData();
5661
if (loadingWindow) {
5762
loadingWindow.close();
5863
}
@@ -66,15 +71,36 @@ const send = (message, data) => {
6671
loadingWindow.webContents.send(message, data);
6772
};
6873

69-
const show = async () => {
74+
const show = async ({ type }) => {
7075
if (!loadingWindow) {
7176
await create();
7277
}
7378
loadingWindow.once('ready-to-show', () => {
7479
loadingWindow.show();
80+
sendTrack(type);
7581
});
7682
};
7783

84+
const sendTrack = type => {
85+
let event;
86+
switch (type) {
87+
case 'signin-new-password':
88+
event = NUCLEUS_EVENTS.LOGIN_NEW_ENTERPRISE;
89+
break;
90+
case 'signup':
91+
event = NUCLEUS_EVENTS.LOGIN_NEW_USER;
92+
break;
93+
case 'signin':
94+
case 'link-new-device':
95+
event = NUCLEUS_EVENTS.LOGIN_NEW_DEVICE;
96+
break;
97+
default:
98+
event = '';
99+
break;
100+
}
101+
addEventTrack(event);
102+
};
103+
78104
module.exports = {
79105
close,
80106
send,

electron_app/src/windows/login.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
const { BrowserWindow, shell } = require('electron');
2+
const path = require('path');
23
const { loginUrl } = require('./../window_routing');
34
const globalManager = require('./../globalManager');
4-
const path = require('path');
5+
const { addEventTrack, NUCLEUS_EVENTS } = require('./../nucleusManager');
56
let loginWindow;
67

78
const loginSize = {
@@ -52,10 +53,12 @@ const create = () => {
5253
const show = async () => {
5354
if (loginWindow) {
5455
loginWindow.show();
56+
addEventTrack(NUCLEUS_EVENTS.LOGIN_OPENED);
5557
} else {
5658
await create();
5759
loginWindow.once('ready-to-show', () => {
5860
loginWindow.show();
61+
addEventTrack(NUCLEUS_EVENTS.LOGIN_OPENED);
5962
});
6063
}
6164
};

electron_app/src/windows/mailbox.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ const { appUpdater } = require('./../updater');
88
const globalManager = require('./../globalManager');
99
const { mailtoProtocolRegex } = require('./../utils/RegexUtils');
1010
const { removeProtocolFromUrl } = require('./../utils/stringUtils');
11+
const { isFromStore, isDev } = require('./windowUtils');
1112
const {
12-
isFromStore,
13-
isDev,
14-
nucleusTrack,
13+
updateUserData,
14+
addEventTrack,
1515
NUCLEUS_EVENTS
16-
} = require('./windowUtils');
16+
} = require('./../nucleusManager');
1717
const { createTrayIcon, destroyTrayIcon } = require('./tray');
1818
const { isWindows } = require('./../utils/osUtils');
1919

@@ -101,17 +101,25 @@ const show = async ({ firstOpenApp = false }) => {
101101
if (mailboxWindow) {
102102
mailboxWindow.show();
103103
createTrayIcon();
104-
if (firstOpenApp) nucleusTrack(NUCLEUS_EVENTS.MAILBOX_TRACK);
104+
if (firstOpenApp) {
105+
updateUserData();
106+
addEventTrack(NUCLEUS_EVENTS.MAILBOX_OPENED);
107+
}
105108
} else if (!existVisibleWindow.length || !mailboxWindow) {
106109
await create();
107110
mailboxWindow.on('ready-to-show', () => {
108111
mailboxWindow.show();
109112
createTrayIcon();
110-
if (firstOpenApp) nucleusTrack(NUCLEUS_EVENTS.MAILBOX_TRACK);
113+
if (firstOpenApp) {
114+
updateUserData();
115+
addEventTrack(NUCLEUS_EVENTS.MAILBOX_OPENED);
116+
}
111117
});
112118
mailboxWindow.on('focus', () => {
113119
if (!globalManager.windowsEvents.checkDisabled()) {
114-
ipc.callRenderer(mailboxWindow, 'get-events');
120+
if (mailboxWindow) {
121+
ipc.callRenderer(mailboxWindow, 'get-events');
122+
}
115123
}
116124
});
117125
}

0 commit comments

Comments
 (0)