mirror of
https://github.com/zulip/zulip-desktop.git
synced 2025-11-04 14:03:27 +00:00
Compare commits
2 Commits
v2.3.8
...
org-tab-dr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c27db8744e | ||
|
|
d6239a3150 |
23
README.md
23
README.md
@@ -2,26 +2,31 @@
|
|||||||
[](https://travis-ci.org/zulip/zulip-electron)
|
[](https://travis-ci.org/zulip/zulip-electron)
|
||||||
[](https://ci.appveyor.com/project/akashnimare/zulip-electron/branch/master)
|
[](https://ci.appveyor.com/project/akashnimare/zulip-electron/branch/master)
|
||||||
[](https://github.com/sindresorhus/xo)
|
[](https://github.com/sindresorhus/xo)
|
||||||
[](https://chat.zulip.org)
|
|
||||||
|
|
||||||
Desktop client for Zulip. Available for Mac, Linux, and Windows.
|
Desktop client for Zulip. Available for Mac, Linux and Windows.
|
||||||
|
|
||||||
<img src="http://i.imgur.com/ChzTq4F.png"/>
|
<img src="http://i.imgur.com/ChzTq4F.png"/>
|
||||||
|
|
||||||
# Download
|
# Download
|
||||||
Please see the [installation guide](https://zulipchat.com/help/desktop-app-install-guide).
|
Please see [installation guide](https://zulipchat.com/help/desktop-app-install-guide).
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
* Sign in to multiple teams
|
* Sign in to multiple teams
|
||||||
* Desktop notifications with inline reply
|
* Desktop Notifications with inline reply support
|
||||||
* Tray/dock integration
|
* Multilanguage SpellChecker
|
||||||
* Multi-language spell checker
|
* OSX/Win/Linux installers
|
||||||
* Automatic updates
|
* Automatic Updates (macOS/Windows/Linux)
|
||||||
|
* Keyboard shortcuts
|
||||||
|
|
||||||
|
# Development
|
||||||
|
Please see our [development guide](./development.md) to get started and run app locally.
|
||||||
|
|
||||||
# Contribute
|
# Contribute
|
||||||
|
|
||||||
First, join us on the [Zulip community server](https://zulip.readthedocs.io/en/latest/contributing/chat-zulip-org.html)!
|
If you want to contribute please make sure to read [our documentation about contributing](./CONTRIBUTING.md) first.
|
||||||
Also see our [contribution guidelines](./CONTRIBUTING.md) and our [development guide](./development.md).
|
|
||||||
|
* [Issue Tracker](https://github.com/zulip/zulip-electron/issues)
|
||||||
|
* [Source Code](https://github.com/zulip/zulip-electron/)
|
||||||
|
|
||||||
# License
|
# License
|
||||||
Released under the [Apache-2.0](./LICENSE) license.
|
Released under the [Apache-2.0](./LICENSE) license.
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
const electron = require('electron');
|
const electron = require('electron');
|
||||||
const windowStateKeeper = require('electron-window-state');
|
const windowStateKeeper = require('electron-window-state');
|
||||||
const isDev = require('electron-is-dev');
|
const isDev = require('electron-is-dev');
|
||||||
@@ -158,13 +156,6 @@ app.on('ready', () => {
|
|||||||
});
|
});
|
||||||
mainWindow = createMainWindow();
|
mainWindow = createMainWindow();
|
||||||
|
|
||||||
// Auto-hide menu bar on Windows + Linux
|
|
||||||
if (process.platform !== 'darwin') {
|
|
||||||
const shouldHideMenu = ConfigUtil.getConfigItem('autoHideMenubar') || false;
|
|
||||||
mainWindow.setAutoHideMenuBar(shouldHideMenu);
|
|
||||||
mainWindow.setMenuBarVisibility(!shouldHideMenu);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize sentry for main process
|
// Initialize sentry for main process
|
||||||
sentryInit();
|
sentryInit();
|
||||||
|
|
||||||
@@ -205,32 +196,6 @@ app.on('ready', () => {
|
|||||||
app.quit();
|
app.quit();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Show pdf in a new BrowserWindow
|
|
||||||
ipcMain.on('pdf-view', (event, url) => {
|
|
||||||
// Paddings for pdfWindow so that it fits into the main browserWindow
|
|
||||||
const paddingWidth = 55;
|
|
||||||
const paddingHeight = 22;
|
|
||||||
|
|
||||||
// Get the config of main browserWindow
|
|
||||||
const mainWindowState = global.mainWindowState;
|
|
||||||
|
|
||||||
// Window to view the pdf file
|
|
||||||
const pdfWindow = new electron.BrowserWindow({
|
|
||||||
x: mainWindowState.x + paddingWidth,
|
|
||||||
y: mainWindowState.y + paddingHeight,
|
|
||||||
width: mainWindowState.width - paddingWidth,
|
|
||||||
height: mainWindowState.height - paddingHeight,
|
|
||||||
webPreferences: {
|
|
||||||
plugins: true,
|
|
||||||
partition: 'persist:webviewsession'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
pdfWindow.loadURL(url);
|
|
||||||
|
|
||||||
// We don't want to have the menu bar in pdf window
|
|
||||||
pdfWindow.setMenu(null);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Reload full app not just webview, useful in debugging
|
// Reload full app not just webview, useful in debugging
|
||||||
ipcMain.on('reload-full-app', () => {
|
ipcMain.on('reload-full-app', () => {
|
||||||
mainWindow.reload();
|
mainWindow.reload();
|
||||||
@@ -244,10 +209,10 @@ app.on('ready', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.on('toggle-app', () => {
|
ipcMain.on('toggle-app', () => {
|
||||||
if (!mainWindow.isVisible() || mainWindow.isMinimized()) {
|
if (mainWindow.isVisible()) {
|
||||||
mainWindow.show();
|
|
||||||
} else {
|
|
||||||
mainWindow.hide();
|
mainWindow.hide();
|
||||||
|
} else {
|
||||||
|
mainWindow.show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -255,11 +220,6 @@ app.on('ready', () => {
|
|||||||
BadgeSettings.updateBadge(badgeCount, mainWindow);
|
BadgeSettings.updateBadge(badgeCount, mainWindow);
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.on('toggle-menubar', (event, showMenubar) => {
|
|
||||||
mainWindow.setAutoHideMenuBar(showMenubar);
|
|
||||||
mainWindow.setMenuBarVisibility(!showMenubar);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on('update-badge', (event, messageCount) => {
|
ipcMain.on('update-badge', (event, messageCount) => {
|
||||||
badgeCount = messageCount;
|
badgeCount = messageCount;
|
||||||
BadgeSettings.updateBadge(badgeCount, mainWindow);
|
BadgeSettings.updateBadge(badgeCount, mainWindow);
|
||||||
@@ -286,29 +246,10 @@ app.on('ready', () => {
|
|||||||
page.downloadURL(url);
|
page.downloadURL(url);
|
||||||
page.session.once('will-download', (event, item) => {
|
page.session.once('will-download', (event, item) => {
|
||||||
const filePath = path.join(downloadPath, item.getFilename());
|
const filePath = path.join(downloadPath, item.getFilename());
|
||||||
|
item.setSavePath(filePath);
|
||||||
const getTimeStamp = () => {
|
|
||||||
const date = new Date();
|
|
||||||
return date.getTime();
|
|
||||||
};
|
|
||||||
|
|
||||||
const formatFile = filePath => {
|
|
||||||
const fileExtension = path.extname(filePath);
|
|
||||||
const baseName = path.basename(filePath, fileExtension);
|
|
||||||
return `${baseName}-${getTimeStamp()}${fileExtension}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Update the name and path of the file if it already exists
|
|
||||||
|
|
||||||
const updatedFilePath = path.join(downloadPath, formatFile(filePath));
|
|
||||||
|
|
||||||
const setFilePath = fs.existsSync(filePath) ? updatedFilePath : filePath;
|
|
||||||
|
|
||||||
item.setSavePath(setFilePath);
|
|
||||||
|
|
||||||
item.on('updated', (event, state) => {
|
item.on('updated', (event, state) => {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case 'interrupted': {
|
case 'interrupted' : {
|
||||||
// Can interrupted to due to network error, cancel download then
|
// Can interrupted to due to network error, cancel download then
|
||||||
console.log('Download interrupted, cancelling and fallback to dialog download.');
|
console.log('Download interrupted, cancelling and fallback to dialog download.');
|
||||||
item.cancel();
|
item.cancel();
|
||||||
@@ -318,7 +259,7 @@ app.on('ready', () => {
|
|||||||
if (item.isPaused()) {
|
if (item.isPaused()) {
|
||||||
item.cancel();
|
item.cancel();
|
||||||
}
|
}
|
||||||
// This event can also be used to show progress in percentage in future.
|
// This event can also be used to show progres in percentage in future.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
@@ -327,9 +268,8 @@ app.on('ready', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
item.once('done', (event, state) => {
|
item.once('done', (event, state) => {
|
||||||
const getFileName = fs.existsSync(filePath) ? formatFile(filePath) : item.getFilename();
|
|
||||||
if (state === 'completed') {
|
if (state === 'completed') {
|
||||||
page.send('downloadFileCompleted', item.getSavePath(), getFileName);
|
page.send('downloadFileCompleted', item.getSavePath(), item.getFilename());
|
||||||
} else {
|
} else {
|
||||||
console.log('Download failed state: ', state);
|
console.log('Download failed state: ', state);
|
||||||
page.send('downloadFileFailed');
|
page.send('downloadFileFailed');
|
||||||
@@ -340,10 +280,6 @@ app.on('ready', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.on('realm-name-changed', (event, serverURL, realmName) => {
|
|
||||||
page.send('update-realm-name', serverURL, realmName);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on('realm-icon-changed', (event, serverURL, iconURL) => {
|
ipcMain.on('realm-icon-changed', (event, serverURL, iconURL) => {
|
||||||
page.send('update-realm-icon', serverURL, iconURL);
|
page.send('update-realm-icon', serverURL, iconURL);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ class AppMenu {
|
|||||||
const { tabs, activeTabIndex } = props;
|
const { tabs, activeTabIndex } = props;
|
||||||
|
|
||||||
return [{
|
return [{
|
||||||
label: '&File',
|
label: 'File',
|
||||||
submenu: [{
|
submenu: [{
|
||||||
label: 'About Zulip',
|
label: 'About Zulip',
|
||||||
click(item, focusedWindow) {
|
click(item, focusedWindow) {
|
||||||
@@ -383,7 +383,7 @@ class AppMenu {
|
|||||||
accelerator: 'Ctrl+Q'
|
accelerator: 'Ctrl+Q'
|
||||||
}]
|
}]
|
||||||
}, {
|
}, {
|
||||||
label: '&Edit',
|
label: 'Edit',
|
||||||
submenu: [{
|
submenu: [{
|
||||||
role: 'undo'
|
role: 'undo'
|
||||||
}, {
|
}, {
|
||||||
@@ -406,16 +406,15 @@ class AppMenu {
|
|||||||
role: 'selectall'
|
role: 'selectall'
|
||||||
}]
|
}]
|
||||||
}, {
|
}, {
|
||||||
label: '&View',
|
label: 'View',
|
||||||
submenu: this.getViewSubmenu()
|
submenu: this.getViewSubmenu()
|
||||||
}, {
|
}, {
|
||||||
label: '&History',
|
label: 'History',
|
||||||
submenu: this.getHistorySubmenu()
|
submenu: this.getHistorySubmenu()
|
||||||
}, {
|
}, {
|
||||||
label: '&Window',
|
label: 'Window',
|
||||||
submenu: this.getWindowSubmenu(tabs, activeTabIndex)
|
submenu: this.getWindowSubmenu(tabs, activeTabIndex)
|
||||||
}, {
|
}, {
|
||||||
label: '&Help',
|
|
||||||
role: 'help',
|
role: 'help',
|
||||||
submenu: this.getHelpSubmenu()
|
submenu: this.getHelpSubmenu()
|
||||||
}];
|
}];
|
||||||
|
|||||||
157
app/package-lock.json
generated
157
app/package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "zulip",
|
"name": "zulip",
|
||||||
"version": "2.3.8",
|
"version": "2.3.6",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -37,74 +37,73 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/browser": {
|
"@sentry/browser": {
|
||||||
"version": "4.0.0-rc.1",
|
"version": "4.0.0-beta.12",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-4.0.0-rc.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-4.0.0-beta.12.tgz",
|
||||||
"integrity": "sha512-25OFHqY/qKA4W5xetljv0QL+HJM0OzbFOLjrnZ//+ugNQ0QKIM0oCq8gP18p3rwhQ/JbnTA6jSmyI7uHpLQ2Tg==",
|
"integrity": "sha512-At8qp2aM4q4KnuIQuC6wbbQ6gLykmzwZdHwWRN99GS5TNC7kXJNgO9WgiMLadA4ph12JtC1petrUIgY8t+aoSA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/core": "4.0.0-rc.1",
|
"@sentry/core": "4.0.0-beta.12",
|
||||||
"@sentry/hub": "4.0.0-rc.1",
|
"@sentry/hub": "4.0.0-beta.12",
|
||||||
"@sentry/minimal": "4.0.0-rc.1",
|
"@sentry/minimal": "4.0.0-beta.12",
|
||||||
"@sentry/types": "4.0.0-rc.1",
|
"@sentry/types": "4.0.0-beta.12",
|
||||||
"@sentry/utils": "4.0.0-rc.1",
|
"@sentry/utils": "4.0.0-beta.12"
|
||||||
"md5": "2.2.1"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/core": {
|
"@sentry/core": {
|
||||||
"version": "4.0.0-rc.1",
|
"version": "4.0.0-beta.12",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-4.0.0-rc.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-4.0.0-beta.12.tgz",
|
||||||
"integrity": "sha512-ffaVGh41YwAKK8d2h6vYmVspDmAPfoo45rZzF9ygH5dxHu51eaFhSuQGNtYwD9at2l9kP8jd+4bsdPqPC6QTzQ==",
|
"integrity": "sha512-DGZqBOHejHPYP2I0MdF7APEaews7gLrfxHDh9rbwDLJJiuwPE/ridH97amxy/j2g4X4EZEc3sO3Ptv4nMaHK+Q==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/hub": "4.0.0-rc.1",
|
"@sentry/hub": "4.0.0-beta.12",
|
||||||
"@sentry/minimal": "4.0.0-rc.1",
|
"@sentry/minimal": "4.0.0-beta.12",
|
||||||
"@sentry/types": "4.0.0-rc.1",
|
"@sentry/types": "4.0.0-beta.12",
|
||||||
"@sentry/utils": "4.0.0-rc.1"
|
"@sentry/utils": "4.0.0-beta.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/electron": {
|
"@sentry/electron": {
|
||||||
"version": "0.9.0",
|
"version": "0.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-0.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-0.8.1.tgz",
|
||||||
"integrity": "sha512-VeLXLMLp5JUj/TyF0t1U73qJt2nPbwa+XO8Sb9eNz/R+IoALyGugG2BtYMHGwvHitOvodNlzBNH/fFsrEkdLEg==",
|
"integrity": "sha512-y3CJ7547Rhpg+6bnGP0mXLj9pgpjMLaRji704TdzTV0afr8KamBXySNhNHosHLaKm1OLg6p8U4pdVB7xQZ+X3g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/browser": "4.0.0-rc.1",
|
"@sentry/browser": "4.0.0-beta.12",
|
||||||
"@sentry/core": "4.0.0-rc.1",
|
"@sentry/core": "4.0.0-beta.12",
|
||||||
"@sentry/hub": "4.0.0-rc.1",
|
"@sentry/hub": "4.0.0-beta.12",
|
||||||
"@sentry/minimal": "4.0.0-rc.1",
|
"@sentry/minimal": "4.0.0-beta.12",
|
||||||
"@sentry/node": "4.0.0-rc.1",
|
"@sentry/node": "4.0.0-beta.12",
|
||||||
"@sentry/types": "4.0.0-rc.1",
|
"@sentry/types": "4.0.0-beta.12",
|
||||||
"@sentry/utils": "4.0.0-rc.1",
|
"@sentry/utils": "4.0.0-beta.12",
|
||||||
"electron-fetch": "1.1.0",
|
"electron-fetch": "^1.1.0",
|
||||||
"form-data": "2.3.2",
|
"form-data": "^2.3.2",
|
||||||
"util.promisify": "1.0.0"
|
"util.promisify": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/hub": {
|
"@sentry/hub": {
|
||||||
"version": "4.0.0-rc.1",
|
"version": "4.0.0-beta.12",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-4.0.0-rc.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-4.0.0-beta.12.tgz",
|
||||||
"integrity": "sha512-MxFiOTxkOBvEwviXAjEnJABicQJ14+FOxkcXCfOfDYdi3AhgDCW5qcRgmZLCUbqOQLKZ4LnOYnvbUld871+NGw==",
|
"integrity": "sha512-fmLaPaD6F/ViWDTz3hRVnNvqgnAmX0foDsUGVVp0Dt2lT9apM5NECKV6761XFVMrbGGulCg9fguv2KV5IbQcIw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/types": "4.0.0-rc.1",
|
"@sentry/types": "4.0.0-beta.12",
|
||||||
"@sentry/utils": "4.0.0-rc.1"
|
"@sentry/utils": "4.0.0-beta.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/minimal": {
|
"@sentry/minimal": {
|
||||||
"version": "4.0.0-rc.1",
|
"version": "4.0.0-beta.12",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-4.0.0-rc.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-4.0.0-beta.12.tgz",
|
||||||
"integrity": "sha512-GxJdeRCgrrA/bWv1vBvQFUkIcY53xDRTxtHpoP5Mvid7AAW8sJaSZmllyFLn8m1izyIHrmVrHCIG5efo7d3mlA==",
|
"integrity": "sha512-1V3Lrm7wIOOqG+l1uyVZ7iQysPGXszwfsd6DTVDPT19PSey7+KbvPNcQfh+GqMRMz8jzyg9XlwUxckg7qbSztQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/hub": "4.0.0-rc.1",
|
"@sentry/hub": "4.0.0-beta.12",
|
||||||
"@sentry/types": "4.0.0-rc.1"
|
"@sentry/types": "4.0.0-beta.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/node": {
|
"@sentry/node": {
|
||||||
"version": "4.0.0-rc.1",
|
"version": "4.0.0-beta.12",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-4.0.0-rc.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-4.0.0-beta.12.tgz",
|
||||||
"integrity": "sha512-syf8A6APBx2UDSRCmUIUOsWhNc0lGt+M6TJLh6iSvZtsuFQxEVusUH3SrbX9O3m1HQ6XSdUXUZ88hMM0/v/lGg==",
|
"integrity": "sha512-oekXtdaaElt/lSfyKtAyTLcTofciMRuptsGOTMX4qQ7hoHESB6DUw55Or/RRMaJYm/nckM2VFzWDATd20NVV4w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/core": "4.0.0-rc.1",
|
"@sentry/core": "4.0.0-beta.12",
|
||||||
"@sentry/hub": "4.0.0-rc.1",
|
"@sentry/hub": "4.0.0-beta.12",
|
||||||
"@sentry/minimal": "4.0.0-rc.1",
|
"@sentry/minimal": "4.0.0-beta.12",
|
||||||
"@sentry/types": "4.0.0-rc.1",
|
"@sentry/types": "4.0.0-beta.12",
|
||||||
"@sentry/utils": "4.0.0-rc.1",
|
"@sentry/utils": "4.0.0-beta.12",
|
||||||
"cookie": "0.3.1",
|
"cookie": "0.3.1",
|
||||||
"lsmod": "1.0.0",
|
"lsmod": "1.0.0",
|
||||||
"md5": "2.2.1",
|
"md5": "2.2.1",
|
||||||
@@ -112,16 +111,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/types": {
|
"@sentry/types": {
|
||||||
"version": "4.0.0-rc.1",
|
"version": "4.0.0-beta.12",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-4.0.0-rc.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-4.0.0-beta.12.tgz",
|
||||||
"integrity": "sha512-WCIahta73omB4pYgzAZPCJ/IxyUhn10B8YOm0fKFOWDP1HmQlhpnF9RX/fjkq0LR7vQfOkVUU9dr61AEG+jrqw=="
|
"integrity": "sha512-xRsTfRcb8OvMbLjl64bPNv3feHiXBprtRZqTlVUbDJmSNrm8wg+tKIPYsP90dxKc50CZBk59urIbgvpPg0mCLw=="
|
||||||
},
|
},
|
||||||
"@sentry/utils": {
|
"@sentry/utils": {
|
||||||
"version": "4.0.0-rc.1",
|
"version": "4.0.0-beta.12",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-4.0.0-rc.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-4.0.0-beta.12.tgz",
|
||||||
"integrity": "sha512-gRtEDh2Pz4UimeJzA1Wiv9bb2OrHouyZoCaFR6pe4I1VudchOTI6PXtAfyt7Yx8CWff7xfJUOiU3BZnT2QQ7Nw==",
|
"integrity": "sha512-lpTE2GlaztATlFfIWMN8RSQFP0z6PkPPoDz0KKRmK4ZxjPxVX2sAGbKJGCpf9fdUG23NVg3FNiqfpUbjhvd9YA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/types": "4.0.0-rc.1"
|
"@sentry/types": "4.0.0-beta.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sindresorhus/is": {
|
"@sindresorhus/is": {
|
||||||
@@ -260,14 +259,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"buffer-from": {
|
"buffer-from": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
|
||||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
|
"integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ=="
|
||||||
},
|
},
|
||||||
"builder-util-runtime": {
|
"builder-util-runtime": {
|
||||||
"version": "4.4.1",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-4.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-4.4.0.tgz",
|
||||||
"integrity": "sha512-8L2pbL6D3VdI1f8OMknlZJpw0c7KK15BRz3cY77AOUElc4XlCv2UhVV01jJM7+6Lx7henaQh80ALULp64eFYAQ==",
|
"integrity": "sha512-tkTF1o7XAX79ZkMo8822ZdQMpEBGSgfJ9kEYgyTAja90BPu7HO8C02pb8iSlFXfmK0Q0UA6D8MmnSNNPi0JLeg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bluebird-lst": "^1.0.5",
|
"bluebird-lst": "^1.0.5",
|
||||||
"debug": "^3.1.0",
|
"debug": "^3.1.0",
|
||||||
@@ -473,9 +472,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron-fetch": {
|
"electron-fetch": {
|
||||||
"version": "1.1.0",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.2.1.tgz",
|
||||||
"integrity": "sha512-eBtqbB522c/RJwC5v1yF/Y0SMVLiwel98BWGx050GucWbKlejHtPkfpq/vfMxCjg0SGpHGUISYUaMfu65QH+xg==",
|
"integrity": "sha512-pQy0el/vxu30sL9JjXss8yZL+ztRnmioffPQsLL4UYnfSUFTuGBlgCPCxxKYJV7y52WfaIEZQ9tlbac1YHrH0w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"encoding": "^0.1.12"
|
"encoding": "^0.1.12"
|
||||||
}
|
}
|
||||||
@@ -523,25 +522,25 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron-updater": {
|
"electron-updater": {
|
||||||
"version": "3.1.2",
|
"version": "2.23.3",
|
||||||
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-2.23.3.tgz",
|
||||||
"integrity": "sha512-y3n37O01pdynMJHhJbOd2UVhVrmDW6zLvR2SOZ+gk3S6r16872+0nNbC48GXWwc26lTeus/Zja/XUpiqrvdw4A==",
|
"integrity": "sha512-ZoQZpiEbhT3xA5Oxn7a5o4Z9adRaYs901pnTKBVBxPWmc0Qw5sZXAHkRjftlRmEn3RiEVkJtBPQSfx8kIkRcUA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bluebird-lst": "^1.0.5",
|
"bluebird-lst": "^1.0.5",
|
||||||
"builder-util-runtime": "~4.4.1",
|
"builder-util-runtime": "~4.4.0",
|
||||||
"electron-is-dev": "^0.3.0",
|
"electron-is-dev": "^0.3.0",
|
||||||
"fs-extra-p": "^4.6.1",
|
"fs-extra-p": "^4.6.1",
|
||||||
"js-yaml": "^3.12.0",
|
"js-yaml": "^3.12.0",
|
||||||
"lazy-val": "^1.0.3",
|
"lazy-val": "^1.0.3",
|
||||||
"lodash.isequal": "^4.5.0",
|
"lodash.isequal": "^4.5.0",
|
||||||
"semver": "^5.5.1",
|
"semver": "^5.5.0",
|
||||||
"source-map-support": "^0.5.9"
|
"source-map-support": "^0.5.6"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "5.5.1",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
|
||||||
"integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="
|
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -814,9 +813,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"iconv-lite": {
|
"iconv-lite": {
|
||||||
"version": "0.4.24",
|
"version": "0.4.23",
|
||||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
|
||||||
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"safer-buffer": ">= 2.1.2 < 3"
|
"safer-buffer": ">= 2.1.2 < 3"
|
||||||
}
|
}
|
||||||
@@ -1489,9 +1488,9 @@
|
|||||||
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
|
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
|
||||||
},
|
},
|
||||||
"source-map-support": {
|
"source-map-support": {
|
||||||
"version": "0.5.9",
|
"version": "0.5.6",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
|
||||||
"integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
|
"integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"buffer-from": "^1.0.0",
|
"buffer-from": "^1.0.0",
|
||||||
"source-map": "^0.6.0"
|
"source-map": "^0.6.0"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "zulip",
|
"name": "zulip",
|
||||||
"productName": "Zulip",
|
"productName": "Zulip",
|
||||||
"version": "2.3.8",
|
"version": "2.3.6",
|
||||||
"description": "Zulip Desktop App",
|
"description": "Zulip Desktop App",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"copyright": "Kandra Labs, Inc.",
|
"copyright": "Kandra Labs, Inc.",
|
||||||
@@ -27,20 +27,21 @@
|
|||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@electron-elements/send-feedback": "1.0.7",
|
"@electron-elements/send-feedback": "1.0.7",
|
||||||
"@sentry/electron": "0.10.1",
|
"@sentry/electron": "0.8.1",
|
||||||
"adm-zip": "0.4.11",
|
"adm-zip": "0.4.11",
|
||||||
"auto-launch": "5.0.5",
|
"auto-launch": "5.0.5",
|
||||||
"electron-is-dev": "0.3.0",
|
"electron-is-dev": "0.3.0",
|
||||||
"electron-log": "2.2.14",
|
"electron-log": "2.2.14",
|
||||||
"electron-spellchecker": "1.1.2",
|
"electron-spellchecker": "1.1.2",
|
||||||
"electron-updater": "3.1.2",
|
"electron-updater": "2.23.3",
|
||||||
"electron-window-state": "4.1.1",
|
"electron-window-state": "4.1.1",
|
||||||
"escape-html": "1.0.3",
|
"escape-html": "1.0.3",
|
||||||
"is-online": "7.0.0",
|
"is-online": "7.0.0",
|
||||||
"node-json-db": "0.7.3",
|
"node-json-db": "0.7.3",
|
||||||
"request": "2.85.0",
|
"request": "2.85.0",
|
||||||
"semver": "5.4.1",
|
"semver": "5.4.1",
|
||||||
"wurl": "2.5.0"
|
"wurl": "2.5.0",
|
||||||
|
"sortablejs": "*"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"node-mac-notifier": "0.1.0"
|
"node-mac-notifier": "0.1.0"
|
||||||
|
|||||||
@@ -186,16 +186,6 @@ body {
|
|||||||
padding: 2px 0;
|
padding: 2px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.server-tab .alt-icon {
|
|
||||||
font-family: Verdana;
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 22px;
|
|
||||||
border: 2px solid #222c31;
|
|
||||||
margin-left: 17%;
|
|
||||||
width: 33px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab .server-tab:hover {
|
.tab .server-tab:hover {
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,16 +7,14 @@ body {
|
|||||||
font-family: menu, "Helvetica Neue", sans-serif;
|
font-family: menu, "Helvetica Neue", sans-serif;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
color: #333;
|
||||||
background: #efefef;
|
background: #efefef;
|
||||||
letter-spacing: -.08px;
|
|
||||||
line-height: 18px;
|
|
||||||
color: #8b8e8f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
kbd {
|
kbd {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
border-radius: 4px;
|
border-radius: 3px;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
font-family: Courier New, Courier, monospace;
|
font-family: Courier New, Courier, monospace;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@@ -131,6 +129,7 @@ td:nth-child(odd) {
|
|||||||
content: '';
|
content: '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* We don't want to show this in nav item since we have the + button for adding an Organization */
|
/* We don't want to show this in nav item since we have the + button for adding an Organization */
|
||||||
|
|
||||||
#nav-AddServer {
|
#nav-AddServer {
|
||||||
@@ -247,7 +246,7 @@ img.server-info-icon {
|
|||||||
.setting-input-value {
|
.setting-input-value {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
border-radius: 4px;
|
border-radius: 3px;
|
||||||
padding: 13px;
|
padding: 13px;
|
||||||
border: #ededed 2px solid;
|
border: #ededed 2px solid;
|
||||||
outline-width: 0;
|
outline-width: 0;
|
||||||
@@ -307,7 +306,7 @@ img.server-info-icon {
|
|||||||
padding: 12px 30px;
|
padding: 12px 30px;
|
||||||
margin: 10px 0 20px 0;
|
margin: 10px 0 20px 0;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
width: 80%;
|
width: 70%;
|
||||||
transition: all 0.2s;
|
transition: all 0.2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -324,37 +323,20 @@ img.server-info-icon {
|
|||||||
color: #ef5350;
|
color: #ef5350;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
border: rgba(239, 83, 80, 0.5) solid 1px;
|
border: rgba(239, 83, 80, 0.5) solid 1px;
|
||||||
border-radius: 4px;
|
|
||||||
border-color: #fff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.red:hover {
|
.red:hover {
|
||||||
background-color: rgba(230, 52, 49, 0.5);
|
color: #e63431;
|
||||||
color: #fff;
|
border: rgba(239, 83, 80, 0.7) solid 1px;
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
.green {
|
.blue {
|
||||||
color: #fff;
|
color: #ffffff;
|
||||||
background: #4EBFAC;
|
background: #4EBFAC;
|
||||||
border-radius: 4px;
|
padding: 3px;
|
||||||
display: inline-block;
|
padding-right: 10px;
|
||||||
border: none;
|
padding-left: 10px;
|
||||||
padding: 10px;
|
|
||||||
width: 110px;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 1rem;
|
|
||||||
font-weight: bold;
|
|
||||||
transition: background-color 0.2s ease;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.green:hover {
|
|
||||||
background-color: #3c9f8d;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.w-200 {
|
|
||||||
width: 200px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.grey {
|
.grey {
|
||||||
@@ -381,10 +363,28 @@ i.open-tab-button {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.reset-data-button,
|
||||||
|
.custom-css-button,
|
||||||
|
.download-folder-button {
|
||||||
|
display: inline-block;
|
||||||
|
border: none;
|
||||||
|
padding: 10px;
|
||||||
|
width: 120px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 13px;
|
||||||
|
transition: background-color 0.2s ease;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
.css-delete-action {
|
.css-delete-action {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.reset-data-button:hover {
|
||||||
|
background-color: #3c9f8d;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
.selected-css-path,
|
.selected-css-path,
|
||||||
.download-folder-path {
|
.download-folder-path {
|
||||||
background: #eeeeee;
|
background: #eeeeee;
|
||||||
@@ -450,12 +450,9 @@ input.toggle-round+label:after {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input.toggle-round+label:before {
|
input.toggle-round+label:before {
|
||||||
|
right: 2px;
|
||||||
background-color: #f1f1f1;
|
background-color: #f1f1f1;
|
||||||
border-radius: 25px;
|
border-radius: 25px;
|
||||||
top: 0;
|
|
||||||
right: 0px;
|
|
||||||
left: 0px;
|
|
||||||
bottom: 0px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input.toggle-round+label:after {
|
input.toggle-round+label:after {
|
||||||
@@ -467,16 +464,13 @@ input.toggle-round+label:after {
|
|||||||
|
|
||||||
input.toggle-round:checked+label:before {
|
input.toggle-round:checked+label:before {
|
||||||
background-color: #4EBFAC;
|
background-color: #4EBFAC;
|
||||||
top: 0;
|
|
||||||
right: 0px;
|
|
||||||
left: 0px;
|
|
||||||
bottom: 0px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input.toggle-round:checked+label:after {
|
input.toggle-round:checked+label:after {
|
||||||
margin-left: 25px;
|
margin-left: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Add new server modal */
|
/* Add new server modal */
|
||||||
|
|
||||||
.add-server-modal {
|
.add-server-modal {
|
||||||
@@ -494,6 +488,7 @@ input.toggle-round:checked+label:after {
|
|||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Modal Content */
|
/* Modal Content */
|
||||||
|
|
||||||
.modal-container {
|
.modal-container {
|
||||||
@@ -551,7 +546,7 @@ input.toggle-round:checked+label:after {
|
|||||||
border: none;
|
border: none;
|
||||||
width: 98%;
|
width: 98%;
|
||||||
height: 46px;
|
height: 46px;
|
||||||
border-radius: 4px;
|
border-radius: 3px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -564,31 +559,33 @@ input.toggle-round:checked+label:after {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.certificates-card {
|
.certificates-card {
|
||||||
width: 80%
|
width:70%
|
||||||
}
|
}
|
||||||
|
|
||||||
.certificate-input {
|
.certificate-input {
|
||||||
width: 100%;
|
width:100%;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
display: inline-flex;
|
display:inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.certificate-input div {
|
.certificate-input div {
|
||||||
align-self: center;
|
align-self:center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.certificate-input .setting-input-value {
|
.certificate-input .setting-input-value {
|
||||||
margin-left: 10px;
|
margin-left:10px;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#add-certificate-button {
|
#add-certificate-button {
|
||||||
margin: 10px;
|
width:20%;
|
||||||
|
margin-right:0px;
|
||||||
|
height: 35px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tip {
|
.tip {
|
||||||
background-color: hsl(46, 63%, 95%);
|
background-color: hsl(46,63%,95%);
|
||||||
border: 1px solid hsl(46, 63%, 84%);
|
border: 1px solid hsl(46,63%,84%);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -657,10 +654,12 @@ input.toggle-round:checked+label:after {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.server-info-right {
|
.server-info-right {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.action {
|
.action {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,19 +21,11 @@ function handleExternalLink(event) {
|
|||||||
if (isWhiteListURL) {
|
if (isWhiteListURL) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
// Show pdf attachments in a new window
|
// download txt, pdf, mp3, mp4 etc.. by using downloadURL in the
|
||||||
|
|
||||||
if (LinkUtil.isPDF(url) && isUploadsURL) {
|
|
||||||
ipcRenderer.send('pdf-view', url);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// download txt, mp3, mp4 etc.. by using downloadURL in the
|
|
||||||
// main process which allows the user to save the files to their desktop
|
// main process which allows the user to save the files to their desktop
|
||||||
// and not trigger webview reload while image in webview will
|
// and not trigger webview reload while image in webview will
|
||||||
// do nothing and will not save it
|
// do nothing and will not save it
|
||||||
|
if (!LinkUtil.isImage(url) && isUploadsURL) {
|
||||||
if (!LinkUtil.isImage(url) && !LinkUtil.isPDF(url) && isUploadsURL) {
|
|
||||||
ipcRenderer.send('downloadFile', url, downloadPath);
|
ipcRenderer.send('downloadFile', url, downloadPath);
|
||||||
ipcRenderer.once('downloadFileCompleted', (event, filePath, fileName) => {
|
ipcRenderer.once('downloadFileCompleted', (event, filePath, fileName) => {
|
||||||
const downloadNotification = new Notification('Download Complete', {
|
const downloadNotification = new Notification('Download Complete', {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const {ipcRenderer} = require('electron');
|
|||||||
class ServerTab extends Tab {
|
class ServerTab extends Tab {
|
||||||
template() {
|
template() {
|
||||||
return `<div class="tab" data-tab-id="${this.props.tabIndex}">
|
return `<div class="tab" data-tab-id="${this.props.tabIndex}">
|
||||||
<div class="server-tooltip" style="display:none">${this.props.name}</div>
|
<div class="server-tooltip" style="display:none"></div>
|
||||||
<div class="server-tab-badge"></div>
|
<div class="server-tab-badge"></div>
|
||||||
<div class="server-tab">
|
<div class="server-tab">
|
||||||
<img class="server-icons" src='${this.props.icon}'/>
|
<img class="server-icons" src='${this.props.icon}'/>
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ class WebView extends BaseComponent {
|
|||||||
disablewebsecurity
|
disablewebsecurity
|
||||||
${this.props.preload ? 'preload="js/preload.js"' : ''}
|
${this.props.preload ? 'preload="js/preload.js"' : ''}
|
||||||
partition="persist:webviewsession"
|
partition="persist:webviewsession"
|
||||||
name="${this.props.name}"
|
|
||||||
webpreferences="allowRunningInsecureContent, javascript=yes">
|
webpreferences="allowRunningInsecureContent, javascript=yes">
|
||||||
</webview>`;
|
</webview>`;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,9 +21,8 @@ electron_bridge.on('total_unread_count', (...args) => {
|
|||||||
ipcRenderer.send('unread-count', ...args);
|
ipcRenderer.send('unread-count', ...args);
|
||||||
});
|
});
|
||||||
|
|
||||||
electron_bridge.on('realm_name', realmName => {
|
electron_bridge.on('realm_name', (...args) => {
|
||||||
const serverURL = location.origin;
|
ipcRenderer.send('realm-name-changed', ...args);
|
||||||
ipcRenderer.send('realm-name-changed', serverURL, realmName);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
electron_bridge.on('realm_icon_url', iconURL => {
|
electron_bridge.on('realm_icon_url', iconURL => {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ const { ipcRenderer, remote } = require('electron');
|
|||||||
const isDev = require('electron-is-dev');
|
const isDev = require('electron-is-dev');
|
||||||
|
|
||||||
const { session, app } = remote;
|
const { session, app } = remote;
|
||||||
const escape = require('escape-html');
|
|
||||||
|
|
||||||
require(__dirname + '/js/tray.js');
|
require(__dirname + '/js/tray.js');
|
||||||
const DomainUtil = require(__dirname + '/js/utils/domain-util.js');
|
const DomainUtil = require(__dirname + '/js/utils/domain-util.js');
|
||||||
@@ -15,10 +14,10 @@ const ConfigUtil = require(__dirname + '/js/utils/config-util.js');
|
|||||||
const DNDUtil = require(__dirname + '/js/utils/dnd-util.js');
|
const DNDUtil = require(__dirname + '/js/utils/dnd-util.js');
|
||||||
const ReconnectUtil = require(__dirname + '/js/utils/reconnect-util.js');
|
const ReconnectUtil = require(__dirname + '/js/utils/reconnect-util.js');
|
||||||
const Logger = require(__dirname + '/js/utils/logger-util.js');
|
const Logger = require(__dirname + '/js/utils/logger-util.js');
|
||||||
const CommonUtil = require(__dirname + '/js/utils/common-util.js');
|
|
||||||
|
|
||||||
const { feedbackHolder } = require(__dirname + '/js/feedback.js');
|
const { feedbackHolder } = require(__dirname + '/js/feedback.js');
|
||||||
|
|
||||||
|
const Sortable = require('sortablejs');
|
||||||
|
|
||||||
const logger = new Logger({
|
const logger = new Logger({
|
||||||
file: 'errors.log',
|
file: 'errors.log',
|
||||||
timestamp: true
|
timestamp: true
|
||||||
@@ -45,6 +44,8 @@ class ServerManagerView {
|
|||||||
|
|
||||||
this.$sidebar = document.getElementById('sidebar');
|
this.$sidebar = document.getElementById('sidebar');
|
||||||
|
|
||||||
|
this.$drag = document.querySelector('.simpleList');
|
||||||
|
|
||||||
this.$fullscreenPopup = document.getElementById('fullscreen-popup');
|
this.$fullscreenPopup = document.getElementById('fullscreen-popup');
|
||||||
this.$fullscreenEscapeKey = process.platform === 'darwin' ? '^⌘F' : 'F11';
|
this.$fullscreenEscapeKey = process.platform === 'darwin' ? '^⌘F' : 'F11';
|
||||||
this.$fullscreenPopup.innerHTML = `Press ${this.$fullscreenEscapeKey} to exit full screen`;
|
this.$fullscreenPopup.innerHTML = `Press ${this.$fullscreenEscapeKey} to exit full screen`;
|
||||||
@@ -135,10 +136,6 @@ class ServerManagerView {
|
|||||||
settingOptions.dockBouncing = true;
|
settingOptions.dockBouncing = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.platform !== 'darwin') {
|
|
||||||
settingOptions.autoHideMenubar = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const i in settingOptions) {
|
for (const i in settingOptions) {
|
||||||
if (ConfigUtil.getConfigItem(i) === null) {
|
if (ConfigUtil.getConfigItem(i) === null) {
|
||||||
ConfigUtil.setConfigItem(i, settingOptions[i]);
|
ConfigUtil.setConfigItem(i, settingOptions[i]);
|
||||||
@@ -149,6 +146,27 @@ class ServerManagerView {
|
|||||||
initSidebar() {
|
initSidebar() {
|
||||||
const showSidebar = ConfigUtil.getConfigItem('showSidebar', true);
|
const showSidebar = ConfigUtil.getConfigItem('showSidebar', true);
|
||||||
this.toggleSidebar(showSidebar);
|
this.toggleSidebar(showSidebar);
|
||||||
|
|
||||||
|
// Allow dragging of server tabs and update the data-tab-id
|
||||||
|
const _this = this;
|
||||||
|
this.$sortable = Sortable.create(this.$drag, {
|
||||||
|
dataIdAttr: 'data-sortable-id',
|
||||||
|
onEnd() {
|
||||||
|
const newTabs = [];
|
||||||
|
const tabElements = document.querySelectorAll('#tabs-container .tab');
|
||||||
|
tabElements.forEach((el, index) => {
|
||||||
|
const oldIndex = +el.getAttribute('data-tab-id');
|
||||||
|
newTabs.push(_this.tabs[oldIndex]);
|
||||||
|
el.setAttribute('data-tab-id', index.toString());
|
||||||
|
});
|
||||||
|
|
||||||
|
_this.tabs = newTabs;
|
||||||
|
ipcRenderer.send('update-menu', {
|
||||||
|
tabs: _this.tabs,
|
||||||
|
activeTabIndex: _this.activeTabIndex
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
initTabs() {
|
initTabs() {
|
||||||
@@ -173,19 +191,18 @@ class ServerManagerView {
|
|||||||
this.tabs.push(new ServerTab({
|
this.tabs.push(new ServerTab({
|
||||||
role: 'server',
|
role: 'server',
|
||||||
icon: server.icon,
|
icon: server.icon,
|
||||||
name: server.alias,
|
|
||||||
$root: this.$tabsContainer,
|
$root: this.$tabsContainer,
|
||||||
onClick: this.activateLastTab.bind(this, index),
|
onClick: this.activateLastTab.bind(this, index),
|
||||||
index,
|
index,
|
||||||
tabIndex,
|
tabIndex,
|
||||||
onHover: this.onHover.bind(this, index),
|
onHover: this.onHover.bind(this, index, server.alias),
|
||||||
onHoverOut: this.onHoverOut.bind(this, index),
|
onHoverOut: this.onHoverOut.bind(this, index),
|
||||||
webview: new WebView({
|
webview: new WebView({
|
||||||
$root: this.$webviewsContainer,
|
$root: this.$webviewsContainer,
|
||||||
index,
|
index,
|
||||||
tabIndex,
|
tabIndex,
|
||||||
url: server.url,
|
url: server.url,
|
||||||
name: CommonUtil.decodeString(server.alias),
|
name: server.alias,
|
||||||
isActive: () => {
|
isActive: () => {
|
||||||
return index === this.activeTabIndex;
|
return index === this.activeTabIndex;
|
||||||
},
|
},
|
||||||
@@ -218,12 +235,8 @@ class ServerManagerView {
|
|||||||
|
|
||||||
const $serverImgs = document.querySelectorAll('.server-icons');
|
const $serverImgs = document.querySelectorAll('.server-icons');
|
||||||
$serverImgs.forEach($serverImg => {
|
$serverImgs.forEach($serverImg => {
|
||||||
if ($serverImg.src.includes('img/icon.png')) {
|
|
||||||
this.displayInitalCharLogo($serverImg);
|
|
||||||
}
|
|
||||||
|
|
||||||
$serverImg.addEventListener('error', () => {
|
$serverImg.addEventListener('error', () => {
|
||||||
this.displayInitalCharLogo($serverImg);
|
$serverImg.src = 'img/icon.png';
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -245,27 +258,6 @@ class ServerManagerView {
|
|||||||
return currentIndex;
|
return currentIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
displayInitalCharLogo($img) {
|
|
||||||
const $altIcon = document.createElement('div');
|
|
||||||
const $parent = $img.parentElement;
|
|
||||||
const $container = $parent.parentElement;
|
|
||||||
const webviewId = $container.dataset.tabId;
|
|
||||||
const $webview = document.querySelector(`webview[data-tab-id="${webviewId}"]`);
|
|
||||||
const realmName = $webview.getAttribute('name');
|
|
||||||
|
|
||||||
if (realmName === null) {
|
|
||||||
$img.src = '/img/icon.png';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$altIcon.textContent = realmName.charAt(0) || 'Z';
|
|
||||||
$altIcon.classList.add('server-icon');
|
|
||||||
$altIcon.classList.add('alt-icon');
|
|
||||||
|
|
||||||
$parent.removeChild($img);
|
|
||||||
$parent.appendChild($altIcon);
|
|
||||||
}
|
|
||||||
|
|
||||||
sidebarHoverEvent(SidebarButton, SidebarTooltip, addServer = false) {
|
sidebarHoverEvent(SidebarButton, SidebarTooltip, addServer = false) {
|
||||||
SidebarButton.addEventListener('mouseover', () => {
|
SidebarButton.addEventListener('mouseover', () => {
|
||||||
SidebarTooltip.removeAttribute('style');
|
SidebarTooltip.removeAttribute('style');
|
||||||
@@ -283,9 +275,8 @@ class ServerManagerView {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onHover(index) {
|
onHover(index, serverName) {
|
||||||
// this.$serverIconTooltip[index].innerHTML already has realm name, so we are just
|
this.$serverIconTooltip[index].innerHTML = serverName;
|
||||||
// removing the style.
|
|
||||||
this.$serverIconTooltip[index].removeAttribute('style');
|
this.$serverIconTooltip[index].removeAttribute('style');
|
||||||
// To handle position of servers' tooltip due to scrolling of list of organizations
|
// To handle position of servers' tooltip due to scrolling of list of organizations
|
||||||
// This could not be handled using CSS, hence the top of the tooltip is made same
|
// This could not be handled using CSS, hence the top of the tooltip is made same
|
||||||
@@ -399,6 +390,52 @@ class ServerManagerView {
|
|||||||
tabs: this.tabs,
|
tabs: this.tabs,
|
||||||
activeTabIndex: this.activeTabIndex
|
activeTabIndex: this.activeTabIndex
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcRenderer.on('toggle-sidebar', (event, state) => {
|
||||||
|
const selector = 'webview:not([class*=disabled])';
|
||||||
|
const webview = document.querySelector(selector);
|
||||||
|
const webContents = webview.getWebContents();
|
||||||
|
webContents.send('toggle-sidebar', state);
|
||||||
|
});
|
||||||
|
|
||||||
|
ipcRenderer.on('toggle-silent', (event, state) => {
|
||||||
|
const webviews = document.querySelectorAll('webview');
|
||||||
|
webviews.forEach(webview => {
|
||||||
|
try {
|
||||||
|
webview.setAudioMuted(state);
|
||||||
|
} catch (err) {
|
||||||
|
// webview is not ready yet
|
||||||
|
webview.addEventListener('dom-ready', () => {
|
||||||
|
webview.isAudioMuted();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
ipcRenderer.on('toggle-dnd', (event, state, newSettings) => {
|
||||||
|
this.toggleDNDButton(state);
|
||||||
|
ipcRenderer.send('forward-message', 'toggle-silent', newSettings.silent);
|
||||||
|
const selector = 'webview:not([class*=disabled])';
|
||||||
|
const webview = document.querySelector(selector);
|
||||||
|
const webContents = webview.getWebContents();
|
||||||
|
webContents.send('toggle-dnd', state, newSettings);
|
||||||
|
});
|
||||||
|
|
||||||
|
ipcRenderer.on('update-realm-icon', (event, serverURL, iconURL) => {
|
||||||
|
DomainUtil.getDomains().forEach((domain, index) => {
|
||||||
|
if (domain.url.includes(serverURL)) {
|
||||||
|
DomainUtil.saveServerIcon(iconURL).then(localIconUrl => {
|
||||||
|
const serverImgsSelector = `.tab .server-icons`;
|
||||||
|
const serverImgs = document.querySelectorAll(serverImgsSelector);
|
||||||
|
serverImgs[index].src = localIconUrl;
|
||||||
|
|
||||||
|
domain.icon = localIconUrl;
|
||||||
|
DomainUtil.db.push(`/domains[${index}]`, domain, true);
|
||||||
|
DomainUtil.reloadDB();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
destroyTab(name, index) {
|
destroyTab(name, index) {
|
||||||
@@ -529,74 +566,7 @@ class ServerManagerView {
|
|||||||
});
|
});
|
||||||
|
|
||||||
ipcRenderer.on('toggle-sidebar', (event, show) => {
|
ipcRenderer.on('toggle-sidebar', (event, show) => {
|
||||||
// Toggle the left sidebar
|
|
||||||
this.toggleSidebar(show);
|
this.toggleSidebar(show);
|
||||||
|
|
||||||
// Toggle sidebar switch in the general settings
|
|
||||||
const selector = 'webview:not([class*=disabled])';
|
|
||||||
const webview = document.querySelector(selector);
|
|
||||||
const webContents = webview.getWebContents();
|
|
||||||
webContents.send('toggle-sidebar-setting', show);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcRenderer.on('toggle-silent', (event, state) => {
|
|
||||||
const webviews = document.querySelectorAll('webview');
|
|
||||||
webviews.forEach(webview => {
|
|
||||||
try {
|
|
||||||
webview.setAudioMuted(state);
|
|
||||||
} catch (err) {
|
|
||||||
// webview is not ready yet
|
|
||||||
webview.addEventListener('dom-ready', () => {
|
|
||||||
webview.setAudioMuted(state);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcRenderer.on('toggle-dnd', (event, state, newSettings) => {
|
|
||||||
this.toggleDNDButton(state);
|
|
||||||
ipcRenderer.send('forward-message', 'toggle-silent', newSettings.silent);
|
|
||||||
const selector = 'webview:not([class*=disabled])';
|
|
||||||
const webview = document.querySelector(selector);
|
|
||||||
const webContents = webview.getWebContents();
|
|
||||||
webContents.send('toggle-dnd', state, newSettings);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcRenderer.on('update-realm-name', (event, serverURL, realmName) => {
|
|
||||||
DomainUtil.getDomains().forEach((domain, index) => {
|
|
||||||
if (domain.url.includes(serverURL)) {
|
|
||||||
const serverTooltipSelector = `.tab .server-tooltip`;
|
|
||||||
const serverTooltips = document.querySelectorAll(serverTooltipSelector);
|
|
||||||
serverTooltips[index].innerHTML = escape(realmName);
|
|
||||||
this.tabs[index].props.name = escape(realmName);
|
|
||||||
this.tabs[index].webview.props.name = realmName;
|
|
||||||
|
|
||||||
domain.alias = escape(realmName);
|
|
||||||
DomainUtil.db.push(`/domains[${index}]`, domain, true);
|
|
||||||
DomainUtil.reloadDB();
|
|
||||||
// Update the realm name also on the Window menu
|
|
||||||
ipcRenderer.send('update-menu', {
|
|
||||||
tabs: this.tabs,
|
|
||||||
activeTabIndex: this.activeTabIndex
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcRenderer.on('update-realm-icon', (event, serverURL, iconURL) => {
|
|
||||||
DomainUtil.getDomains().forEach((domain, index) => {
|
|
||||||
if (domain.url.includes(serverURL)) {
|
|
||||||
DomainUtil.saveServerIcon(iconURL).then(localIconUrl => {
|
|
||||||
const serverImgsSelector = `.tab .server-icons`;
|
|
||||||
const serverImgs = document.querySelectorAll(serverImgsSelector);
|
|
||||||
serverImgs[index].src = localIconUrl;
|
|
||||||
|
|
||||||
domain.icon = localIconUrl;
|
|
||||||
DomainUtil.db.push(`/domains[${index}]`, domain, true);
|
|
||||||
DomainUtil.reloadDB();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcRenderer.on('enter-fullscreen', () => {
|
ipcRenderer.on('enter-fullscreen', () => {
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ class AddCertificate extends BaseComponent {
|
|||||||
|
|
||||||
template() {
|
template() {
|
||||||
return `
|
return `
|
||||||
<div class="settings-card certificates-card">
|
<div class="settings-card server-center certificates-card">
|
||||||
<div class="certificate-input">
|
<div class="certificate-input">
|
||||||
<div>Organization URL :</div>
|
<div>Organization URL :</div>
|
||||||
<input class="setting-input-value" autofocus placeholder="your-organization.zulipchat.com or zulip.your-organization.com"/>
|
<input class="setting-input-value" autofocus placeholder="your-organization.zulipchat.com or zulip.your-organization.com"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="certificate-input">
|
<div class="certificate-input">
|
||||||
<div>Custom CA's certificate file :</div>
|
<div>Custom CA's certificate file :</div>
|
||||||
<button class="green" id="add-certificate-button">Add</button>
|
<button id="add-certificate-button">Add</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|||||||
@@ -23,12 +23,8 @@ class GeneralSection extends BaseSection {
|
|||||||
<div class="setting-description">Show app icon in system tray</div>
|
<div class="setting-description">Show app icon in system tray</div>
|
||||||
<div class="setting-control"></div>
|
<div class="setting-control"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-row" id="menubar-option" style= "display:${process.platform === 'darwin' ? 'none' : ''}">
|
|
||||||
<div class="setting-description">Auto hide Menubar (Press Alt key to display)</div>
|
|
||||||
<div class="setting-control"></div>
|
|
||||||
</div>
|
|
||||||
<div class="setting-row" id="sidebar-option">
|
<div class="setting-row" id="sidebar-option">
|
||||||
<div class="setting-description">Show sidebar (<span class="code">Cmd Or Ctrl+Shift+S</span>)</div>
|
<div class="setting-description">Show sidebar (<span class="code">Cmd Or Ctrl+S</span>)</div>
|
||||||
<div class="setting-control"></div>
|
<div class="setting-control"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-row" id="badge-option">
|
<div class="setting-row" id="badge-option">
|
||||||
@@ -87,7 +83,7 @@ class GeneralSection extends BaseSection {
|
|||||||
<div class="setting-description">
|
<div class="setting-description">
|
||||||
This will inject the selected css stylesheet in all the added accounts
|
This will inject the selected css stylesheet in all the added accounts
|
||||||
</div>
|
</div>
|
||||||
<button class="custom-css-button green">Add</button>
|
<button class="custom-css-button blue">Add</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-row" id="remove-custom-css">
|
<div class="setting-row" id="remove-custom-css">
|
||||||
<div class="setting-description">
|
<div class="setting-description">
|
||||||
@@ -109,7 +105,7 @@ class GeneralSection extends BaseSection {
|
|||||||
<div class="setting-description">
|
<div class="setting-description">
|
||||||
Default download location
|
Default download location
|
||||||
</div>
|
</div>
|
||||||
<button class="download-folder-button green">Choose</button>
|
<button class="download-folder-button blue">Choose</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-row">
|
<div class="setting-row">
|
||||||
<div class="setting-description">
|
<div class="setting-description">
|
||||||
@@ -123,7 +119,7 @@ class GeneralSection extends BaseSection {
|
|||||||
<div class="setting-row" id="resetdata-option">
|
<div class="setting-row" id="resetdata-option">
|
||||||
<div class="setting-description">This will delete all application data including all added accounts and preferences
|
<div class="setting-description">This will delete all application data including all added accounts and preferences
|
||||||
</div>
|
</div>
|
||||||
<button class="reset-data-button green w-200">Reset App Data</button>
|
<button class="reset-data-button blue">Reset App Data</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -159,11 +155,6 @@ class GeneralSection extends BaseSection {
|
|||||||
if (process.platform === 'darwin') {
|
if (process.platform === 'darwin') {
|
||||||
this.updateDockBouncing();
|
this.updateDockBouncing();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Auto hide menubar on Windows and Linux
|
|
||||||
if (process.platform !== 'darwin') {
|
|
||||||
this.updateMenubarOption();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
updateTrayOption() {
|
updateTrayOption() {
|
||||||
@@ -179,19 +170,6 @@ class GeneralSection extends BaseSection {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
updateMenubarOption() {
|
|
||||||
this.generateSettingOption({
|
|
||||||
$element: document.querySelector('#menubar-option .setting-control'),
|
|
||||||
value: ConfigUtil.getConfigItem('autoHideMenubar', false),
|
|
||||||
clickHandler: () => {
|
|
||||||
const newValue = !ConfigUtil.getConfigItem('autoHideMenubar');
|
|
||||||
ConfigUtil.setConfigItem('autoHideMenubar', newValue);
|
|
||||||
ipcRenderer.send('toggle-menubar', newValue);
|
|
||||||
this.updateMenubarOption();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
updateBadgeOption() {
|
updateBadgeOption() {
|
||||||
this.generateSettingOption({
|
this.generateSettingOption({
|
||||||
$element: document.querySelector('#badge-option .setting-control'),
|
$element: document.querySelector('#badge-option .setting-control'),
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class NetworkSection extends BaseSection {
|
|||||||
<input class="setting-input-value" placeholder="e.g. foobar.com"/>
|
<input class="setting-input-value" placeholder="e.g. foobar.com"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-row">
|
<div class="setting-row">
|
||||||
<div class="action green" id="proxy-save-action">
|
<div class="action blue" id="proxy-save-action">
|
||||||
<i class="material-icons">check_box</i>
|
<i class="material-icons">check_box</i>
|
||||||
<span>Save</span>
|
<span>Save</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class PreferenceView extends BaseComponent {
|
|||||||
this.handleNavigation(navItem);
|
this.handleNavigation(navItem);
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcRenderer.on('toggle-sidebar-setting', (event, state) => {
|
ipcRenderer.on('toggle-sidebar', (event, state) => {
|
||||||
this.handleToggle('sidebar-option', state);
|
this.handleToggle('sidebar-option', state);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ const path = require('path');
|
|||||||
|
|
||||||
const electron = require('electron');
|
const electron = require('electron');
|
||||||
|
|
||||||
const { ipcRenderer, remote } = electron;
|
const {ipcRenderer, remote} = electron;
|
||||||
|
|
||||||
const { Tray, Menu, nativeImage, BrowserWindow } = remote;
|
const {Tray, Menu, nativeImage, BrowserWindow} = remote;
|
||||||
|
|
||||||
const APP_ICON = path.join(__dirname, '../../resources/tray', 'tray');
|
const APP_ICON = path.join(__dirname, '../../resources/tray', 'tray');
|
||||||
|
|
||||||
@@ -153,11 +153,12 @@ const createTray = function () {
|
|||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
window.tray.setContextMenu(contextMenu);
|
window.tray.setContextMenu(contextMenu);
|
||||||
if (process.platform === 'linux' || process.platform === 'win32') {
|
|
||||||
window.tray.on('click', () => {
|
window.tray.on('click', () => {
|
||||||
|
// Click event only works on Windows
|
||||||
|
if (process.platform === 'win32') {
|
||||||
ipcRenderer.send('toggle-app');
|
ipcRenderer.send('toggle-app');
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
ipcRenderer.on('destroytray', event => {
|
ipcRenderer.on('destroytray', event => {
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
let instance = null;
|
|
||||||
|
|
||||||
class CommonUtil {
|
|
||||||
constructor() {
|
|
||||||
if (instance) {
|
|
||||||
return instance;
|
|
||||||
} else {
|
|
||||||
instance = this;
|
|
||||||
}
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
// unescape already encoded/escaped strings
|
|
||||||
decodeString(string) {
|
|
||||||
const parser = new DOMParser();
|
|
||||||
const dom = parser.parseFromString(
|
|
||||||
'<!doctype html><body>' + string,
|
|
||||||
'text/html');
|
|
||||||
return dom.body.textContent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = new CommonUtil();
|
|
||||||
@@ -39,12 +39,7 @@ class ConfigUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getConfigItem(key, defaultValue = null) {
|
getConfigItem(key, defaultValue = null) {
|
||||||
try {
|
this.reloadDB();
|
||||||
this.db.reload();
|
|
||||||
} catch (err) {
|
|
||||||
logger.error('Error while reloading settings.json: ');
|
|
||||||
logger.error(err);
|
|
||||||
}
|
|
||||||
const value = this.db.getData('/')[key];
|
const value = this.db.getData('/')[key];
|
||||||
if (value === undefined) {
|
if (value === undefined) {
|
||||||
this.setConfigItem(key, defaultValue);
|
this.setConfigItem(key, defaultValue);
|
||||||
@@ -55,24 +50,19 @@ class ConfigUtil {
|
|||||||
}
|
}
|
||||||
// This function returns whether a key exists in the configuration file (settings.json)
|
// This function returns whether a key exists in the configuration file (settings.json)
|
||||||
isConfigItemExists(key) {
|
isConfigItemExists(key) {
|
||||||
try {
|
this.reloadDB();
|
||||||
this.db.reload();
|
|
||||||
} catch (err) {
|
|
||||||
logger.error('Error while reloading settings.json: ');
|
|
||||||
logger.error(err);
|
|
||||||
}
|
|
||||||
const value = this.db.getData('/')[key];
|
const value = this.db.getData('/')[key];
|
||||||
return (value !== undefined);
|
return (value !== undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
setConfigItem(key, value) {
|
setConfigItem(key, value) {
|
||||||
this.db.push(`/${key}`, value, true);
|
this.db.push(`/${key}`, value, true);
|
||||||
this.db.save();
|
this.reloadDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
removeConfigItem(key) {
|
removeConfigItem(key) {
|
||||||
this.db.delete(`/${key}`);
|
this.db.delete(`/${key}`);
|
||||||
this.db.save();
|
this.reloadDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
reloadDB() {
|
reloadDB() {
|
||||||
|
|||||||
@@ -34,12 +34,6 @@ class LinkUtil {
|
|||||||
const isImageUrl = /\.(bmp|gif|jpg|jpeg|png|webp)\?*.*$/i;
|
const isImageUrl = /\.(bmp|gif|jpg|jpeg|png|webp)\?*.*$/i;
|
||||||
return isImageUrl.test(url);
|
return isImageUrl.test(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
isPDF(url) {
|
|
||||||
// test for pdf extension
|
|
||||||
const isPDFUrl = /\.(pdf)\?*.*$/i;
|
|
||||||
return isPDFUrl.test(url);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = new LinkUtil();
|
module.exports = new LinkUtil();
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ const sentryInit = () => {
|
|||||||
if (!isDev) {
|
if (!isDev) {
|
||||||
init({
|
init({
|
||||||
dsn: 'SENTRY_DSN',
|
dsn: 'SENTRY_DSN',
|
||||||
// We should ignore this error since it's harmless and we know the reason behind this
|
|
||||||
// This error mainly comes from the console logs.
|
|
||||||
// This is a temp solution until Sentry supports disabling the console logs
|
|
||||||
ignoreErrors: ['does not appear to be a valid Zulip server'],
|
|
||||||
sendTimeout: 30 // wait 30 seconds before considering the sending capture to have failed, default is 1 second
|
sendTimeout: 30 // wait 30 seconds before considering the sending capture to have failed, default is 1 second
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="sidebar" class="toggle-sidebar">
|
<div id="sidebar" class="toggle-sidebar">
|
||||||
<div id="view-controls-container">
|
<div id="view-controls-container">
|
||||||
<div id="tabs-container"></div>
|
<div id="tabs-container" class="simpleList"></div>
|
||||||
<div id="add-tab" class="tab functional-tab">
|
<div id="add-tab" class="tab functional-tab">
|
||||||
<div class="server-tab" id="add-action">
|
<div class="server-tab" id="add-action">
|
||||||
<i class="material-icons">add</i>
|
<i class="material-icons">add</i>
|
||||||
|
|||||||
24
changelog.md
24
changelog.md
@@ -5,30 +5,6 @@
|
|||||||
All notable changes to the Zulip desktop app are documented in this file.
|
All notable changes to the Zulip desktop app are documented in this file.
|
||||||
|
|
||||||
|
|
||||||
### v2.3.7-beta --2018-09-03
|
|
||||||
|
|
||||||
**New features**:
|
|
||||||
* Add a feature to show and view pdf file in the app.
|
|
||||||
|
|
||||||
**Fixes**:
|
|
||||||
* Use package reload instead of custom reload. This is an experimental fix for setting files getting corrupted issue.
|
|
||||||
* Unescape server name in window menu item.
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
### v2.3.6 --2018-08-27
|
|
||||||
|
|
||||||
**New features**:
|
|
||||||
* Add proxy details while validating a server. This fixes the server validating issue for users who are using the proxy settings.
|
|
||||||
|
|
||||||
|
|
||||||
**Fixes**:
|
|
||||||
|
|
||||||
* Fix youtube video not playing in lightbox.
|
|
||||||
* Fix realm name not escaped properly.
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
### v2.3.5 --2018-08-03
|
### v2.3.5 --2018-08-03
|
||||||
|
|
||||||
**New features**:
|
**New features**:
|
||||||
|
|||||||
399
package-lock.json
generated
399
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "zulip",
|
"name": "zulip",
|
||||||
"version": "2.3.8",
|
"version": "2.3.6",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -11,9 +11,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "8.10.29",
|
"version": "8.10.26",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.29.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.26.tgz",
|
||||||
"integrity": "sha512-zbteaWZ2mdduacm0byELwtRyhYE40aK+pAanQk415gr1eRuu67x7QGOLmn8jz5zI8LDK7d0WI/oT6r5Trz4rzQ==",
|
"integrity": "sha512-opk6bLLErLSwyVVJeSH5Ek7ZWOBSsN0JrvXTNVGLXLAXKB9xlTYajrplR44xVyMrmbut94H6uJ9jqzM/12jxkA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"abbrev": {
|
"abbrev": {
|
||||||
@@ -173,91 +173,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"app-builder-bin": {
|
"app-builder-bin": {
|
||||||
"version": "2.1.2",
|
"version": "1.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-1.11.1.tgz",
|
||||||
"integrity": "sha512-PZJspzAqB0+z60OalXChP9I05BzODd/ffDz6RvTmDG3qclr7YrnpqzvPF+T7vGVtk2nN7syuveTQROJfXcB8xA==",
|
"integrity": "sha512-EYzPq59A3AMAD0/a6QSSBGzrXvKCm19t5utO5qeMTSAeWx0HDZxMyUBRUoOZIFd6+uJRF1HMTofIAushLu7PhQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"app-builder-lib": {
|
|
||||||
"version": "20.28.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.28.3.tgz",
|
|
||||||
"integrity": "sha512-oZqv3+oi5bfKbN5eFfEbNovSuMTXn3yu8yJbmqDCNXcI1caOF+hCNAUpgMFohNGO0uY80veAwQTysZ74/VFjCA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"7zip-bin": "~4.0.2",
|
|
||||||
"app-builder-bin": "2.1.2",
|
|
||||||
"async-exit-hook": "^2.0.1",
|
|
||||||
"bluebird-lst": "^1.0.5",
|
|
||||||
"builder-util": "6.1.3",
|
|
||||||
"builder-util-runtime": "4.4.1",
|
|
||||||
"chromium-pickle-js": "^0.2.0",
|
|
||||||
"debug": "^3.1.0",
|
|
||||||
"ejs": "^2.6.1",
|
|
||||||
"electron-osx-sign": "0.4.10",
|
|
||||||
"electron-publish": "20.28.3",
|
|
||||||
"fs-extra-p": "^4.6.1",
|
|
||||||
"hosted-git-info": "^2.7.1",
|
|
||||||
"is-ci": "^1.2.0",
|
|
||||||
"isbinaryfile": "^3.0.3",
|
|
||||||
"js-yaml": "^3.12.0",
|
|
||||||
"lazy-val": "^1.0.3",
|
|
||||||
"minimatch": "^3.0.4",
|
|
||||||
"normalize-package-data": "^2.4.0",
|
|
||||||
"plist": "^3.0.1",
|
|
||||||
"read-config-file": "3.1.2",
|
|
||||||
"sanitize-filename": "^1.6.1",
|
|
||||||
"semver": "^5.5.1",
|
|
||||||
"temp-file": "^3.1.3"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"ci-info": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-Oqmw2pVfCl8sCL+1QgMywPfdxPJPkC51y4usw0iiE2S9qnEOAqXy8bwl1CpMpnoU39g4iKJTz6QZj+28FvOnjQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"debug": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"ms": "2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hosted-git-info": {
|
|
||||||
"version": "2.7.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
|
|
||||||
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"is-ci": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-plgvKjQtalH2P3Gytb7L61Lmz95g2DlpzFiQyRSFew8WoJKxtKRzrZMeyRN2supblm3Psc8OQGy7Xjb6XG11jw==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"ci-info": "^1.3.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"js-yaml": {
|
|
||||||
"version": "3.12.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
|
|
||||||
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"argparse": "^1.0.7",
|
|
||||||
"esprima": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"semver": {
|
|
||||||
"version": "5.5.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
|
|
||||||
"integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
|
|
||||||
"dev": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"append-buffer": {
|
"append-buffer": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
|
||||||
@@ -996,39 +916,33 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"buffer-from": {
|
"buffer-from": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
|
||||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
|
"integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"builder-util": {
|
"builder-util": {
|
||||||
"version": "6.1.3",
|
"version": "5.16.0",
|
||||||
"resolved": "https://registry.npmjs.org/builder-util/-/builder-util-6.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/builder-util/-/builder-util-5.16.0.tgz",
|
||||||
"integrity": "sha512-MXeARNff9KHlzJYGJcAhLI/tpE57PmUnleaYfL22IE+viRt192Yr3wQL444ztsA+LUHJ8d12moUoG00jh1hfLA==",
|
"integrity": "sha512-HN7EyZF+WPcncty4fy7AVZxfR8TMkX/ZxxQfsji4dWyzDZ8nAqMadXKZlqySfLr5ckEjwEsOrDqO2ZsqkVoCtg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"7zip-bin": "~4.0.2",
|
"7zip-bin": "~4.0.2",
|
||||||
"app-builder-bin": "2.1.2",
|
"app-builder-bin": "1.11.1",
|
||||||
"bluebird-lst": "^1.0.5",
|
"bluebird-lst": "^1.0.5",
|
||||||
"builder-util-runtime": "^4.4.1",
|
"builder-util-runtime": "^4.4.0",
|
||||||
"chalk": "^2.4.1",
|
"chalk": "^2.4.1",
|
||||||
"debug": "^3.1.0",
|
"debug": "^3.1.0",
|
||||||
"fs-extra-p": "^4.6.1",
|
"fs-extra-p": "^4.6.1",
|
||||||
"is-ci": "^1.2.0",
|
"is-ci": "^1.1.0",
|
||||||
"js-yaml": "^3.12.0",
|
"js-yaml": "^3.12.0",
|
||||||
"lazy-val": "^1.0.3",
|
"lazy-val": "^1.0.3",
|
||||||
"semver": "^5.5.1",
|
"semver": "^5.5.0",
|
||||||
"source-map-support": "^0.5.9",
|
"source-map-support": "^0.5.6",
|
||||||
"stat-mode": "^0.2.2",
|
"stat-mode": "^0.2.2",
|
||||||
"temp-file": "^3.1.3"
|
"temp-file": "^3.1.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ci-info": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-Oqmw2pVfCl8sCL+1QgMywPfdxPJPkC51y4usw0iiE2S9qnEOAqXy8bwl1CpMpnoU39g4iKJTz6QZj+28FvOnjQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||||
@@ -1038,15 +952,6 @@
|
|||||||
"ms": "2.0.0"
|
"ms": "2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-ci": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-plgvKjQtalH2P3Gytb7L61Lmz95g2DlpzFiQyRSFew8WoJKxtKRzrZMeyRN2supblm3Psc8OQGy7Xjb6XG11jw==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"ci-info": "^1.3.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "3.12.0",
|
"version": "3.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
|
||||||
@@ -1056,19 +961,13 @@
|
|||||||
"argparse": "^1.0.7",
|
"argparse": "^1.0.7",
|
||||||
"esprima": "^4.0.0"
|
"esprima": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"semver": {
|
|
||||||
"version": "5.5.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
|
|
||||||
"integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
|
|
||||||
"dev": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"builder-util-runtime": {
|
"builder-util-runtime": {
|
||||||
"version": "4.4.1",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-4.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-4.4.0.tgz",
|
||||||
"integrity": "sha512-8L2pbL6D3VdI1f8OMknlZJpw0c7KK15BRz3cY77AOUElc4XlCv2UhVV01jJM7+6Lx7henaQh80ALULp64eFYAQ==",
|
"integrity": "sha512-tkTF1o7XAX79ZkMo8822ZdQMpEBGSgfJ9kEYgyTAja90BPu7HO8C02pb8iSlFXfmK0Q0UA6D8MmnSNNPi0JLeg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"bluebird-lst": "^1.0.5",
|
"bluebird-lst": "^1.0.5",
|
||||||
@@ -2035,30 +1934,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dmg-builder": {
|
"dmg-builder": {
|
||||||
"version": "5.3.1",
|
"version": "4.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-5.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-4.14.0.tgz",
|
||||||
"integrity": "sha512-/+vtqlgvTtha/4Gc76XIRKS2KzYO58sTWXhZ/kgfNr05ZXY6bIw26v7xDu8ZBpTYnfWI09JRZTMv1yIXT/vvfg==",
|
"integrity": "sha512-zTlb3VFkOGqCzsSSEVkfzCRl0Gd3LINMfplI6mCvTSU825OVG7W1IvZSp2gikLT5OJIgJzx2YuomKntWhXOJWA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"app-builder-lib": "~20.28.3",
|
|
||||||
"bluebird-lst": "^1.0.5",
|
"bluebird-lst": "^1.0.5",
|
||||||
"builder-util": "~6.1.3",
|
"builder-util": "~5.16.0",
|
||||||
|
"electron-builder-lib": "~20.20.4",
|
||||||
"fs-extra-p": "^4.6.1",
|
"fs-extra-p": "^4.6.1",
|
||||||
"iconv-lite": "^0.4.24",
|
"iconv-lite": "^0.4.23",
|
||||||
"js-yaml": "^3.12.0",
|
"js-yaml": "^3.12.0",
|
||||||
"parse-color": "^1.0.0",
|
"parse-color": "^1.0.0",
|
||||||
"sanitize-filename": "^1.6.1"
|
"sanitize-filename": "^1.6.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"iconv-lite": {
|
|
||||||
"version": "0.4.24",
|
|
||||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
|
||||||
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"safer-buffer": ">= 2.1.2 < 3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "3.12.0",
|
"version": "3.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
|
||||||
@@ -2201,9 +2091,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"electron": {
|
"electron": {
|
||||||
"version": "2.0.9",
|
"version": "2.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/electron/-/electron-2.0.9.tgz",
|
"resolved": "https://registry.npmjs.org/electron/-/electron-2.0.8.tgz",
|
||||||
"integrity": "sha512-xRefYuz6C65ahX8vDwIJxr1Y5ffFa106dugZEbl23yLKfrAG01lh5csBJ9hJwCBPLHp2zj/9PGoJ8dt5zlzOvQ==",
|
"integrity": "sha512-pbeGFbwijb5V3Xy/KMcwIp59eA9igg2br+7EHbbwQoa3HRDF5JjTrciX7OiscCA52+ze2n4q38S4lXPqRitgIA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/node": "^8.0.24",
|
"@types/node": "^8.0.24",
|
||||||
@@ -2212,39 +2102,103 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron-builder": {
|
"electron-builder": {
|
||||||
"version": "20.28.3",
|
"version": "20.20.4",
|
||||||
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.28.3.tgz",
|
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.20.4.tgz",
|
||||||
"integrity": "sha512-Sbe7E18Fl88la642PpcMU4jxv/1/vI3PCT/+Szly3O97DtKwuuVmk5MhW+FDBKgNS2f0xJgA6vRRraDK6HYvrw==",
|
"integrity": "sha512-6X2T21/v35dvt9Rd+L9Dlb3EbIVGiqePh2sirngPa2wT6QnmVdVJsvnlxKsWWYrsQzowVSGxkho5FGiCwanDiw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"app-builder-lib": "20.28.3",
|
|
||||||
"bluebird-lst": "^1.0.5",
|
"bluebird-lst": "^1.0.5",
|
||||||
"builder-util": "6.1.3",
|
"builder-util": "5.16.0",
|
||||||
"builder-util-runtime": "4.4.1",
|
"builder-util-runtime": "4.4.0",
|
||||||
"chalk": "^2.4.1",
|
"chalk": "^2.4.1",
|
||||||
"dmg-builder": "5.3.1",
|
"dmg-builder": "4.14.0",
|
||||||
|
"electron-builder-lib": "20.20.4",
|
||||||
"fs-extra-p": "^4.6.1",
|
"fs-extra-p": "^4.6.1",
|
||||||
"is-ci": "^1.2.0",
|
"is-ci": "^1.1.0",
|
||||||
"lazy-val": "^1.0.3",
|
"lazy-val": "^1.0.3",
|
||||||
"read-config-file": "3.1.2",
|
"read-config-file": "3.1.0",
|
||||||
"sanitize-filename": "^1.6.1",
|
"sanitize-filename": "^1.6.1",
|
||||||
"update-notifier": "^2.5.0",
|
"update-notifier": "^2.5.0",
|
||||||
"yargs": "^12.0.1"
|
"yargs": "^12.0.1"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"electron-builder-lib": {
|
||||||
"ci-info": {
|
"version": "20.20.4",
|
||||||
"version": "1.4.0",
|
"resolved": "https://registry.npmjs.org/electron-builder-lib/-/electron-builder-lib-20.20.4.tgz",
|
||||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.4.0.tgz",
|
"integrity": "sha512-84n1ELXP/leF1IuDIsx2pyUJuz889Um3sb2tjBxDbEhq0oaLnp1ifB3j5iO+OV7ZfGnXKyvds6nPcNt1AYQy7A==",
|
||||||
"integrity": "sha512-Oqmw2pVfCl8sCL+1QgMywPfdxPJPkC51y4usw0iiE2S9qnEOAqXy8bwl1CpMpnoU39g4iKJTz6QZj+28FvOnjQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"is-ci": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-plgvKjQtalH2P3Gytb7L61Lmz95g2DlpzFiQyRSFew8WoJKxtKRzrZMeyRN2supblm3Psc8OQGy7Xjb6XG11jw==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ci-info": "^1.3.0"
|
"7zip-bin": "~4.0.2",
|
||||||
|
"app-builder-bin": "1.11.1",
|
||||||
|
"async-exit-hook": "^2.0.1",
|
||||||
|
"bluebird-lst": "^1.0.5",
|
||||||
|
"builder-util": "5.16.0",
|
||||||
|
"builder-util-runtime": "4.4.0",
|
||||||
|
"chromium-pickle-js": "^0.2.0",
|
||||||
|
"debug": "^3.1.0",
|
||||||
|
"ejs": "^2.6.1",
|
||||||
|
"electron-osx-sign": "0.4.10",
|
||||||
|
"electron-publish": "20.22.0",
|
||||||
|
"env-paths": "^1.0.0",
|
||||||
|
"fs-extra-p": "^4.6.1",
|
||||||
|
"hosted-git-info": "^2.7.1",
|
||||||
|
"is-ci": "^1.1.0",
|
||||||
|
"isbinaryfile": "^3.0.2",
|
||||||
|
"js-yaml": "^3.12.0",
|
||||||
|
"lazy-val": "^1.0.3",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"normalize-package-data": "^2.4.0",
|
||||||
|
"plist": "^3.0.1",
|
||||||
|
"read-config-file": "3.1.0",
|
||||||
|
"sanitize-filename": "^1.6.1",
|
||||||
|
"semver": "^5.5.0",
|
||||||
|
"sumchecker": "^2.0.2",
|
||||||
|
"temp-file": "^3.1.3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"debug": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hosted-git-info": {
|
||||||
|
"version": "2.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
|
||||||
|
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"js-yaml": {
|
||||||
|
"version": "3.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
|
||||||
|
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"argparse": "^1.0.7",
|
||||||
|
"esprima": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sumchecker": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
|
||||||
|
"integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"debug": "^2.2.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"debug": {
|
||||||
|
"version": "2.6.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2394,14 +2348,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron-publish": {
|
"electron-publish": {
|
||||||
"version": "20.28.3",
|
"version": "20.22.0",
|
||||||
"resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.28.3.tgz",
|
"resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.22.0.tgz",
|
||||||
"integrity": "sha512-/2t5zk9EKgH7p7rFZ+ynTKLmpKGF9bktMP2UR6u4bbPz9w4r3WEUbPOeZ1TLqUCAqdfZECcj4ThjrlcAJTghCA==",
|
"integrity": "sha512-ZF6GV1y5l1+auMBdISOk3yrltkGxOo1DQaGXVpABuenfgXgrHen6EgkgMy6wHhvBm1tOTZnANJSUV4zDBIFewQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"bluebird-lst": "^1.0.5",
|
"bluebird-lst": "^1.0.5",
|
||||||
"builder-util": "~6.1.3",
|
"builder-util": "^5.14.0",
|
||||||
"builder-util-runtime": "^4.4.1",
|
"builder-util-runtime": "^4.4.0",
|
||||||
"chalk": "^2.4.1",
|
"chalk": "^2.4.1",
|
||||||
"fs-extra-p": "^4.6.1",
|
"fs-extra-p": "^4.6.1",
|
||||||
"lazy-val": "^1.0.3",
|
"lazy-val": "^1.0.3",
|
||||||
@@ -2502,9 +2456,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"es6-promise": {
|
"es6-promise": {
|
||||||
"version": "4.2.5",
|
"version": "4.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
|
||||||
"integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
|
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"es6-set": {
|
"es6-set": {
|
||||||
@@ -4432,34 +4386,6 @@
|
|||||||
"is-obj": "^1.0.0"
|
"is-obj": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"uuid": {
|
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
|
|
||||||
"integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"write-file-atomic": {
|
|
||||||
"version": "1.3.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
|
|
||||||
"integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"graceful-fs": "^4.1.11",
|
|
||||||
"imurmurhash": "^0.1.4",
|
|
||||||
"slide": "^1.1.5"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xdg-basedir": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz",
|
|
||||||
"integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"os-homedir": "^1.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"google-translate-token": {
|
"google-translate-token": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/google-translate-token/-/google-translate-token-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/google-translate-token/-/google-translate-token-1.0.0.tgz",
|
||||||
@@ -4468,32 +4394,6 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"configstore": "^2.0.0",
|
"configstore": "^2.0.0",
|
||||||
"got": "^6.3.0"
|
"got": "^6.3.0"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"configstore": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz",
|
|
||||||
"integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"dot-prop": "^3.0.0",
|
|
||||||
"graceful-fs": "^4.1.2",
|
|
||||||
"mkdirp": "^0.5.0",
|
|
||||||
"object-assign": "^4.0.1",
|
|
||||||
"os-tmpdir": "^1.0.0",
|
|
||||||
"osenv": "^0.1.0",
|
|
||||||
"uuid": "^2.0.1",
|
|
||||||
"write-file-atomic": "^1.1.2",
|
|
||||||
"xdg-basedir": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dot-prop": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
|
|
||||||
"integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"is-obj": "^1.0.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
@@ -5569,38 +5469,11 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"isbinaryfile": {
|
"isbinaryfile": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz",
|
||||||
"integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
|
"integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"buffer-alloc": "^1.2.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"buffer-alloc": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"buffer-alloc-unsafe": "^1.1.0",
|
|
||||||
"buffer-fill": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"buffer-alloc-unsafe": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
|
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"buffer-fill": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
|
|
||||||
"dev": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"isexe": {
|
"isexe": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
@@ -7256,9 +7129,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"read-config-file": {
|
"read-config-file": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.1.0.tgz",
|
||||||
"integrity": "sha512-QCATYzlYHvmWps/W/eP7rcKuhYRYZg5XKeXFxSJRIXvn+KSw1+Ntz2et1aBz5TrEpawGrxWZ7zBipj+/v0xwWQ==",
|
"integrity": "sha512-z3VTrR9fgFu+Ll6MhTdtxbPFBKNGKgzYYnRjOcZvQeE/zwJTjPYVrps0ATgaSWU2/BnucUg3knP+Oz4zo9vEoA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ajv": "^6.5.2",
|
"ajv": "^6.5.2",
|
||||||
@@ -7273,15 +7146,15 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": {
|
"ajv": {
|
||||||
"version": "6.5.3",
|
"version": "6.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz",
|
||||||
"integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
|
"integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"fast-deep-equal": "^2.0.1",
|
"fast-deep-equal": "^2.0.1",
|
||||||
"fast-json-stable-stringify": "^2.0.0",
|
"fast-json-stable-stringify": "^2.0.0",
|
||||||
"json-schema-traverse": "^0.4.1",
|
"json-schema-traverse": "^0.4.1",
|
||||||
"uri-js": "^4.2.2"
|
"uri-js": "^4.2.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fast-deep-equal": {
|
"fast-deep-equal": {
|
||||||
@@ -8066,9 +7939,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"source-map-support": {
|
"source-map-support": {
|
||||||
"version": "0.5.9",
|
"version": "0.5.6",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
|
||||||
"integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
|
"integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"buffer-from": "^1.0.0",
|
"buffer-from": "^1.0.0",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "zulip",
|
"name": "zulip",
|
||||||
"productName": "Zulip",
|
"productName": "Zulip",
|
||||||
"version": "2.3.8",
|
"version": "2.3.6",
|
||||||
"main": "./app/main",
|
"main": "./app/main",
|
||||||
"description": "Zulip Desktop App",
|
"description": "Zulip Desktop App",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
@@ -123,8 +123,8 @@
|
|||||||
"assert": "1.4.1",
|
"assert": "1.4.1",
|
||||||
"cp-file": "^5.0.0",
|
"cp-file": "^5.0.0",
|
||||||
"devtron": "1.4.0",
|
"devtron": "1.4.0",
|
||||||
"electron": "2.0.9",
|
"electron": "2.0.8",
|
||||||
"electron-builder": "20.28.3",
|
"electron-builder": "20.20.4",
|
||||||
"electron-connect": "0.6.2",
|
"electron-connect": "0.6.2",
|
||||||
"electron-debug": "1.4.0",
|
"electron-debug": "1.4.0",
|
||||||
"google-translate-api": "2.3.0",
|
"google-translate-api": "2.3.0",
|
||||||
@@ -153,7 +153,7 @@
|
|||||||
"max-lines": [
|
"max-lines": [
|
||||||
"warn",
|
"warn",
|
||||||
{
|
{
|
||||||
"max": 600,
|
"max": 500,
|
||||||
"skipBlankLines": true,
|
"skipBlankLines": true,
|
||||||
"skipComments": true
|
"skipComments": true
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user