aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com>2021-05-26 21:05:50 +0530
committerLibravatar GitHub <noreply@github.com>2021-05-26 21:05:50 +0530
commit296ce5ce62bcde6888df291f97105fa912ed7d35 (patch)
treeb28e7d2373f1020c1183469aa3a9feafecede569
parentAdded new entry in context menu: 'Download image' (#1449) (diff)
downloadferdium-app-296ce5ce62bcde6888df291f97105fa912ed7d35.tar.gz
ferdium-app-296ce5ce62bcde6888df291f97105fa912ed7d35.tar.zst
ferdium-app-296ce5ce62bcde6888df291f97105fa912ed7d35.zip
Replace 'remote' with 'electron/remote' (#1448)
* Locked new version of 'recipes' submodule with corresponding changes.
-rw-r--r--package-lock.json16
-rw-r--r--package.json4
m---------recipes0
-rw-r--r--src/api/server/LocalApi.js5
-rw-r--r--src/api/server/ServerApi.js5
-rw-r--r--src/api/utils/auth.js4
-rw-r--r--src/components/auth/Locked.js6
-rw-r--r--src/components/services/tabs/TabItem.js8
-rw-r--r--src/components/settings/settings/EditSettingsForm.js8
-rw-r--r--src/components/settings/supportFerdi/SupportFerdiDashboard.js4
-rw-r--r--src/config.js6
-rw-r--r--src/containers/settings/RecipesScreen.js5
-rw-r--r--src/containers/subscription/SubscriptionFormScreen.js8
-rw-r--r--src/electron/webview-ime-focus.js4
-rw-r--r--src/environment.js7
-rw-r--r--src/features/announcements/api.js4
-rw-r--r--src/features/planSelection/containers/PlanSelectionScreen.js4
-rw-r--r--src/features/quickSwitch/Component.js6
-rw-r--r--src/features/serviceProxy/index.js8
-rw-r--r--src/features/workspaces/components/WorkspaceDrawerItem.js6
-rw-r--r--src/helpers/recipe-helpers.js6
-rw-r--r--src/helpers/service-helpers.js4
-rw-r--r--src/helpers/userAgent-helpers.js7
-rw-r--r--src/i18n/messages/src/components/auth/Locked.json32
-rw-r--r--src/i18n/messages/src/components/settings/settings/EditSettingsForm.json128
-rw-r--r--src/i18n/messages/src/components/settings/supportFerdi/SupportFerdiDashboard.json60
-rw-r--r--src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json16
-rw-r--r--src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json8
-rw-r--r--src/i18n/messages/src/lib/Menu.json296
-rw-r--r--src/index.js31
-rw-r--r--src/lib/Menu.js7
-rw-r--r--src/lib/TouchBar.js5
-rw-r--r--src/models/Service.js9
-rw-r--r--src/stores/AppStore.js18
-rw-r--r--src/stores/PaymentStore.js8
-rw-r--r--src/stores/ServicesStore.js5
-rw-r--r--src/stores/SettingsStore.js9
-rw-r--r--src/stores/UIStore.js4
-rw-r--r--src/stores/UserStore.js4
-rw-r--r--src/webview/contextMenu.js4
-rw-r--r--src/webview/contextMenuBuilder.js8
-rw-r--r--src/webview/recipe.js5
-rw-r--r--src/webview/spellchecker.js6
43 files changed, 376 insertions, 422 deletions
diff --git a/package-lock.json b/package-lock.json
index e209f62a4..11256f0ed 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3730,6 +3730,11 @@
3730 } 3730 }
3731 } 3731 }
3732 }, 3732 },
3733 "@electron/remote": {
3734 "version": "1.1.0",
3735 "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-1.1.0.tgz",
3736 "integrity": "sha512-yr8gZTkIgJYKbFqExI4QZqMSjn1kL/us9Dl46+TH1EZdhgRtsJ6HDfdsIxu0QEc6Hv+DMAXs69rgquH+8FDk4w=="
3737 },
3733 "@electron/universal": { 3738 "@electron/universal": {
3734 "version": "1.0.5", 3739 "version": "1.0.5",
3735 "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz", 3740 "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz",
@@ -15259,11 +15264,6 @@
15259 "hunspell-asm": "^4.0.2" 15264 "hunspell-asm": "^4.0.2"
15260 } 15265 }
15261 }, 15266 },
15262 "electron-is-dev": {
15263 "version": "1.1.0",
15264 "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.1.0.tgz",
15265 "integrity": "sha512-Z1qA/1oHNowGtSBIcWk0pcLEqYT/j+13xUw/MYOrBUOL4X7VN0i0KCTf5SqyvMPmW5pSPKbo28wkxMxzZ20YnQ=="
15266 },
15267 "electron-notarize": { 15267 "electron-notarize": {
15268 "version": "1.0.0", 15268 "version": "1.0.0",
15269 "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.0.0.tgz", 15269 "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.0.0.tgz",
@@ -31451,9 +31451,9 @@
31451 } 31451 }
31452 }, 31452 },
31453 "react": { 31453 "react": {
31454 "version": "16.12.0", 31454 "version": "16.14.0",
31455 "resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz", 31455 "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
31456 "integrity": "sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA==", 31456 "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
31457 "requires": { 31457 "requires": {
31458 "loose-envify": "^1.1.0", 31458 "loose-envify": "^1.1.0",
31459 "object-assign": "^4.1.1", 31459 "object-assign": "^4.1.1",
diff --git a/package.json b/package.json
index 3bfbf1125..12739eedf 100644
--- a/package.json
+++ b/package.json
@@ -61,6 +61,7 @@
61 "@adonisjs/validator": "5.0.6", 61 "@adonisjs/validator": "5.0.6",
62 "@babel/polyfill": "7.7.0", 62 "@babel/polyfill": "7.7.0",
63 "@babel/runtime": "7.7.4", 63 "@babel/runtime": "7.7.4",
64 "@electron/remote": "1.1.0",
64 "@mdi/js": "4.6.95", 65 "@mdi/js": "4.6.95",
65 "@meetfranz/electron-notification-state": "1.0.0", 66 "@meetfranz/electron-notification-state": "1.0.0",
66 "@meetfranz/forms": "file:packages/forms", 67 "@meetfranz/forms": "file:packages/forms",
@@ -81,7 +82,6 @@
81 "electron-fetch": "1.7.3", 82 "electron-fetch": "1.7.3",
82 "electron-find": "1.0.6", 83 "electron-find": "1.0.6",
83 "electron-hunspell": "1.1.2", 84 "electron-hunspell": "1.1.2",
84 "electron-is-dev": "1.1.0",
85 "electron-react-titlebar": "0.8.2", 85 "electron-react-titlebar": "0.8.2",
86 "electron-updater": "4.3.9", 86 "electron-updater": "4.3.9",
87 "electron-util": "0.16.0", 87 "electron-util": "0.16.0",
@@ -111,7 +111,7 @@
111 "os-name": "4.0.0", 111 "os-name": "4.0.0",
112 "pretty-bytes": "^5.6.0", 112 "pretty-bytes": "^5.6.0",
113 "prop-types": "^15.5.10", 113 "prop-types": "^15.5.10",
114 "react": "16.12.0", 114 "react": "16.14.0",
115 "react-addons-css-transition-group": "15.6.2", 115 "react-addons-css-transition-group": "15.6.2",
116 "react-confetti": "3.1.0", 116 "react-confetti": "3.1.0",
117 "react-dom": "^16.14.0", 117 "react-dom": "^16.14.0",
diff --git a/recipes b/recipes
Subproject fb98432857928b7c26a196fc2b9020c3a90531d Subproject e05d27ea49929e763906e6c430ec79c1a093dde
diff --git a/src/api/server/LocalApi.js b/src/api/server/LocalApi.js
index cc8035523..4b1f03f22 100644
--- a/src/api/server/LocalApi.js
+++ b/src/api/server/LocalApi.js
@@ -1,12 +1,11 @@
1import { ipcRenderer, remote } from 'electron'; 1import { ipcRenderer } from 'electron';
2import { session } from '@electron/remote';
2import du from 'du'; 3import du from 'du';
3 4
4import { getServicePartitionsDirectory } from '../../helpers/service-helpers.js'; 5import { getServicePartitionsDirectory } from '../../helpers/service-helpers.js';
5 6
6const debug = require('debug')('Ferdi:LocalApi'); 7const debug = require('debug')('Ferdi:LocalApi');
7 8
8const { session } = remote;
9
10export default class LocalApi { 9export default class LocalApi {
11 // Settings 10 // Settings
12 getAppSettings(type) { 11 getAppSettings(type) {
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index 627425948..5fd5268ce 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -2,7 +2,7 @@ import os from 'os';
2import path from 'path'; 2import path from 'path';
3import tar from 'tar'; 3import tar from 'tar';
4import fs from 'fs-extra'; 4import fs from 'fs-extra';
5import { remote } from 'electron'; 5import { app, require as remoteRequire } from '@electron/remote';
6 6
7import ServiceModel from '../../models/Service'; 7import ServiceModel from '../../models/Service';
8import RecipePreviewModel from '../../models/RecipePreview'; 8import RecipePreviewModel from '../../models/RecipePreview';
@@ -35,8 +35,7 @@ module.paths.unshift(
35 getRecipeDirectory(), 35 getRecipeDirectory(),
36); 36);
37 37
38const { app } = remote; 38const { default: fetch } = remoteRequire('electron-fetch');
39const { default: fetch } = remote.require('electron-fetch');
40 39
41export default class ServerApi { 40export default class ServerApi {
42 recipePreviews = []; 41 recipePreviews = [];
diff --git a/src/api/utils/auth.js b/src/api/utils/auth.js
index 6dbdeaa7f..5952cfe11 100644
--- a/src/api/utils/auth.js
+++ b/src/api/utils/auth.js
@@ -1,8 +1,6 @@
1import { remote } from 'electron'; 1import { app } from '@electron/remote';
2import localStorage from 'mobx-localstorage'; 2import localStorage from 'mobx-localstorage';
3 3
4const { app } = remote;
5
6export const prepareAuthRequest = (options = { method: 'GET' }, auth = true) => { 4export const prepareAuthRequest = (options = { method: 'GET' }, auth = true) => {
7 const request = Object.assign(options, { 5 const request = Object.assign(options, {
8 mode: 'cors', 6 mode: 'cors',
diff --git a/src/components/auth/Locked.js b/src/components/auth/Locked.js
index c5e8a5aad..1fdbea595 100644
--- a/src/components/auth/Locked.js
+++ b/src/components/auth/Locked.js
@@ -1,4 +1,4 @@
1import { remote } from 'electron'; 1import { systemPreferences } from '@electron/remote';
2import React, { Component } from 'react'; 2import React, { Component } from 'react';
3import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
4import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
@@ -12,10 +12,6 @@ import { isMac } from '../../environment';
12 12
13import { globalError as globalErrorPropType } from '../../prop-types'; 13import { globalError as globalErrorPropType } from '../../prop-types';
14 14
15const {
16 systemPreferences,
17} = remote;
18
19const messages = defineMessages({ 15const messages = defineMessages({
20 headline: { 16 headline: {
21 id: 'locked.headline', 17 id: 'locked.headline',
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js
index 24bbe7939..d4714a809 100644
--- a/src/components/services/tabs/TabItem.js
+++ b/src/components/services/tabs/TabItem.js
@@ -1,4 +1,6 @@
1import { remote } from 'electron'; 1import {
2 Menu, dialog, app, getCurrentWindow,
3} from '@electron/remote';
2import React, { Component } from 'react'; 4import React, { Component } from 'react';
3import { defineMessages, intlShape } from 'react-intl'; 5import { defineMessages, intlShape } from 'react-intl';
4import PropTypes from 'prop-types'; 6import PropTypes from 'prop-types';
@@ -14,8 +16,6 @@ import { ctrlKey, cmdKey } from '../../../environment';
14 16
15const IS_SERVICE_DEBUGGING_ENABLED = (localStorage.getItem('debug') || '').includes('Ferdi:Service'); 17const IS_SERVICE_DEBUGGING_ENABLED = (localStorage.getItem('debug') || '').includes('Ferdi:Service');
16 18
17const { Menu, dialog, app } = remote;
18
19const messages = defineMessages({ 19const messages = defineMessages({
20 reload: { 20 reload: {
21 id: 'tabs.item.reload', 21 id: 'tabs.item.reload',
@@ -236,7 +236,7 @@ const styles = {
236 'is-disabled': !service.isEnabled, 236 'is-disabled': !service.isEnabled,
237 })} 237 })}
238 onClick={clickHandler} 238 onClick={clickHandler}
239 onContextMenu={() => menu.popup(remote.getCurrentWindow())} 239 onContextMenu={() => menu.popup(getCurrentWindow())}
240 data-tip={`${service.name} ${shortcutIndex <= 9 ? `(${ctrlKey}+${shortcutIndex})` : ''}`} 240 data-tip={`${service.name} ${shortcutIndex <= 9 ? `(${ctrlKey}+${shortcutIndex})` : ''}`}
241 > 241 >
242 <img 242 <img
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index eef529730..28f456608 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -1,4 +1,4 @@
1import { remote } from 'electron'; 1import { app, systemPreferences } from '@electron/remote';
2import React, { Component, Fragment } from 'react'; 2import React, { Component, Fragment } from 'react';
3import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
4import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
@@ -19,10 +19,6 @@ import {
19} from '../../../config'; 19} from '../../../config';
20import { isMac, isWindows } from '../../../environment'; 20import { isMac, isWindows } from '../../../environment';
21 21
22const {
23 systemPreferences,
24} = remote;
25
26const messages = defineMessages({ 22const messages = defineMessages({
27 headline: { 23 headline: {
28 id: 'settings.app.headline', 24 id: 'settings.app.headline',
@@ -665,7 +661,7 @@ export default @observer class EditSettingsForm extends Component {
665 )} 661 )}
666 {intl.formatMessage(messages.currentVersion)} 662 {intl.formatMessage(messages.currentVersion)}
667 {' '} 663 {' '}
668 {remote.app.getVersion()} 664 {app.getVersion()}
669 {noUpdateAvailable && ( 665 {noUpdateAvailable && (
670 <> 666 <>
671 <br /> 667 <br />
diff --git a/src/components/settings/supportFerdi/SupportFerdiDashboard.js b/src/components/settings/supportFerdi/SupportFerdiDashboard.js
index f6fc7c171..36c126565 100644
--- a/src/components/settings/supportFerdi/SupportFerdiDashboard.js
+++ b/src/components/settings/supportFerdi/SupportFerdiDashboard.js
@@ -1,10 +1,8 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import { defineMessages, FormattedHTMLMessage, intlShape } from 'react-intl'; 2import { defineMessages, FormattedHTMLMessage, intlShape } from 'react-intl';
3import { remote } from 'electron'; 3import { BrowserWindow } from '@electron/remote';
4import InfoBar from '../../ui/InfoBar'; 4import InfoBar from '../../ui/InfoBar';
5 5
6const { BrowserWindow } = remote;
7
8const messages = defineMessages({ 6const messages = defineMessages({
9 headline: { 7 headline: {
10 id: 'settings.supportFerdi.headline', 8 id: 'settings.supportFerdi.headline',
diff --git a/src/config.js b/src/config.js
index ecd1aa316..127dcd2dc 100644
--- a/src/config.js
+++ b/src/config.js
@@ -1,12 +1,9 @@
1import electron from 'electron';
2import isDevMode from 'electron-is-dev';
3import ms from 'ms'; 1import ms from 'ms';
4import path from 'path'; 2import path from 'path';
5import { DEFAULT_ACCENT_COLOR } from '@meetfranz/theme'; 3import { DEFAULT_ACCENT_COLOR } from '@meetfranz/theme';
6import { asarPath } from './helpers/asar-helpers'; 4import { asarPath } from './helpers/asar-helpers';
7 5
8const app = process.type === 'renderer' ? electron.remote.app : electron.app; 6const { app, nativeTheme } = process.type === 'renderer' ? require('@electron/remote') : require('electron');
9const nativeTheme = process.type === 'renderer' ? electron.remote.nativeTheme : electron.nativeTheme;
10 7
11export const CHECK_INTERVAL = ms('1h'); // How often should we perform checks 8export const CHECK_INTERVAL = ms('1h'); // How often should we perform checks
12 9
@@ -199,6 +196,7 @@ if (process.env.FERDI_APPDATA_DIR != null) {
199 app.setPath('userData', path.join(app.getPath('appData'), app.name)); 196 app.setPath('userData', path.join(app.getPath('appData'), app.name));
200} 197}
201 198
199export const isDevMode = !app.isPackaged;
202if (isDevMode) { 200if (isDevMode) {
203 app.setPath('userData', path.join(app.getPath('appData'), `${app.name}Dev`)); 201 app.setPath('userData', path.join(app.getPath('appData'), `${app.name}Dev`));
204} 202}
diff --git a/src/containers/settings/RecipesScreen.js b/src/containers/settings/RecipesScreen.js
index 40e32ff37..74abcacee 100644
--- a/src/containers/settings/RecipesScreen.js
+++ b/src/containers/settings/RecipesScreen.js
@@ -1,4 +1,5 @@
1import { remote, shell } from 'electron'; 1import { shell } from 'electron';
2import { app } from '@electron/remote';
2import fs from 'fs-extra'; 3import fs from 'fs-extra';
3import React, { Component } from 'react'; 4import React, { Component } from 'react';
4import PropTypes from 'prop-types'; 5import PropTypes from 'prop-types';
@@ -17,8 +18,6 @@ import { FRANZ_DEV_DOCS, RECIPES_PATH } from '../../config';
17import { communityRecipesStore } from '../../features/communityRecipes'; 18import { communityRecipesStore } from '../../features/communityRecipes';
18import RecipePreview from '../../models/RecipePreview'; 19import RecipePreview from '../../models/RecipePreview';
19 20
20const { app } = remote;
21
22export default @inject('stores', 'actions') @observer class RecipesScreen extends Component { 21export default @inject('stores', 'actions') @observer class RecipesScreen extends Component {
23 static propTypes = { 22 static propTypes = {
24 params: PropTypes.shape({ 23 params: PropTypes.shape({
diff --git a/src/containers/subscription/SubscriptionFormScreen.js b/src/containers/subscription/SubscriptionFormScreen.js
index 38e46a7ba..2d1f3d0eb 100644
--- a/src/containers/subscription/SubscriptionFormScreen.js
+++ b/src/containers/subscription/SubscriptionFormScreen.js
@@ -1,5 +1,5 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import { remote } from 'electron'; 2import { BrowserWindow, getCurrentWindow } from '@electron/remote';
3import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
4import { inject, observer } from 'mobx-react'; 4import { inject, observer } from 'mobx-react';
5 5
@@ -8,8 +8,6 @@ import PaymentStore from '../../stores/PaymentStore';
8import SubscriptionForm from '../../components/subscription/SubscriptionForm'; 8import SubscriptionForm from '../../components/subscription/SubscriptionForm';
9import TrialForm from '../../components/subscription/TrialForm'; 9import TrialForm from '../../components/subscription/TrialForm';
10 10
11const { BrowserWindow } = remote;
12
13export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component { 11export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component {
14 static propTypes = { 12 static propTypes = {
15 onCloseWindow: PropTypes.func, 13 onCloseWindow: PropTypes.func,
@@ -34,7 +32,7 @@ export default @inject('stores', 'actions') @observer class SubscriptionFormScre
34 hostedPageURL = user.getAuthURL(hostedPageURL); 32 hostedPageURL = user.getAuthURL(hostedPageURL);
35 33
36 const paymentWindow = new BrowserWindow({ 34 const paymentWindow = new BrowserWindow({
37 parent: remote.getCurrentWindow(), 35 parent: getCurrentWindow(),
38 modal: true, 36 modal: true,
39 title: '🔒 Franz Supporter License', 37 title: '🔒 Franz Supporter License',
40 width: 800, 38 width: 800,
@@ -44,6 +42,8 @@ export default @inject('stores', 'actions') @observer class SubscriptionFormScre
44 webPreferences: { 42 webPreferences: {
45 nodeIntegration: true, 43 nodeIntegration: true,
46 webviewTag: true, 44 webviewTag: true,
45 enableRemoteModule: true,
46 contextIsolation: false,
47 }, 47 },
48 }); 48 });
49 paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPageURL)}`); 49 paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPageURL)}`);
diff --git a/src/electron/webview-ime-focus.js b/src/electron/webview-ime-focus.js
index b41232b63..b9421eb06 100644
--- a/src/electron/webview-ime-focus.js
+++ b/src/electron/webview-ime-focus.js
@@ -1,4 +1,4 @@
1const { remote } = require('electron'); 1const { webContents } = require('@electron/remote');
2const { releaseDocumentFocus } = require('./webview-ime-focus-helpers'); 2const { releaseDocumentFocus } = require('./webview-ime-focus-helpers');
3 3
4function giveWebviewDocumentFocus(element) { 4function giveWebviewDocumentFocus(element) {
@@ -10,7 +10,7 @@ function giveWebviewDocumentFocus(element) {
10} 10}
11 11
12function elementIsUnfocusedWebview(element) { 12function elementIsUnfocusedWebview(element) {
13 return element.tagName === 'WEBVIEW' && !remote.webContents.fromId(element.getWebContentsId()).isFocused(); 13 return element.tagName === 'WEBVIEW' && !webContents.fromId(element.getWebContentsId()).isFocused();
14} 14}
15 15
16function webviewDidAutofocus(element) { 16function webviewDidAutofocus(element) {
diff --git a/src/environment.js b/src/environment.js
index 6c889f7d8..1aa0def04 100644
--- a/src/environment.js
+++ b/src/environment.js
@@ -1,5 +1,3 @@
1import isDev from 'electron-is-dev';
2
3import { 1import {
4 LIVE_API, 2 LIVE_API,
5 DEV_API, 3 DEV_API,
@@ -14,7 +12,10 @@ import {
14 PRODUCTION_TODOS_FRONTEND_URL, 12 PRODUCTION_TODOS_FRONTEND_URL,
15} from './config'; 13} from './config';
16 14
17export const isDevMode = isDev; 15// eslint-disable-next-line global-require
16export const { app } = process.type === 'renderer' ? require('@electron/remote') : require('electron');
17
18export const isDevMode = !app.isPackaged;
18export const useLiveAPI = process.env.LIVE_API; 19export const useLiveAPI = process.env.LIVE_API;
19export const useLocalAPI = process.env.LOCAL_API; 20export const useLocalAPI = process.env.LOCAL_API;
20 21
diff --git a/src/features/announcements/api.js b/src/features/announcements/api.js
index e5c5a7d6f..2ab5a15b2 100644
--- a/src/features/announcements/api.js
+++ b/src/features/announcements/api.js
@@ -1,4 +1,4 @@
1import { remote } from 'electron'; 1import { app } from '@electron/remote';
2import Request from '../../stores/lib/Request'; 2import Request from '../../stores/lib/Request';
3 3
4const debug = require('debug')('Ferdi:feature:announcements:api'); 4const debug = require('debug')('Ferdi:feature:announcements:api');
@@ -6,7 +6,7 @@ const debug = require('debug')('Ferdi:feature:announcements:api');
6export const announcementsApi = { 6export const announcementsApi = {
7 async getCurrentVersion() { 7 async getCurrentVersion() {
8 debug('getting current version of electron app'); 8 debug('getting current version of electron app');
9 return Promise.resolve(remote.app.getVersion()); 9 return Promise.resolve(app.getVersion());
10 }, 10 },
11 11
12 async getChangelog(version) { 12 async getChangelog(version) {
diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js
index e4d85cda5..fba65506e 100644
--- a/src/features/planSelection/containers/PlanSelectionScreen.js
+++ b/src/features/planSelection/containers/PlanSelectionScreen.js
@@ -1,7 +1,7 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import { observer, inject } from 'mobx-react'; 2import { observer, inject } from 'mobx-react';
3import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
4import { remote } from 'electron'; 4import { dialog, app } from '@electron/remote';
5import { defineMessages, intlShape } from 'react-intl'; 5import { defineMessages, intlShape } from 'react-intl';
6 6
7import FeaturesStore from '../../../stores/FeaturesStore'; 7import FeaturesStore from '../../../stores/FeaturesStore';
@@ -10,8 +10,6 @@ import PlanSelection from '../components/PlanSelection';
10import ErrorBoundary from '../../../components/util/ErrorBoundary'; 10import ErrorBoundary from '../../../components/util/ErrorBoundary';
11import { planSelectionStore } from '..'; 11import { planSelectionStore } from '..';
12 12
13const { dialog, app } = remote;
14
15const messages = defineMessages({ 13const messages = defineMessages({
16 dialogTitle: { 14 dialogTitle: {
17 id: 'feature.planSelection.fullscreen.dialog.title', 15 id: 'feature.planSelection.fullscreen.dialog.title',
diff --git a/src/features/quickSwitch/Component.js b/src/features/quickSwitch/Component.js
index 58479e7ef..c5c320f52 100644
--- a/src/features/quickSwitch/Component.js
+++ b/src/features/quickSwitch/Component.js
@@ -1,5 +1,5 @@
1import React, { Component, createRef } from 'react'; 1import React, { Component, createRef } from 'react';
2import { remote } from 'electron'; 2import { getCurrentWindow } from '@electron/remote';
3import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
4import { observer, inject } from 'mobx-react'; 4import { observer, inject } from 'mobx-react';
5import { reaction } from 'mobx'; 5import { reaction } from 'mobx';
@@ -244,8 +244,8 @@ export default @injectSheet(styles) @inject('stores', 'actions') @observer class
244 if (isModalVisible && !this.state.wasPrevVisible) { 244 if (isModalVisible && !this.state.wasPrevVisible) {
245 // Set focus back on current window if its in a service 245 // Set focus back on current window if its in a service
246 // TODO: Find a way to gain back focus 246 // TODO: Find a way to gain back focus
247 remote.getCurrentWindow().blurWebView(); 247 getCurrentWindow().blurWebView();
248 remote.getCurrentWindow().webContents.focus(); 248 getCurrentWindow().webContents.focus();
249 249
250 // The input "focus" attribute will only work on first modal open 250 // The input "focus" attribute will only work on first modal open
251 // Manually add focus to the input element 251 // Manually add focus to the input element
diff --git a/src/features/serviceProxy/index.js b/src/features/serviceProxy/index.js
index e78607667..f74f5f0b2 100644
--- a/src/features/serviceProxy/index.js
+++ b/src/features/serviceProxy/index.js
@@ -1,9 +1,5 @@
1import { autorun, observable } from 'mobx'; 1import { autorun, observable } from 'mobx';
2import { remote } from 'electron'; 2import { session } from '@electron/remote';
3
4// import { DEFAULT_FEATURES_CONFIG } from '../../config';
5
6const { session } = remote;
7 3
8const debug = require('debug')('Ferdi:feature:serviceProxy'); 4const debug = require('debug')('Ferdi:feature:serviceProxy');
9 5
@@ -16,8 +12,6 @@ export default function init(stores) {
16 debug('Initializing `serviceProxy` feature'); 12 debug('Initializing `serviceProxy` feature');
17 13
18 autorun(() => { 14 autorun(() => {
19 // const { isServiceProxyEnabled, isServiceProxyIncludedInCurrentPlan } = stores.features.features;
20
21 config.isEnabled = true; 15 config.isEnabled = true;
22 config.isIncludedInCurrentPlan = true; 16 config.isIncludedInCurrentPlan = true;
23 17
diff --git a/src/features/workspaces/components/WorkspaceDrawerItem.js b/src/features/workspaces/components/WorkspaceDrawerItem.js
index 18f424d8a..2e58b70d6 100644
--- a/src/features/workspaces/components/WorkspaceDrawerItem.js
+++ b/src/features/workspaces/components/WorkspaceDrawerItem.js
@@ -1,4 +1,4 @@
1import { remote } from 'electron'; 1import { Menu, getCurrentWindow } from '@electron/remote';
2import React, { Component } from 'react'; 2import React, { Component } from 'react';
3import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
4import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
@@ -7,8 +7,6 @@ import classnames from 'classnames';
7import { defineMessages, intlShape } from 'react-intl'; 7import { defineMessages, intlShape } from 'react-intl';
8import { ctrlKey } from '../../../environment'; 8import { ctrlKey } from '../../../environment';
9 9
10const { Menu } = remote;
11
12const messages = defineMessages({ 10const messages = defineMessages({
13 noServicesAddedYet: { 11 noServicesAddedYet: {
14 id: 'workspaceDrawer.item.noServicesAddedYet', 12 id: 'workspaceDrawer.item.noServicesAddedYet',
@@ -113,7 +111,7 @@ class WorkspaceDrawerItem extends Component {
113 ])} 111 ])}
114 onClick={onClick} 112 onClick={onClick}
115 onContextMenu={() => ( 113 onContextMenu={() => (
116 onContextMenuEditClick && contextMenu.popup(remote.getCurrentWindow()) 114 onContextMenuEditClick && contextMenu.popup(getCurrentWindow())
117 )} 115 )}
118 data-tip={`${shortcutIndex <= 9 ? `(${ctrlKey}+Alt+${shortcutIndex})` : ''}`} 116 data-tip={`${shortcutIndex <= 9 ? `(${ctrlKey}+Alt+${shortcutIndex})` : ''}`}
119 > 117 >
diff --git a/src/helpers/recipe-helpers.js b/src/helpers/recipe-helpers.js
index a31c29e72..7daa0aaab 100644
--- a/src/helpers/recipe-helpers.js
+++ b/src/helpers/recipe-helpers.js
@@ -1,9 +1,5 @@
1import path from 'path'; 1import path from 'path';
2import { remote } from 'electron'; 2import { app } from '@electron/remote';
3
4// import ServiceModel from '../models/Service';
5
6const { app } = remote;
7 3
8export function getRecipeDirectory(id = '') { 4export function getRecipeDirectory(id = '') {
9 return path.join(app.getPath('userData'), 'recipes', id); 5 return path.join(app.getPath('userData'), 'recipes', id);
diff --git a/src/helpers/service-helpers.js b/src/helpers/service-helpers.js
index 83f89f108..f6363aca8 100644
--- a/src/helpers/service-helpers.js
+++ b/src/helpers/service-helpers.js
@@ -1,9 +1,7 @@
1import path from 'path'; 1import path from 'path';
2import { remote } from 'electron'; 2import { app } from '@electron/remote';
3import fs from 'fs-extra'; 3import fs from 'fs-extra';
4 4
5const { app } = remote;
6
7export function getServicePartitionsDirectory() { 5export function getServicePartitionsDirectory() {
8 return path.join(app.getPath('userData'), 'Partitions'); 6 return path.join(app.getPath('userData'), 'Partitions');
9} 7}
diff --git a/src/helpers/userAgent-helpers.js b/src/helpers/userAgent-helpers.js
index fd0d16e2d..c5eee0082 100644
--- a/src/helpers/userAgent-helpers.js
+++ b/src/helpers/userAgent-helpers.js
@@ -1,11 +1,8 @@
1import { remote, app } from 'electron';
2import os from 'os'; 1import os from 'os';
3import macosVersion from 'macos-version'; 2import macosVersion from 'macos-version';
4import { isMac, isWindows } from '../environment'; 3import { app, isMac, isWindows } from '../environment';
5 4
6// This helper gets included from the backend and frontend but we only need to use "remote" 5export const ferdiVersion = app.getVersion();
7// if we are in the frontend
8export const ferdiVersion = remote && remote.app ? remote.app.getVersion() : app.getVersion();
9 6
10function macOS() { 7function macOS() {
11 const version = macosVersion(); 8 const version = macosVersion();
diff --git a/src/i18n/messages/src/components/auth/Locked.json b/src/i18n/messages/src/components/auth/Locked.json
index ed3999114..a871d6fc8 100644
--- a/src/i18n/messages/src/components/auth/Locked.json
+++ b/src/i18n/messages/src/components/auth/Locked.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Locked", 4 "defaultMessage": "!!!Locked",
5 "file": "src/components/auth/Locked.js", 5 "file": "src/components/auth/Locked.js",
6 "start": { 6 "start": {
7 "line": 20, 7 "line": 16,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 23, 11 "line": 19,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", 17 "defaultMessage": "!!!Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
18 "file": "src/components/auth/Locked.js", 18 "file": "src/components/auth/Locked.js",
19 "start": { 19 "start": {
20 "line": 24, 20 "line": 20,
21 "column": 8 21 "column": 8
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 27, 24 "line": 23,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Unlock with Touch ID", 30 "defaultMessage": "!!!Unlock with Touch ID",
31 "file": "src/components/auth/Locked.js", 31 "file": "src/components/auth/Locked.js",
32 "start": { 32 "start": {
33 "line": 28, 33 "line": 24,
34 "column": 11 34 "column": 11
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 31, 37 "line": 27,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!unlock via Touch ID", 43 "defaultMessage": "!!!unlock via Touch ID",
44 "file": "src/components/auth/Locked.js", 44 "file": "src/components/auth/Locked.js",
45 "start": { 45 "start": {
46 "line": 32, 46 "line": 28,
47 "column": 17 47 "column": 17
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 35, 50 "line": 31,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Password", 56 "defaultMessage": "!!!Password",
57 "file": "src/components/auth/Locked.js", 57 "file": "src/components/auth/Locked.js",
58 "start": { 58 "start": {
59 "line": 36, 59 "line": 32,
60 "column": 17 60 "column": 17
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 39, 63 "line": 35,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Unlock", 69 "defaultMessage": "!!!Unlock",
70 "file": "src/components/auth/Locked.js", 70 "file": "src/components/auth/Locked.js",
71 "start": { 71 "start": {
72 "line": 40, 72 "line": 36,
73 "column": 21 73 "column": 21
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 43, 76 "line": 39,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Unlock with Password", 82 "defaultMessage": "!!!Unlock with Password",
83 "file": "src/components/auth/Locked.js", 83 "file": "src/components/auth/Locked.js",
84 "start": { 84 "start": {
85 "line": 44, 85 "line": 40,
86 "column": 22 86 "column": 22
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 47, 89 "line": 43,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Password invalid", 95 "defaultMessage": "!!!Password invalid",
96 "file": "src/components/auth/Locked.js", 96 "file": "src/components/auth/Locked.js",
97 "start": { 97 "start": {
98 "line": 48, 98 "line": 44,
99 "column": 22 99 "column": 22
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 51, 102 "line": 47,
103 "column": 3 103 "column": 3
104 } 104 }
105 } 105 }
diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
index ecac749db..68c04e434 100644
--- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
+++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Settings", 4 "defaultMessage": "!!!Settings",
5 "file": "src/components/settings/settings/EditSettingsForm.js", 5 "file": "src/components/settings/settings/EditSettingsForm.js",
6 "start": { 6 "start": {
7 "line": 27, 7 "line": 23,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 30, 11 "line": 26,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!General", 17 "defaultMessage": "!!!General",
18 "file": "src/components/settings/settings/EditSettingsForm.js", 18 "file": "src/components/settings/settings/EditSettingsForm.js",
19 "start": { 19 "start": {
20 "line": 31, 20 "line": 27,
21 "column": 19 21 "column": 19
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 34, 24 "line": 30,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data! Changing this option requires you to restart Ferdi.", 30 "defaultMessage": "!!!Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data! Changing this option requires you to restart Ferdi.",
31 "file": "src/components/settings/settings/EditSettingsForm.js", 31 "file": "src/components/settings/settings/EditSettingsForm.js",
32 "start": { 32 "start": {
33 "line": 35, 33 "line": 31,
34 "column": 14 34 "column": 14
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 38, 37 "line": 34,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 43 "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
44 "file": "src/components/settings/settings/EditSettingsForm.js", 44 "file": "src/components/settings/settings/EditSettingsForm.js",
45 "start": { 45 "start": {
46 "line": 39, 46 "line": 35,
47 "column": 17 47 "column": 17
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 42, 50 "line": 38,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 56 "defaultMessage": "!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
57 "file": "src/components/settings/settings/EditSettingsForm.js", 57 "file": "src/components/settings/settings/EditSettingsForm.js",
58 "start": { 58 "start": {
59 "line": 43, 59 "line": 39,
60 "column": 22 60 "column": 22
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 46, 63 "line": 42,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)", 69 "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)",
70 "file": "src/components/settings/settings/EditSettingsForm.js", 70 "file": "src/components/settings/settings/EditSettingsForm.js",
71 "start": { 71 "start": {
72 "line": 47, 72 "line": 43,
73 "column": 18 73 "column": 18
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 50, 76 "line": 46,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Password", 82 "defaultMessage": "!!!Password",
83 "file": "src/components/settings/settings/EditSettingsForm.js", 83 "file": "src/components/settings/settings/EditSettingsForm.js",
84 "start": { 84 "start": {
85 "line": 51, 85 "line": 47,
86 "column": 18 86 "column": 18
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 54, 89 "line": 50,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 95 "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
96 "file": "src/components/settings/settings/EditSettingsForm.js", 96 "file": "src/components/settings/settings/EditSettingsForm.js",
97 "start": { 97 "start": {
98 "line": 55, 98 "line": 51,
99 "column": 22 99 "column": 22
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 58, 102 "line": 54,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", 108 "defaultMessage": "!!!Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.",
109 "file": "src/components/settings/settings/EditSettingsForm.js", 109 "file": "src/components/settings/settings/EditSettingsForm.js",
110 "start": { 110 "start": {
111 "line": 59, 111 "line": 55,
112 "column": 12 112 "column": 12
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 62, 115 "line": 58,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,11 @@
121 "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", 121 "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.",
122 "file": "src/components/settings/settings/EditSettingsForm.js", 122 "file": "src/components/settings/settings/EditSettingsForm.js",
123 "start": { 123 "start": {
124 "line": 63, 124 "line": 59,
125 "column": 24 125 "column": 24
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 66, 128 "line": 62,
129 "column": 3 129 "column": 3
130 } 130 }
131 }, 131 },
@@ -134,11 +134,11 @@
134 "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", 134 "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.",
135 "file": "src/components/settings/settings/EditSettingsForm.js", 135 "file": "src/components/settings/settings/EditSettingsForm.js",
136 "start": { 136 "start": {
137 "line": 67, 137 "line": 63,
138 "column": 20 138 "column": 20
139 }, 139 },
140 "end": { 140 "end": {
141 "line": 70, 141 "line": 66,
142 "column": 3 142 "column": 3
143 } 143 }
144 }, 144 },
@@ -147,11 +147,11 @@
147 "defaultMessage": "!!!Language", 147 "defaultMessage": "!!!Language",
148 "file": "src/components/settings/settings/EditSettingsForm.js", 148 "file": "src/components/settings/settings/EditSettingsForm.js",
149 "start": { 149 "start": {
150 "line": 71, 150 "line": 67,
151 "column": 20 151 "column": 20
152 }, 152 },
153 "end": { 153 "end": {
154 "line": 74, 154 "line": 70,
155 "column": 3 155 "column": 3
156 } 156 }
157 }, 157 },
@@ -160,11 +160,11 @@
160 "defaultMessage": "!!!Updates", 160 "defaultMessage": "!!!Updates",
161 "file": "src/components/settings/settings/EditSettingsForm.js", 161 "file": "src/components/settings/settings/EditSettingsForm.js",
162 "start": { 162 "start": {
163 "line": 75, 163 "line": 71,
164 "column": 19 164 "column": 19
165 }, 165 },
166 "end": { 166 "end": {
167 "line": 78, 167 "line": 74,
168 "column": 3 168 "column": 3
169 } 169 }
170 }, 170 },
@@ -173,11 +173,11 @@
173 "defaultMessage": "!!!Appearance", 173 "defaultMessage": "!!!Appearance",
174 "file": "src/components/settings/settings/EditSettingsForm.js", 174 "file": "src/components/settings/settings/EditSettingsForm.js",
175 "start": { 175 "start": {
176 "line": 79, 176 "line": 75,
177 "column": 22 177 "column": 22
178 }, 178 },
179 "end": { 179 "end": {
180 "line": 82, 180 "line": 78,
181 "column": 3 181 "column": 3
182 } 182 }
183 }, 183 },
@@ -186,11 +186,11 @@
186 "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", 186 "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.",
187 "file": "src/components/settings/settings/EditSettingsForm.js", 187 "file": "src/components/settings/settings/EditSettingsForm.js",
188 "start": { 188 "start": {
189 "line": 83, 189 "line": 79,
190 "column": 25 190 "column": 25
191 }, 191 },
192 "end": { 192 "end": {
193 "line": 86, 193 "line": 82,
194 "column": 3 194 "column": 3
195 } 195 }
196 }, 196 },
@@ -199,11 +199,11 @@
199 "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})", 199 "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})",
200 "file": "src/components/settings/settings/EditSettingsForm.js", 200 "file": "src/components/settings/settings/EditSettingsForm.js",
201 "start": { 201 "start": {
202 "line": 87, 202 "line": 83,
203 "column": 19 203 "column": 19
204 }, 204 },
205 "end": { 205 "end": {
206 "line": 90, 206 "line": 86,
207 "column": 3 207 "column": 3
208 } 208 }
209 }, 209 },
@@ -212,11 +212,11 @@
212 "defaultMessage": "!!!Privacy", 212 "defaultMessage": "!!!Privacy",
213 "file": "src/components/settings/settings/EditSettingsForm.js", 213 "file": "src/components/settings/settings/EditSettingsForm.js",
214 "start": { 214 "start": {
215 "line": 91, 215 "line": 87,
216 "column": 19 216 "column": 19
217 }, 217 },
218 "end": { 218 "end": {
219 "line": 94, 219 "line": 90,
220 "column": 3 220 "column": 3
221 } 221 }
222 }, 222 },
@@ -225,11 +225,11 @@
225 "defaultMessage": "!!!Advanced", 225 "defaultMessage": "!!!Advanced",
226 "file": "src/components/settings/settings/EditSettingsForm.js", 226 "file": "src/components/settings/settings/EditSettingsForm.js",
227 "start": { 227 "start": {
228 "line": 95, 228 "line": 91,
229 "column": 20 229 "column": 20
230 }, 230 },
231 "end": { 231 "end": {
232 "line": 98, 232 "line": 94,
233 "column": 3 233 "column": 3
234 } 234 }
235 }, 235 },
@@ -238,11 +238,11 @@
238 "defaultMessage": "!!!Help us to translate Ferdi into your language.", 238 "defaultMessage": "!!!Help us to translate Ferdi into your language.",
239 "file": "src/components/settings/settings/EditSettingsForm.js", 239 "file": "src/components/settings/settings/EditSettingsForm.js",
240 "start": { 240 "start": {
241 "line": 99, 241 "line": 95,
242 "column": 19 242 "column": 19
243 }, 243 },
244 "end": { 244 "end": {
245 "line": 102, 245 "line": 98,
246 "column": 3 246 "column": 3
247 } 247 }
248 }, 248 },
@@ -251,11 +251,11 @@
251 "defaultMessage": "!!!Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.", 251 "defaultMessage": "!!!Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.",
252 "file": "src/components/settings/settings/EditSettingsForm.js", 252 "file": "src/components/settings/settings/EditSettingsForm.js",
253 "start": { 253 "start": {
254 "line": 103, 254 "line": 99,
255 "column": 28 255 "column": 28
256 }, 256 },
257 "end": { 257 "end": {
258 "line": 106, 258 "line": 102,
259 "column": 3 259 "column": 3
260 } 260 }
261 }, 261 },
@@ -264,11 +264,11 @@
264 "defaultMessage": "!!!Cache", 264 "defaultMessage": "!!!Cache",
265 "file": "src/components/settings/settings/EditSettingsForm.js", 265 "file": "src/components/settings/settings/EditSettingsForm.js",
266 "start": { 266 "start": {
267 "line": 107, 267 "line": 103,
268 "column": 20 268 "column": 20
269 }, 269 },
270 "end": { 270 "end": {
271 "line": 110, 271 "line": 106,
272 "column": 3 272 "column": 3
273 } 273 }
274 }, 274 },
@@ -277,11 +277,11 @@
277 "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", 277 "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.",
278 "file": "src/components/settings/settings/EditSettingsForm.js", 278 "file": "src/components/settings/settings/EditSettingsForm.js",
279 "start": { 279 "start": {
280 "line": 111, 280 "line": 107,
281 "column": 13 281 "column": 13
282 }, 282 },
283 "end": { 283 "end": {
284 "line": 114, 284 "line": 110,
285 "column": 3 285 "column": 3
286 } 286 }
287 }, 287 },
@@ -290,11 +290,11 @@
290 "defaultMessage": "!!!Couldn't clear all cache", 290 "defaultMessage": "!!!Couldn't clear all cache",
291 "file": "src/components/settings/settings/EditSettingsForm.js", 291 "file": "src/components/settings/settings/EditSettingsForm.js",
292 "start": { 292 "start": {
293 "line": 115, 293 "line": 111,
294 "column": 19 294 "column": 19
295 }, 295 },
296 "end": { 296 "end": {
297 "line": 118, 297 "line": 114,
298 "column": 3 298 "column": 3
299 } 299 }
300 }, 300 },
@@ -303,11 +303,11 @@
303 "defaultMessage": "!!!Clear cache", 303 "defaultMessage": "!!!Clear cache",
304 "file": "src/components/settings/settings/EditSettingsForm.js", 304 "file": "src/components/settings/settings/EditSettingsForm.js",
305 "start": { 305 "start": {
306 "line": 119, 306 "line": 115,
307 "column": 23 307 "column": 23
308 }, 308 },
309 "end": { 309 "end": {
310 "line": 122, 310 "line": 118,
311 "column": 3 311 "column": 3
312 } 312 }
313 }, 313 },
@@ -316,11 +316,11 @@
316 "defaultMessage": "!!!Check for updates", 316 "defaultMessage": "!!!Check for updates",
317 "file": "src/components/settings/settings/EditSettingsForm.js", 317 "file": "src/components/settings/settings/EditSettingsForm.js",
318 "start": { 318 "start": {
319 "line": 123, 319 "line": 119,
320 "column": 25 320 "column": 25
321 }, 321 },
322 "end": { 322 "end": {
323 "line": 126, 323 "line": 122,
324 "column": 3 324 "column": 3
325 } 325 }
326 }, 326 },
@@ -329,11 +329,11 @@
329 "defaultMessage": "!!!Restart & install update", 329 "defaultMessage": "!!!Restart & install update",
330 "file": "src/components/settings/settings/EditSettingsForm.js", 330 "file": "src/components/settings/settings/EditSettingsForm.js",
331 "start": { 331 "start": {
332 "line": 127, 332 "line": 123,
333 "column": 23 333 "column": 23
334 }, 334 },
335 "end": { 335 "end": {
336 "line": 130, 336 "line": 126,
337 "column": 3 337 "column": 3
338 } 338 }
339 }, 339 },
@@ -342,11 +342,11 @@
342 "defaultMessage": "!!!Is searching for update", 342 "defaultMessage": "!!!Is searching for update",
343 "file": "src/components/settings/settings/EditSettingsForm.js", 343 "file": "src/components/settings/settings/EditSettingsForm.js",
344 "start": { 344 "start": {
345 "line": 131, 345 "line": 127,
346 "column": 25 346 "column": 25
347 }, 347 },
348 "end": { 348 "end": {
349 "line": 134, 349 "line": 130,
350 "column": 3 350 "column": 3
351 } 351 }
352 }, 352 },
@@ -355,11 +355,11 @@
355 "defaultMessage": "!!!Update available, downloading...", 355 "defaultMessage": "!!!Update available, downloading...",
356 "file": "src/components/settings/settings/EditSettingsForm.js", 356 "file": "src/components/settings/settings/EditSettingsForm.js",
357 "start": { 357 "start": {
358 "line": 135, 358 "line": 131,
359 "column": 25 359 "column": 25
360 }, 360 },
361 "end": { 361 "end": {
362 "line": 138, 362 "line": 134,
363 "column": 3 363 "column": 3
364 } 364 }
365 }, 365 },
@@ -368,11 +368,11 @@
368 "defaultMessage": "!!!You are using the latest version of Ferdi", 368 "defaultMessage": "!!!You are using the latest version of Ferdi",
369 "file": "src/components/settings/settings/EditSettingsForm.js", 369 "file": "src/components/settings/settings/EditSettingsForm.js",
370 "start": { 370 "start": {
371 "line": 139, 371 "line": 135,
372 "column": 24 372 "column": 24
373 }, 373 },
374 "end": { 374 "end": {
375 "line": 142, 375 "line": 138,
376 "column": 3 376 "column": 3
377 } 377 }
378 }, 378 },
@@ -381,11 +381,11 @@
381 "defaultMessage": "!!!Current version:", 381 "defaultMessage": "!!!Current version:",
382 "file": "src/components/settings/settings/EditSettingsForm.js", 382 "file": "src/components/settings/settings/EditSettingsForm.js",
383 "start": { 383 "start": {
384 "line": 143, 384 "line": 139,
385 "column": 18 385 "column": 18
386 }, 386 },
387 "end": { 387 "end": {
388 "line": 146, 388 "line": 142,
389 "column": 3 389 "column": 3
390 } 390 }
391 }, 391 },
@@ -394,11 +394,11 @@
394 "defaultMessage": "!!!Changes require restart", 394 "defaultMessage": "!!!Changes require restart",
395 "file": "src/components/settings/settings/EditSettingsForm.js", 395 "file": "src/components/settings/settings/EditSettingsForm.js",
396 "start": { 396 "start": {
397 "line": 147, 397 "line": 143,
398 "column": 29 398 "column": 29
399 }, 399 },
400 "end": { 400 "end": {
401 "line": 150, 401 "line": 146,
402 "column": 3 402 "column": 3
403 } 403 }
404 }, 404 },
@@ -407,11 +407,11 @@
407 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", 407 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.",
408 "file": "src/components/settings/settings/EditSettingsForm.js", 408 "file": "src/components/settings/settings/EditSettingsForm.js",
409 "start": { 409 "start": {
410 "line": 151, 410 "line": 147,
411 "column": 22 411 "column": 22
412 }, 412 },
413 "end": { 413 "end": {
414 "line": 154, 414 "line": 150,
415 "column": 3 415 "column": 3
416 } 416 }
417 } 417 }
diff --git a/src/i18n/messages/src/components/settings/supportFerdi/SupportFerdiDashboard.json b/src/i18n/messages/src/components/settings/supportFerdi/SupportFerdiDashboard.json
index d8ec01f17..e63c2801f 100644
--- a/src/i18n/messages/src/components/settings/supportFerdi/SupportFerdiDashboard.json
+++ b/src/i18n/messages/src/components/settings/supportFerdi/SupportFerdiDashboard.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!About Ferdi", 4 "defaultMessage": "!!!About Ferdi",
5 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 5 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
6 "start": { 6 "start": {
7 "line": 9, 7 "line": 7,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 12, 11 "line": 10,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Do you like Ferdi?", 17 "defaultMessage": "!!!Do you like Ferdi?",
18 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 18 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
19 "start": { 19 "start": {
20 "line": 13, 20 "line": 11,
21 "column": 9 21 "column": 9
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 16, 24 "line": 14,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 30 "defaultMessage": "!!!<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
31 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 31 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
32 "start": { 32 "start": {
33 "line": 17, 33 "line": 15,
34 "column": 14 34 "column": 14
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 20, 37 "line": 18,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Full list of contributor", 43 "defaultMessage": "!!!Full list of contributor",
44 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 44 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
45 "start": { 45 "start": {
46 "line": 21, 46 "line": 19,
47 "column": 24 47 "column": 24
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 24, 50 "line": 22,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!here", 56 "defaultMessage": "!!!here",
57 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 57 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
58 "start": { 58 "start": {
59 "line": 25, 59 "line": 23,
60 "column": 28 60 "column": 28
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 28, 63 "line": 26,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 69 "defaultMessage": "!!!The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
70 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 70 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
71 "start": { 71 "start": {
72 "line": 29, 72 "line": 27,
73 "column": 18 73 "column": 18
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 32, 76 "line": 30,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Support is always welcome. You can find a list of the help we need", 82 "defaultMessage": "!!!Support is always welcome. You can find a list of the help we need",
83 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 83 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
84 "start": { 84 "start": {
85 "line": 33, 85 "line": 31,
86 "column": 22 86 "column": 22
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 36, 89 "line": 34,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!here", 95 "defaultMessage": "!!!here",
96 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 96 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
97 "start": { 97 "start": {
98 "line": 37, 98 "line": 35,
99 "column": 26 99 "column": 26
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 40, 102 "line": 38,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 108 "defaultMessage": "!!!While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
109 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 109 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
110 "start": { 110 "start": {
111 "line": 41, 111 "line": 39,
112 "column": 16 112 "column": 16
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 44, 115 "line": 42,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,11 @@
121 "defaultMessage": "!!!Open Collective", 121 "defaultMessage": "!!!Open Collective",
122 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 122 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
123 "start": { 123 "start": {
124 "line": 45, 124 "line": 43,
125 "column": 22 125 "column": 22
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 48, 128 "line": 46,
129 "column": 3 129 "column": 3
130 } 130 }
131 }, 131 },
@@ -134,11 +134,11 @@
134 "defaultMessage": "!!!If you feel like supporting Ferdi development with a donation, you can do so on both,", 134 "defaultMessage": "!!!If you feel like supporting Ferdi development with a donation, you can do so on both,",
135 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 135 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
136 "start": { 136 "start": {
137 "line": 49, 137 "line": 47,
138 "column": 16 138 "column": 16
139 }, 139 },
140 "end": { 140 "end": {
141 "line": 52, 141 "line": 50,
142 "column": 3 142 "column": 3
143 } 143 }
144 }, 144 },
@@ -147,11 +147,11 @@
147 "defaultMessage": "!!!and", 147 "defaultMessage": "!!!and",
148 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 148 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
149 "start": { 149 "start": {
150 "line": 53, 150 "line": 51,
151 "column": 19 151 "column": 19
152 }, 152 },
153 "end": { 153 "end": {
154 "line": 56, 154 "line": 54,
155 "column": 3 155 "column": 3
156 } 156 }
157 }, 157 },
@@ -160,11 +160,11 @@
160 "defaultMessage": "!!!GitHub Sponsors", 160 "defaultMessage": "!!!GitHub Sponsors",
161 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 161 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
162 "start": { 162 "start": {
163 "line": 57, 163 "line": 55,
164 "column": 22 164 "column": 22
165 }, 165 },
166 "end": { 166 "end": {
167 "line": 60, 167 "line": 58,
168 "column": 3 168 "column": 3
169 } 169 }
170 }, 170 },
@@ -173,11 +173,11 @@
173 "defaultMessage": "!!!Open Survey", 173 "defaultMessage": "!!!Open Survey",
174 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 174 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
175 "start": { 175 "start": {
176 "line": 61, 176 "line": 59,
177 "column": 14 177 "column": 14
178 }, 178 },
179 "end": { 179 "end": {
180 "line": 64, 180 "line": 62,
181 "column": 3 181 "column": 3
182 } 182 }
183 }, 183 },
@@ -186,11 +186,11 @@
186 "defaultMessage": "!!!Do you want to help us improve Ferdi?", 186 "defaultMessage": "!!!Do you want to help us improve Ferdi?",
187 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js", 187 "file": "src/components/settings/supportFerdi/SupportFerdiDashboard.js",
188 "start": { 188 "start": {
189 "line": 65, 189 "line": 63,
190 "column": 14 190 "column": 14
191 }, 191 },
192 "end": { 192 "end": {
193 "line": 68, 193 "line": 66,
194 "column": 3 194 "column": 3
195 } 195 }
196 } 196 }
diff --git a/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json
index 04b2144b4..290d1547d 100644
--- a/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json
+++ b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Downgrade your Franz Plan", 4 "defaultMessage": "!!!Downgrade your Franz Plan",
5 "file": "src/features/planSelection/containers/PlanSelectionScreen.js", 5 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
6 "start": { 6 "start": {
7 "line": 16, 7 "line": 14,
8 "column": 15 8 "column": 15
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 19, 11 "line": 17,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", 17 "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
18 "file": "src/features/planSelection/containers/PlanSelectionScreen.js", 18 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
19 "start": { 19 "start": {
20 "line": 20, 20 "line": 18,
21 "column": 17 21 "column": 17
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 23, 24 "line": 21,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Downgrade to Free", 30 "defaultMessage": "!!!Downgrade to Free",
31 "file": "src/features/planSelection/containers/PlanSelectionScreen.js", 31 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
32 "start": { 32 "start": {
33 "line": 24, 33 "line": 22,
34 "column": 22 34 "column": 22
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 27, 37 "line": 25,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Choose Personal", 43 "defaultMessage": "!!!Choose Personal",
44 "file": "src/features/planSelection/containers/PlanSelectionScreen.js", 44 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
45 "start": { 45 "start": {
46 "line": 28, 46 "line": 26,
47 "column": 20 47 "column": 20
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 31, 50 "line": 29,
51 "column": 3 51 "column": 3
52 } 52 }
53 } 53 }
diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json
index 1b6664787..737dee59b 100644
--- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json
+++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!No services added yet", 4 "defaultMessage": "!!!No services added yet",
5 "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", 5 "file": "src/features/workspaces/components/WorkspaceDrawerItem.js",
6 "start": { 6 "start": {
7 "line": 13, 7 "line": 11,
8 "column": 22 8 "column": 22
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 16, 11 "line": 14,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!edit", 17 "defaultMessage": "!!!edit",
18 "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", 18 "file": "src/features/workspaces/components/WorkspaceDrawerItem.js",
19 "start": { 19 "start": {
20 "line": 17, 20 "line": 15,
21 "column": 19 21 "column": 19
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 20, 24 "line": 18,
25 "column": 3 25 "column": 3
26 } 26 }
27 } 27 }
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json
index d5a8d5923..6bb50c012 100644
--- a/src/i18n/messages/src/lib/Menu.json
+++ b/src/i18n/messages/src/lib/Menu.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Edit", 4 "defaultMessage": "!!!Edit",
5 "file": "src/lib/Menu.js", 5 "file": "src/lib/Menu.js",
6 "start": { 6 "start": {
7 "line": 24, 7 "line": 21,
8 "column": 8 8 "column": 8
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 27, 11 "line": 24,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Undo", 17 "defaultMessage": "!!!Undo",
18 "file": "src/lib/Menu.js", 18 "file": "src/lib/Menu.js",
19 "start": { 19 "start": {
20 "line": 28, 20 "line": 25,
21 "column": 8 21 "column": 8
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 31, 24 "line": 28,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Redo", 30 "defaultMessage": "!!!Redo",
31 "file": "src/lib/Menu.js", 31 "file": "src/lib/Menu.js",
32 "start": { 32 "start": {
33 "line": 32, 33 "line": 29,
34 "column": 8 34 "column": 8
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 35, 37 "line": 32,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Cut", 43 "defaultMessage": "!!!Cut",
44 "file": "src/lib/Menu.js", 44 "file": "src/lib/Menu.js",
45 "start": { 45 "start": {
46 "line": 36, 46 "line": 33,
47 "column": 7 47 "column": 7
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 39, 50 "line": 36,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Copy", 56 "defaultMessage": "!!!Copy",
57 "file": "src/lib/Menu.js", 57 "file": "src/lib/Menu.js",
58 "start": { 58 "start": {
59 "line": 40, 59 "line": 37,
60 "column": 8 60 "column": 8
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 43, 63 "line": 40,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Paste", 69 "defaultMessage": "!!!Paste",
70 "file": "src/lib/Menu.js", 70 "file": "src/lib/Menu.js",
71 "start": { 71 "start": {
72 "line": 44, 72 "line": 41,
73 "column": 9 73 "column": 9
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 47, 76 "line": 44,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Paste And Match Style", 82 "defaultMessage": "!!!Paste And Match Style",
83 "file": "src/lib/Menu.js", 83 "file": "src/lib/Menu.js",
84 "start": { 84 "start": {
85 "line": 48, 85 "line": 45,
86 "column": 22 86 "column": 22
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 51, 89 "line": 48,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Delete", 95 "defaultMessage": "!!!Delete",
96 "file": "src/lib/Menu.js", 96 "file": "src/lib/Menu.js",
97 "start": { 97 "start": {
98 "line": 52, 98 "line": 49,
99 "column": 10 99 "column": 10
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 55, 102 "line": 52,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Select All", 108 "defaultMessage": "!!!Select All",
109 "file": "src/lib/Menu.js", 109 "file": "src/lib/Menu.js",
110 "start": { 110 "start": {
111 "line": 56, 111 "line": 53,
112 "column": 13 112 "column": 13
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 59, 115 "line": 56,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,11 @@
121 "defaultMessage": "!!!Find in Page", 121 "defaultMessage": "!!!Find in Page",
122 "file": "src/lib/Menu.js", 122 "file": "src/lib/Menu.js",
123 "start": { 123 "start": {
124 "line": 60, 124 "line": 57,
125 "column": 14 125 "column": 14
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 63, 128 "line": 60,
129 "column": 3 129 "column": 3
130 } 130 }
131 }, 131 },
@@ -134,11 +134,11 @@
134 "defaultMessage": "!!!Speech", 134 "defaultMessage": "!!!Speech",
135 "file": "src/lib/Menu.js", 135 "file": "src/lib/Menu.js",
136 "start": { 136 "start": {
137 "line": 64, 137 "line": 61,
138 "column": 10 138 "column": 10
139 }, 139 },
140 "end": { 140 "end": {
141 "line": 67, 141 "line": 64,
142 "column": 3 142 "column": 3
143 } 143 }
144 }, 144 },
@@ -147,11 +147,11 @@
147 "defaultMessage": "!!!Start Speaking", 147 "defaultMessage": "!!!Start Speaking",
148 "file": "src/lib/Menu.js", 148 "file": "src/lib/Menu.js",
149 "start": { 149 "start": {
150 "line": 68, 150 "line": 65,
151 "column": 17 151 "column": 17
152 }, 152 },
153 "end": { 153 "end": {
154 "line": 71, 154 "line": 68,
155 "column": 3 155 "column": 3
156 } 156 }
157 }, 157 },
@@ -160,11 +160,11 @@
160 "defaultMessage": "!!!Stop Speaking", 160 "defaultMessage": "!!!Stop Speaking",
161 "file": "src/lib/Menu.js", 161 "file": "src/lib/Menu.js",
162 "start": { 162 "start": {
163 "line": 72, 163 "line": 69,
164 "column": 16 164 "column": 16
165 }, 165 },
166 "end": { 166 "end": {
167 "line": 75, 167 "line": 72,
168 "column": 3 168 "column": 3
169 } 169 }
170 }, 170 },
@@ -173,11 +173,11 @@
173 "defaultMessage": "!!!Start Dictation", 173 "defaultMessage": "!!!Start Dictation",
174 "file": "src/lib/Menu.js", 174 "file": "src/lib/Menu.js",
175 "start": { 175 "start": {
176 "line": 76, 176 "line": 73,
177 "column": 18 177 "column": 18
178 }, 178 },
179 "end": { 179 "end": {
180 "line": 79, 180 "line": 76,
181 "column": 3 181 "column": 3
182 } 182 }
183 }, 183 },
@@ -186,11 +186,11 @@
186 "defaultMessage": "!!!Emoji & Symbols", 186 "defaultMessage": "!!!Emoji & Symbols",
187 "file": "src/lib/Menu.js", 187 "file": "src/lib/Menu.js",
188 "start": { 188 "start": {
189 "line": 80, 189 "line": 77,
190 "column": 16 190 "column": 16
191 }, 191 },
192 "end": { 192 "end": {
193 "line": 83, 193 "line": 80,
194 "column": 3 194 "column": 3
195 } 195 }
196 }, 196 },
@@ -199,11 +199,11 @@
199 "defaultMessage": "!!!Open Quick Switch", 199 "defaultMessage": "!!!Open Quick Switch",
200 "file": "src/lib/Menu.js", 200 "file": "src/lib/Menu.js",
201 "start": { 201 "start": {
202 "line": 84, 202 "line": 81,
203 "column": 19 203 "column": 19
204 }, 204 },
205 "end": { 205 "end": {
206 "line": 87, 206 "line": 84,
207 "column": 3 207 "column": 3
208 } 208 }
209 }, 209 },
@@ -212,11 +212,11 @@
212 "defaultMessage": "!!!Back", 212 "defaultMessage": "!!!Back",
213 "file": "src/lib/Menu.js", 213 "file": "src/lib/Menu.js",
214 "start": { 214 "start": {
215 "line": 88, 215 "line": 85,
216 "column": 8 216 "column": 8
217 }, 217 },
218 "end": { 218 "end": {
219 "line": 91, 219 "line": 88,
220 "column": 3 220 "column": 3
221 } 221 }
222 }, 222 },
@@ -225,11 +225,11 @@
225 "defaultMessage": "!!!Forward", 225 "defaultMessage": "!!!Forward",
226 "file": "src/lib/Menu.js", 226 "file": "src/lib/Menu.js",
227 "start": { 227 "start": {
228 "line": 92, 228 "line": 89,
229 "column": 11 229 "column": 11
230 }, 230 },
231 "end": { 231 "end": {
232 "line": 95, 232 "line": 92,
233 "column": 3 233 "column": 3
234 } 234 }
235 }, 235 },
@@ -238,11 +238,11 @@
238 "defaultMessage": "!!!Actual Size", 238 "defaultMessage": "!!!Actual Size",
239 "file": "src/lib/Menu.js", 239 "file": "src/lib/Menu.js",
240 "start": { 240 "start": {
241 "line": 96, 241 "line": 93,
242 "column": 13 242 "column": 13
243 }, 243 },
244 "end": { 244 "end": {
245 "line": 99, 245 "line": 96,
246 "column": 3 246 "column": 3
247 } 247 }
248 }, 248 },
@@ -251,11 +251,11 @@
251 "defaultMessage": "!!!Zoom In", 251 "defaultMessage": "!!!Zoom In",
252 "file": "src/lib/Menu.js", 252 "file": "src/lib/Menu.js",
253 "start": { 253 "start": {
254 "line": 100, 254 "line": 97,
255 "column": 10 255 "column": 10
256 }, 256 },
257 "end": { 257 "end": {
258 "line": 103, 258 "line": 100,
259 "column": 3 259 "column": 3
260 } 260 }
261 }, 261 },
@@ -264,11 +264,11 @@
264 "defaultMessage": "!!!Zoom Out", 264 "defaultMessage": "!!!Zoom Out",
265 "file": "src/lib/Menu.js", 265 "file": "src/lib/Menu.js",
266 "start": { 266 "start": {
267 "line": 104, 267 "line": 101,
268 "column": 11 268 "column": 11
269 }, 269 },
270 "end": { 270 "end": {
271 "line": 107, 271 "line": 104,
272 "column": 3 272 "column": 3
273 } 273 }
274 }, 274 },
@@ -277,11 +277,11 @@
277 "defaultMessage": "!!!Enter Full Screen", 277 "defaultMessage": "!!!Enter Full Screen",
278 "file": "src/lib/Menu.js", 278 "file": "src/lib/Menu.js",
279 "start": { 279 "start": {
280 "line": 108, 280 "line": 105,
281 "column": 19 281 "column": 19
282 }, 282 },
283 "end": { 283 "end": {
284 "line": 111, 284 "line": 108,
285 "column": 3 285 "column": 3
286 } 286 }
287 }, 287 },
@@ -290,11 +290,11 @@
290 "defaultMessage": "!!!Exit Full Screen", 290 "defaultMessage": "!!!Exit Full Screen",
291 "file": "src/lib/Menu.js", 291 "file": "src/lib/Menu.js",
292 "start": { 292 "start": {
293 "line": 112, 293 "line": 109,
294 "column": 18 294 "column": 18
295 }, 295 },
296 "end": { 296 "end": {
297 "line": 115, 297 "line": 112,
298 "column": 3 298 "column": 3
299 } 299 }
300 }, 300 },
@@ -303,11 +303,11 @@
303 "defaultMessage": "!!!Toggle Full Screen", 303 "defaultMessage": "!!!Toggle Full Screen",
304 "file": "src/lib/Menu.js", 304 "file": "src/lib/Menu.js",
305 "start": { 305 "start": {
306 "line": 116, 306 "line": 113,
307 "column": 20 307 "column": 20
308 }, 308 },
309 "end": { 309 "end": {
310 "line": 119, 310 "line": 116,
311 "column": 3 311 "column": 3
312 } 312 }
313 }, 313 },
@@ -316,11 +316,11 @@
316 "defaultMessage": "!!!Toggle Dark Mode", 316 "defaultMessage": "!!!Toggle Dark Mode",
317 "file": "src/lib/Menu.js", 317 "file": "src/lib/Menu.js",
318 "start": { 318 "start": {
319 "line": 120, 319 "line": 117,
320 "column": 18 320 "column": 18
321 }, 321 },
322 "end": { 322 "end": {
323 "line": 123, 323 "line": 120,
324 "column": 3 324 "column": 3
325 } 325 }
326 }, 326 },
@@ -329,11 +329,11 @@
329 "defaultMessage": "!!!Toggle Developer Tools", 329 "defaultMessage": "!!!Toggle Developer Tools",
330 "file": "src/lib/Menu.js", 330 "file": "src/lib/Menu.js",
331 "start": { 331 "start": {
332 "line": 124, 332 "line": 121,
333 "column": 18 333 "column": 18
334 }, 334 },
335 "end": { 335 "end": {
336 "line": 127, 336 "line": 124,
337 "column": 3 337 "column": 3
338 } 338 }
339 }, 339 },
@@ -342,11 +342,11 @@
342 "defaultMessage": "!!!Toggle Todos Developer Tools", 342 "defaultMessage": "!!!Toggle Todos Developer Tools",
343 "file": "src/lib/Menu.js", 343 "file": "src/lib/Menu.js",
344 "start": { 344 "start": {
345 "line": 128, 345 "line": 125,
346 "column": 23 346 "column": 23
347 }, 347 },
348 "end": { 348 "end": {
349 "line": 131, 349 "line": 128,
350 "column": 3 350 "column": 3
351 } 351 }
352 }, 352 },
@@ -355,11 +355,11 @@
355 "defaultMessage": "!!!Toggle Service Developer Tools", 355 "defaultMessage": "!!!Toggle Service Developer Tools",
356 "file": "src/lib/Menu.js", 356 "file": "src/lib/Menu.js",
357 "start": { 357 "start": {
358 "line": 132, 358 "line": 129,
359 "column": 25 359 "column": 25
360 }, 360 },
361 "end": { 361 "end": {
362 "line": 135, 362 "line": 132,
363 "column": 3 363 "column": 3
364 } 364 }
365 }, 365 },
@@ -368,11 +368,11 @@
368 "defaultMessage": "!!!Reload Service", 368 "defaultMessage": "!!!Reload Service",
369 "file": "src/lib/Menu.js", 369 "file": "src/lib/Menu.js",
370 "start": { 370 "start": {
371 "line": 136, 371 "line": 133,
372 "column": 17 372 "column": 17
373 }, 373 },
374 "end": { 374 "end": {
375 "line": 139, 375 "line": 136,
376 "column": 3 376 "column": 3
377 } 377 }
378 }, 378 },
@@ -381,11 +381,11 @@
381 "defaultMessage": "!!!Reload Ferdi", 381 "defaultMessage": "!!!Reload Ferdi",
382 "file": "src/lib/Menu.js", 382 "file": "src/lib/Menu.js",
383 "start": { 383 "start": {
384 "line": 140, 384 "line": 137,
385 "column": 15 385 "column": 15
386 }, 386 },
387 "end": { 387 "end": {
388 "line": 143, 388 "line": 140,
389 "column": 3 389 "column": 3
390 } 390 }
391 }, 391 },
@@ -394,11 +394,11 @@
394 "defaultMessage": "!!!Lock Ferdi", 394 "defaultMessage": "!!!Lock Ferdi",
395 "file": "src/lib/Menu.js", 395 "file": "src/lib/Menu.js",
396 "start": { 396 "start": {
397 "line": 144, 397 "line": 141,
398 "column": 13 398 "column": 13
399 }, 399 },
400 "end": { 400 "end": {
401 "line": 147, 401 "line": 144,
402 "column": 3 402 "column": 3
403 } 403 }
404 }, 404 },
@@ -407,11 +407,11 @@
407 "defaultMessage": "!!!Reload ToDos", 407 "defaultMessage": "!!!Reload ToDos",
408 "file": "src/lib/Menu.js", 408 "file": "src/lib/Menu.js",
409 "start": { 409 "start": {
410 "line": 148, 410 "line": 145,
411 "column": 15 411 "column": 15
412 }, 412 },
413 "end": { 413 "end": {
414 "line": 151, 414 "line": 148,
415 "column": 3 415 "column": 3
416 } 416 }
417 }, 417 },
@@ -420,11 +420,11 @@
420 "defaultMessage": "!!!Minimize", 420 "defaultMessage": "!!!Minimize",
421 "file": "src/lib/Menu.js", 421 "file": "src/lib/Menu.js",
422 "start": { 422 "start": {
423 "line": 152, 423 "line": 149,
424 "column": 12 424 "column": 12
425 }, 425 },
426 "end": { 426 "end": {
427 "line": 155, 427 "line": 152,
428 "column": 3 428 "column": 3
429 } 429 }
430 }, 430 },
@@ -433,11 +433,11 @@
433 "defaultMessage": "!!!Close", 433 "defaultMessage": "!!!Close",
434 "file": "src/lib/Menu.js", 434 "file": "src/lib/Menu.js",
435 "start": { 435 "start": {
436 "line": 156, 436 "line": 153,
437 "column": 9 437 "column": 9
438 }, 438 },
439 "end": { 439 "end": {
440 "line": 159, 440 "line": 156,
441 "column": 3 441 "column": 3
442 } 442 }
443 }, 443 },
@@ -446,11 +446,11 @@
446 "defaultMessage": "!!!Learn More", 446 "defaultMessage": "!!!Learn More",
447 "file": "src/lib/Menu.js", 447 "file": "src/lib/Menu.js",
448 "start": { 448 "start": {
449 "line": 160, 449 "line": 157,
450 "column": 13 450 "column": 13
451 }, 451 },
452 "end": { 452 "end": {
453 "line": 163, 453 "line": 160,
454 "column": 3 454 "column": 3
455 } 455 }
456 }, 456 },
@@ -459,11 +459,11 @@
459 "defaultMessage": "!!!Changelog", 459 "defaultMessage": "!!!Changelog",
460 "file": "src/lib/Menu.js", 460 "file": "src/lib/Menu.js",
461 "start": { 461 "start": {
462 "line": 164, 462 "line": 161,
463 "column": 13 463 "column": 13
464 }, 464 },
465 "end": { 465 "end": {
466 "line": 167, 466 "line": 164,
467 "column": 3 467 "column": 3
468 } 468 }
469 }, 469 },
@@ -472,11 +472,11 @@
472 "defaultMessage": "!!!Support", 472 "defaultMessage": "!!!Support",
473 "file": "src/lib/Menu.js", 473 "file": "src/lib/Menu.js",
474 "start": { 474 "start": {
475 "line": 168, 475 "line": 165,
476 "column": 11 476 "column": 11
477 }, 477 },
478 "end": { 478 "end": {
479 "line": 171, 479 "line": 168,
480 "column": 3 480 "column": 3
481 } 481 }
482 }, 482 },
@@ -485,11 +485,11 @@
485 "defaultMessage": "!!!Copy Debug Information", 485 "defaultMessage": "!!!Copy Debug Information",
486 "file": "src/lib/Menu.js", 486 "file": "src/lib/Menu.js",
487 "start": { 487 "start": {
488 "line": 172, 488 "line": 169,
489 "column": 13 489 "column": 13
490 }, 490 },
491 "end": { 491 "end": {
492 "line": 175, 492 "line": 172,
493 "column": 3 493 "column": 3
494 } 494 }
495 }, 495 },
@@ -498,11 +498,11 @@
498 "defaultMessage": "!!!Publish Debug Information", 498 "defaultMessage": "!!!Publish Debug Information",
499 "file": "src/lib/Menu.js", 499 "file": "src/lib/Menu.js",
500 "start": { 500 "start": {
501 "line": 176, 501 "line": 173,
502 "column": 20 502 "column": 20
503 }, 503 },
504 "end": { 504 "end": {
505 "line": 179, 505 "line": 176,
506 "column": 3 506 "column": 3
507 } 507 }
508 }, 508 },
@@ -511,11 +511,11 @@
511 "defaultMessage": "!!!Ferdi Debug Information", 511 "defaultMessage": "!!!Ferdi Debug Information",
512 "file": "src/lib/Menu.js", 512 "file": "src/lib/Menu.js",
513 "start": { 513 "start": {
514 "line": 180, 514 "line": 177,
515 "column": 27 515 "column": 27
516 }, 516 },
517 "end": { 517 "end": {
518 "line": 183, 518 "line": 180,
519 "column": 3 519 "column": 3
520 } 520 }
521 }, 521 },
@@ -524,11 +524,11 @@
524 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 524 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
525 "file": "src/lib/Menu.js", 525 "file": "src/lib/Menu.js",
526 "start": { 526 "start": {
527 "line": 184, 527 "line": 181,
528 "column": 23 528 "column": 23
529 }, 529 },
530 "end": { 530 "end": {
531 "line": 187, 531 "line": 184,
532 "column": 3 532 "column": 3
533 } 533 }
534 }, 534 },
@@ -537,11 +537,11 @@
537 "defaultMessage": "!!!Unlock with Touch ID", 537 "defaultMessage": "!!!Unlock with Touch ID",
538 "file": "src/lib/Menu.js", 538 "file": "src/lib/Menu.js",
539 "start": { 539 "start": {
540 "line": 188, 540 "line": 185,
541 "column": 11 541 "column": 11
542 }, 542 },
543 "end": { 543 "end": {
544 "line": 191, 544 "line": 188,
545 "column": 3 545 "column": 3
546 } 546 }
547 }, 547 },
@@ -550,11 +550,11 @@
550 "defaultMessage": "!!!unlock via Touch ID", 550 "defaultMessage": "!!!unlock via Touch ID",
551 "file": "src/lib/Menu.js", 551 "file": "src/lib/Menu.js",
552 "start": { 552 "start": {
553 "line": 192, 553 "line": 189,
554 "column": 17 554 "column": 17
555 }, 555 },
556 "end": { 556 "end": {
557 "line": 195, 557 "line": 192,
558 "column": 3 558 "column": 3
559 } 559 }
560 }, 560 },
@@ -563,11 +563,11 @@
563 "defaultMessage": "!!!Terms of Service", 563 "defaultMessage": "!!!Terms of Service",
564 "file": "src/lib/Menu.js", 564 "file": "src/lib/Menu.js",
565 "start": { 565 "start": {
566 "line": 196, 566 "line": 193,
567 "column": 7 567 "column": 7
568 }, 568 },
569 "end": { 569 "end": {
570 "line": 199, 570 "line": 196,
571 "column": 3 571 "column": 3
572 } 572 }
573 }, 573 },
@@ -576,11 +576,11 @@
576 "defaultMessage": "!!!Privacy Statement", 576 "defaultMessage": "!!!Privacy Statement",
577 "file": "src/lib/Menu.js", 577 "file": "src/lib/Menu.js",
578 "start": { 578 "start": {
579 "line": 200, 579 "line": 197,
580 "column": 11 580 "column": 11
581 }, 581 },
582 "end": { 582 "end": {
583 "line": 203, 583 "line": 200,
584 "column": 3 584 "column": 3
585 } 585 }
586 }, 586 },
@@ -589,11 +589,11 @@
589 "defaultMessage": "!!!File", 589 "defaultMessage": "!!!File",
590 "file": "src/lib/Menu.js", 590 "file": "src/lib/Menu.js",
591 "start": { 591 "start": {
592 "line": 204, 592 "line": 201,
593 "column": 8 593 "column": 8
594 }, 594 },
595 "end": { 595 "end": {
596 "line": 207, 596 "line": 204,
597 "column": 3 597 "column": 3
598 } 598 }
599 }, 599 },
@@ -602,11 +602,11 @@
602 "defaultMessage": "!!!View", 602 "defaultMessage": "!!!View",
603 "file": "src/lib/Menu.js", 603 "file": "src/lib/Menu.js",
604 "start": { 604 "start": {
605 "line": 208, 605 "line": 205,
606 "column": 8 606 "column": 8
607 }, 607 },
608 "end": { 608 "end": {
609 "line": 211, 609 "line": 208,
610 "column": 3 610 "column": 3
611 } 611 }
612 }, 612 },
@@ -615,11 +615,11 @@
615 "defaultMessage": "!!!Services", 615 "defaultMessage": "!!!Services",
616 "file": "src/lib/Menu.js", 616 "file": "src/lib/Menu.js",
617 "start": { 617 "start": {
618 "line": 212, 618 "line": 209,
619 "column": 12 619 "column": 12
620 }, 620 },
621 "end": { 621 "end": {
622 "line": 215, 622 "line": 212,
623 "column": 3 623 "column": 3
624 } 624 }
625 }, 625 },
@@ -628,11 +628,11 @@
628 "defaultMessage": "!!!Window", 628 "defaultMessage": "!!!Window",
629 "file": "src/lib/Menu.js", 629 "file": "src/lib/Menu.js",
630 "start": { 630 "start": {
631 "line": 216, 631 "line": 213,
632 "column": 10 632 "column": 10
633 }, 633 },
634 "end": { 634 "end": {
635 "line": 219, 635 "line": 216,
636 "column": 3 636 "column": 3
637 } 637 }
638 }, 638 },
@@ -641,11 +641,11 @@
641 "defaultMessage": "!!!Help", 641 "defaultMessage": "!!!Help",
642 "file": "src/lib/Menu.js", 642 "file": "src/lib/Menu.js",
643 "start": { 643 "start": {
644 "line": 220, 644 "line": 217,
645 "column": 8 645 "column": 8
646 }, 646 },
647 "end": { 647 "end": {
648 "line": 223, 648 "line": 220,
649 "column": 3 649 "column": 3
650 } 650 }
651 }, 651 },
@@ -654,11 +654,11 @@
654 "defaultMessage": "!!!About Ferdi", 654 "defaultMessage": "!!!About Ferdi",
655 "file": "src/lib/Menu.js", 655 "file": "src/lib/Menu.js",
656 "start": { 656 "start": {
657 "line": 224, 657 "line": 221,
658 "column": 9 658 "column": 9
659 }, 659 },
660 "end": { 660 "end": {
661 "line": 227, 661 "line": 224,
662 "column": 3 662 "column": 3
663 } 663 }
664 }, 664 },
@@ -667,11 +667,11 @@
667 "defaultMessage": "!!!What's new?", 667 "defaultMessage": "!!!What's new?",
668 "file": "src/lib/Menu.js", 668 "file": "src/lib/Menu.js",
669 "start": { 669 "start": {
670 "line": 228, 670 "line": 225,
671 "column": 16 671 "column": 16
672 }, 672 },
673 "end": { 673 "end": {
674 "line": 231, 674 "line": 228,
675 "column": 3 675 "column": 3
676 } 676 }
677 }, 677 },
@@ -680,11 +680,11 @@
680 "defaultMessage": "!!!Settings", 680 "defaultMessage": "!!!Settings",
681 "file": "src/lib/Menu.js", 681 "file": "src/lib/Menu.js",
682 "start": { 682 "start": {
683 "line": 232, 683 "line": 229,
684 "column": 12 684 "column": 12
685 }, 685 },
686 "end": { 686 "end": {
687 "line": 235, 687 "line": 232,
688 "column": 3 688 "column": 3
689 } 689 }
690 }, 690 },
@@ -693,11 +693,11 @@
693 "defaultMessage": "!!!Check for updates", 693 "defaultMessage": "!!!Check for updates",
694 "file": "src/lib/Menu.js", 694 "file": "src/lib/Menu.js",
695 "start": { 695 "start": {
696 "line": 236, 696 "line": 233,
697 "column": 19 697 "column": 19
698 }, 698 },
699 "end": { 699 "end": {
700 "line": 239, 700 "line": 236,
701 "column": 3 701 "column": 3
702 } 702 }
703 }, 703 },
@@ -706,11 +706,11 @@
706 "defaultMessage": "!!!Hide", 706 "defaultMessage": "!!!Hide",
707 "file": "src/lib/Menu.js", 707 "file": "src/lib/Menu.js",
708 "start": { 708 "start": {
709 "line": 240, 709 "line": 237,
710 "column": 8 710 "column": 8
711 }, 711 },
712 "end": { 712 "end": {
713 "line": 243, 713 "line": 240,
714 "column": 3 714 "column": 3
715 } 715 }
716 }, 716 },
@@ -719,11 +719,11 @@
719 "defaultMessage": "!!!Hide Others", 719 "defaultMessage": "!!!Hide Others",
720 "file": "src/lib/Menu.js", 720 "file": "src/lib/Menu.js",
721 "start": { 721 "start": {
722 "line": 244, 722 "line": 241,
723 "column": 14 723 "column": 14
724 }, 724 },
725 "end": { 725 "end": {
726 "line": 247, 726 "line": 244,
727 "column": 3 727 "column": 3
728 } 728 }
729 }, 729 },
@@ -732,11 +732,11 @@
732 "defaultMessage": "!!!Unhide", 732 "defaultMessage": "!!!Unhide",
733 "file": "src/lib/Menu.js", 733 "file": "src/lib/Menu.js",
734 "start": { 734 "start": {
735 "line": 248, 735 "line": 245,
736 "column": 10 736 "column": 10
737 }, 737 },
738 "end": { 738 "end": {
739 "line": 251, 739 "line": 248,
740 "column": 3 740 "column": 3
741 } 741 }
742 }, 742 },
@@ -745,11 +745,11 @@
745 "defaultMessage": "!!!Auto-hide menu bar", 745 "defaultMessage": "!!!Auto-hide menu bar",
746 "file": "src/lib/Menu.js", 746 "file": "src/lib/Menu.js",
747 "start": { 747 "start": {
748 "line": 252, 748 "line": 249,
749 "column": 19 749 "column": 19
750 }, 750 },
751 "end": { 751 "end": {
752 "line": 255, 752 "line": 252,
753 "column": 3 753 "column": 3
754 } 754 }
755 }, 755 },
@@ -758,11 +758,11 @@
758 "defaultMessage": "!!!Quit", 758 "defaultMessage": "!!!Quit",
759 "file": "src/lib/Menu.js", 759 "file": "src/lib/Menu.js",
760 "start": { 760 "start": {
761 "line": 256, 761 "line": 253,
762 "column": 8 762 "column": 8
763 }, 763 },
764 "end": { 764 "end": {
765 "line": 259, 765 "line": 256,
766 "column": 3 766 "column": 3
767 } 767 }
768 }, 768 },
@@ -771,11 +771,11 @@
771 "defaultMessage": "!!!Add New Service...", 771 "defaultMessage": "!!!Add New Service...",
772 "file": "src/lib/Menu.js", 772 "file": "src/lib/Menu.js",
773 "start": { 773 "start": {
774 "line": 260, 774 "line": 257,
775 "column": 17 775 "column": 17
776 }, 776 },
777 "end": { 777 "end": {
778 "line": 263, 778 "line": 260,
779 "column": 3 779 "column": 3
780 } 780 }
781 }, 781 },
@@ -784,11 +784,11 @@
784 "defaultMessage": "!!!Add New Workspace...", 784 "defaultMessage": "!!!Add New Workspace...",
785 "file": "src/lib/Menu.js", 785 "file": "src/lib/Menu.js",
786 "start": { 786 "start": {
787 "line": 264, 787 "line": 261,
788 "column": 19 788 "column": 19
789 }, 789 },
790 "end": { 790 "end": {
791 "line": 267, 791 "line": 264,
792 "column": 3 792 "column": 3
793 } 793 }
794 }, 794 },
@@ -797,11 +797,11 @@
797 "defaultMessage": "!!!Open workspace drawer", 797 "defaultMessage": "!!!Open workspace drawer",
798 "file": "src/lib/Menu.js", 798 "file": "src/lib/Menu.js",
799 "start": { 799 "start": {
800 "line": 268, 800 "line": 265,
801 "column": 23 801 "column": 23
802 }, 802 },
803 "end": { 803 "end": {
804 "line": 271, 804 "line": 268,
805 "column": 3 805 "column": 3
806 } 806 }
807 }, 807 },
@@ -810,11 +810,11 @@
810 "defaultMessage": "!!!Close workspace drawer", 810 "defaultMessage": "!!!Close workspace drawer",
811 "file": "src/lib/Menu.js", 811 "file": "src/lib/Menu.js",
812 "start": { 812 "start": {
813 "line": 272, 813 "line": 269,
814 "column": 24 814 "column": 24
815 }, 815 },
816 "end": { 816 "end": {
817 "line": 275, 817 "line": 272,
818 "column": 3 818 "column": 3
819 } 819 }
820 }, 820 },
@@ -823,11 +823,11 @@
823 "defaultMessage": "!!!Activate next service...", 823 "defaultMessage": "!!!Activate next service...",
824 "file": "src/lib/Menu.js", 824 "file": "src/lib/Menu.js",
825 "start": { 825 "start": {
826 "line": 276, 826 "line": 273,
827 "column": 23 827 "column": 23
828 }, 828 },
829 "end": { 829 "end": {
830 "line": 279, 830 "line": 276,
831 "column": 3 831 "column": 3
832 } 832 }
833 }, 833 },
@@ -836,11 +836,11 @@
836 "defaultMessage": "!!!Activate previous service...", 836 "defaultMessage": "!!!Activate previous service...",
837 "file": "src/lib/Menu.js", 837 "file": "src/lib/Menu.js",
838 "start": { 838 "start": {
839 "line": 280, 839 "line": 277,
840 "column": 27 840 "column": 27
841 }, 841 },
842 "end": { 842 "end": {
843 "line": 283, 843 "line": 280,
844 "column": 3 844 "column": 3
845 } 845 }
846 }, 846 },
@@ -849,11 +849,11 @@
849 "defaultMessage": "!!!Disable notifications & audio", 849 "defaultMessage": "!!!Disable notifications & audio",
850 "file": "src/lib/Menu.js", 850 "file": "src/lib/Menu.js",
851 "start": { 851 "start": {
852 "line": 284, 852 "line": 281,
853 "column": 11 853 "column": 11
854 }, 854 },
855 "end": { 855 "end": {
856 "line": 287, 856 "line": 284,
857 "column": 3 857 "column": 3
858 } 858 }
859 }, 859 },
@@ -862,11 +862,11 @@
862 "defaultMessage": "!!!Enable notifications & audio", 862 "defaultMessage": "!!!Enable notifications & audio",
863 "file": "src/lib/Menu.js", 863 "file": "src/lib/Menu.js",
864 "start": { 864 "start": {
865 "line": 288, 865 "line": 285,
866 "column": 13 866 "column": 13
867 }, 867 },
868 "end": { 868 "end": {
869 "line": 291, 869 "line": 288,
870 "column": 3 870 "column": 3
871 } 871 }
872 }, 872 },
@@ -875,11 +875,11 @@
875 "defaultMessage": "!!!Workspaces", 875 "defaultMessage": "!!!Workspaces",
876 "file": "src/lib/Menu.js", 876 "file": "src/lib/Menu.js",
877 "start": { 877 "start": {
878 "line": 292, 878 "line": 289,
879 "column": 14 879 "column": 14
880 }, 880 },
881 "end": { 881 "end": {
882 "line": 295, 882 "line": 292,
883 "column": 3 883 "column": 3
884 } 884 }
885 }, 885 },
@@ -888,11 +888,11 @@
888 "defaultMessage": "!!!Default", 888 "defaultMessage": "!!!Default",
889 "file": "src/lib/Menu.js", 889 "file": "src/lib/Menu.js",
890 "start": { 890 "start": {
891 "line": 296, 891 "line": 293,
892 "column": 20 892 "column": 20
893 }, 893 },
894 "end": { 894 "end": {
895 "line": 299, 895 "line": 296,
896 "column": 3 896 "column": 3
897 } 897 }
898 }, 898 },
@@ -901,11 +901,11 @@
901 "defaultMessage": "!!!Todos", 901 "defaultMessage": "!!!Todos",
902 "file": "src/lib/Menu.js", 902 "file": "src/lib/Menu.js",
903 "start": { 903 "start": {
904 "line": 300, 904 "line": 297,
905 "column": 9 905 "column": 9
906 }, 906 },
907 "end": { 907 "end": {
908 "line": 303, 908 "line": 300,
909 "column": 3 909 "column": 3
910 } 910 }
911 }, 911 },
@@ -914,11 +914,11 @@
914 "defaultMessage": "!!!Open Todos drawer", 914 "defaultMessage": "!!!Open Todos drawer",
915 "file": "src/lib/Menu.js", 915 "file": "src/lib/Menu.js",
916 "start": { 916 "start": {
917 "line": 304, 917 "line": 301,
918 "column": 19 918 "column": 19
919 }, 919 },
920 "end": { 920 "end": {
921 "line": 307, 921 "line": 304,
922 "column": 3 922 "column": 3
923 } 923 }
924 }, 924 },
@@ -927,11 +927,11 @@
927 "defaultMessage": "!!!Close Todos drawer", 927 "defaultMessage": "!!!Close Todos drawer",
928 "file": "src/lib/Menu.js", 928 "file": "src/lib/Menu.js",
929 "start": { 929 "start": {
930 "line": 308, 930 "line": 305,
931 "column": 20 931 "column": 20
932 }, 932 },
933 "end": { 933 "end": {
934 "line": 311, 934 "line": 308,
935 "column": 3 935 "column": 3
936 } 936 }
937 }, 937 },
@@ -940,11 +940,11 @@
940 "defaultMessage": "!!!Enable Todos", 940 "defaultMessage": "!!!Enable Todos",
941 "file": "src/lib/Menu.js", 941 "file": "src/lib/Menu.js",
942 "start": { 942 "start": {
943 "line": 312, 943 "line": 309,
944 "column": 15 944 "column": 15
945 }, 945 },
946 "end": { 946 "end": {
947 "line": 315, 947 "line": 312,
948 "column": 3 948 "column": 3
949 } 949 }
950 }, 950 },
@@ -953,11 +953,11 @@
953 "defaultMessage": "!!!Home", 953 "defaultMessage": "!!!Home",
954 "file": "src/lib/Menu.js", 954 "file": "src/lib/Menu.js",
955 "start": { 955 "start": {
956 "line": 316, 956 "line": 313,
957 "column": 17 957 "column": 17
958 }, 958 },
959 "end": { 959 "end": {
960 "line": 319, 960 "line": 316,
961 "column": 3 961 "column": 3
962 } 962 }
963 } 963 }
diff --git a/src/index.js b/src/index.js
index 396d2e649..ab4187e68 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,3 +1,5 @@
1/* eslint-disable import/first */
2
1import { 3import {
2 app, 4 app,
3 BrowserWindow, 5 BrowserWindow,
@@ -5,13 +7,26 @@ import {
5 ipcMain, 7 ipcMain,
6 session, 8 session,
7} from 'electron'; 9} from 'electron';
8import isDevMode from 'electron-is-dev'; 10
9import fs from 'fs-extra'; 11import fs from 'fs-extra';
10import path from 'path'; 12import path from 'path';
11import windowStateKeeper from 'electron-window-state'; 13import windowStateKeeper from 'electron-window-state';
12import { enforceMacOSAppLocation } from 'electron-util'; 14import { enforceMacOSAppLocation } from 'electron-util';
13import ms from 'ms'; 15import ms from 'ms';
14 16
17require('@electron/remote/main').initialize();
18
19import {
20 DEFAULT_APP_SETTINGS,
21 DEFAULT_WINDOW_OPTIONS,
22} from './config';
23
24import {
25 isMac,
26 isWindows,
27 isLinux,
28} from './environment';
29
15// TODO: This seems to be duplicated between here and 'config.js' 30// TODO: This seems to be duplicated between here and 'config.js'
16// Set app directory before loading user modules 31// Set app directory before loading user modules
17if (process.env.FERDI_APPDATA_DIR != null) { 32if (process.env.FERDI_APPDATA_DIR != null) {
@@ -25,16 +40,11 @@ if (process.env.FERDI_APPDATA_DIR != null) {
25 app.setPath('userData', path.join(app.getPath('appData'), app.name)); 40 app.setPath('userData', path.join(app.getPath('appData'), app.name));
26} 41}
27 42
43const isDevMode = !app.isPackaged;
28if (isDevMode) { 44if (isDevMode) {
29 app.setPath('userData', path.join(app.getPath('appData'), `${app.name}Dev`)); 45 app.setPath('userData', path.join(app.getPath('appData'), `${app.name}Dev`));
30} 46}
31 47
32/* eslint-disable import/first */
33import {
34 isMac,
35 isWindows,
36 isLinux,
37} from './environment';
38import { mainIpcHandler as basicAuthHandler } from './features/basicAuth'; 48import { mainIpcHandler as basicAuthHandler } from './features/basicAuth';
39import ipcApi from './electron/ipc-api'; 49import ipcApi from './electron/ipc-api';
40import Tray from './lib/Tray'; 50import Tray from './lib/Tray';
@@ -42,15 +52,10 @@ import DBus from './lib/DBus';
42import Settings from './electron/Settings'; 52import Settings from './electron/Settings';
43import handleDeepLink from './electron/deepLinking'; 53import handleDeepLink from './electron/deepLinking';
44import { isPositionValid } from './electron/windowUtils'; 54import { isPositionValid } from './electron/windowUtils';
45import askFormacOSPermissions from './electron/macOSPermissions';
46import { appId } from './package.json'; // eslint-disable-line import/no-unresolved 55import { appId } from './package.json'; // eslint-disable-line import/no-unresolved
47import * as buildInfo from './buildInfo.json'; // eslint-disable-line import/no-unresolved 56import * as buildInfo from './buildInfo.json'; // eslint-disable-line import/no-unresolved
48import './electron/exception'; 57import './electron/exception';
49 58
50import {
51 DEFAULT_APP_SETTINGS,
52 DEFAULT_WINDOW_OPTIONS,
53} from './config';
54import { asarPath } from './helpers/asar-helpers'; 59import { asarPath } from './helpers/asar-helpers';
55import { isValidExternalURL } from './helpers/url-helpers'; 60import { isValidExternalURL } from './helpers/url-helpers';
56import userAgent, { ferdiVersion } from './helpers/userAgent-helpers'; 61import userAgent, { ferdiVersion } from './helpers/userAgent-helpers';
@@ -329,6 +334,8 @@ const createWindow = () => {
329 }); 334 });
330 335
331 if (isMac) { 336 if (isMac) {
337 // eslint-disable-next-line global-require
338 const askFormacOSPermissions = require('./electron/macOSPermissions');
332 setTimeout(() => askFormacOSPermissions(mainWindow), ms('30s')); 339 setTimeout(() => askFormacOSPermissions(mainWindow), ms('30s'));
333 } 340 }
334 341
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 2131a97be..621be9a12 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -1,4 +1,5 @@
1import { clipboard, remote, shell } from 'electron'; 1import { clipboard, shell } from 'electron';
2import { app, Menu, dialog, systemPreferences } from '@electron/remote';
2import { autorun, observable } from 'mobx'; 3import { autorun, observable } from 'mobx';
3import { defineMessages } from 'react-intl'; 4import { defineMessages } from 'react-intl';
4import { 5import {
@@ -16,10 +17,6 @@ import { ferdiVersion } from '../helpers/userAgent-helpers';
16 17
17const osName = require('os-name'); 18const osName = require('os-name');
18 19
19const {
20 app, Menu, dialog, systemPreferences,
21} = remote;
22
23const menuItems = defineMessages({ 20const menuItems = defineMessages({
24 edit: { 21 edit: {
25 id: 'menu.edit', 22 id: 'menu.edit',
diff --git a/src/lib/TouchBar.js b/src/lib/TouchBar.js
index 32f546644..11eaec306 100644
--- a/src/lib/TouchBar.js
+++ b/src/lib/TouchBar.js
@@ -1,6 +1,6 @@
1import os from 'os'; 1import os from 'os';
2import semver from 'semver'; 2import semver from 'semver';
3import { remote } from 'electron'; 3import { TouchBar, getCurrentWindow } from '@electron/remote';
4import { autorun } from 'mobx'; 4import { autorun } from 'mobx';
5 5
6import { isMac } from '../environment'; 6import { isMac } from '../environment';
@@ -22,14 +22,13 @@ export default class FranzTouchBar {
22 } 22 }
23 23
24 _build() { 24 _build() {
25 const currentWindow = remote.getCurrentWindow(); 25 const currentWindow = getCurrentWindow();
26 26
27 if (this.stores.router.location.pathname.startsWith('/payment/')) { 27 if (this.stores.router.location.pathname.startsWith('/payment/')) {
28 return; 28 return;
29 } 29 }
30 30
31 if (this.stores.user.isLoggedIn) { 31 if (this.stores.user.isLoggedIn) {
32 const { TouchBar } = remote;
33 const { TouchBarButton, TouchBarSpacer } = TouchBar; 32 const { TouchBarButton, TouchBarSpacer } = TouchBar;
34 33
35 const buttons = []; 34 const buttons = [];
diff --git a/src/models/Service.js b/src/models/Service.js
index a980ca4a3..b76e92a53 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -1,5 +1,6 @@
1import { autorun, computed, observable } from 'mobx'; 1import { autorun, computed, observable } from 'mobx';
2import { ipcRenderer, remote } from 'electron'; 2import { ipcRenderer } from 'electron';
3import { webContents } from '@electron/remote';
3import normalizeUrl from 'normalize-url'; 4import normalizeUrl from 'normalize-url';
4import path from 'path'; 5import path from 'path';
5 6
@@ -246,7 +247,7 @@ export default class Service {
246 247
247 248
248 initializeWebViewEvents({ handleIPCMessage, openWindow, stores }) { 249 initializeWebViewEvents({ handleIPCMessage, openWindow, stores }) {
249 const webContents = remote.webContents.fromId(this.webview.getWebContentsId()); 250 const webviewWebContents = webContents.fromId(this.webview.getWebContentsId());
250 251
251 // If the recipe has implemented modifyRequestHeaders, 252 // If the recipe has implemented modifyRequestHeaders,
252 // Send those headers to ipcMain so that it can be set in session 253 // Send those headers to ipcMain so that it can be set in session
@@ -337,14 +338,14 @@ export default class Service {
337 this.hasCrashed = true; 338 this.hasCrashed = true;
338 }); 339 });
339 340
340 webContents.on('login', (event, request, authInfo, callback) => { 341 webviewWebContents.on('login', (event, request, authInfo, callback) => {
341 // const authCallback = callback; 342 // const authCallback = callback;
342 debug('browser login event', authInfo); 343 debug('browser login event', authInfo);
343 event.preventDefault(); 344 event.preventDefault();
344 345
345 if (authInfo.isProxy && authInfo.scheme === 'basic') { 346 if (authInfo.isProxy && authInfo.scheme === 'basic') {
346 debug('Sending service echo ping'); 347 debug('Sending service echo ping');
347 webContents.send('get-service-id'); 348 webviewWebContents.send('get-service-id');
348 349
349 debug('Received service id', this.id); 350 debug('Received service id', this.id);
350 351
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index c409b6ac7..4af802460 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -1,7 +1,8 @@
1import { remote, ipcRenderer, shell } from 'electron'; 1import { ipcRenderer, shell } from 'electron';
2import { 2import {
3 action, computed, observable, 3 app, screen, powerMonitor, nativeTheme, getCurrentWindow, process as remoteProcess,
4} from 'mobx'; 4} from '@electron/remote';
5import { action, computed, observable } from 'mobx';
5import moment from 'moment'; 6import moment from 'moment';
6import AutoLaunch from 'auto-launch'; 7import AutoLaunch from 'auto-launch';
7import ms from 'ms'; 8import ms from 'ms';
@@ -24,18 +25,11 @@ import { sleep } from '../helpers/async-helpers';
24 25
25const debug = require('debug')('Ferdi:AppStore'); 26const debug = require('debug')('Ferdi:AppStore');
26 27
27const { 28const mainWindow = getCurrentWindow();
28 app,
29 screen,
30 powerMonitor,
31 nativeTheme,
32} = remote;
33
34const mainWindow = remote.getCurrentWindow();
35 29
36const defaultLocale = DEFAULT_APP_SETTINGS.locale; 30const defaultLocale = DEFAULT_APP_SETTINGS.locale;
37 31
38const executablePath = isMac ? remote.process.execPath : process.execPath; 32const executablePath = isMac ? remoteProcess.execPath : process.execPath;
39const autoLauncher = new AutoLaunch({ 33const autoLauncher = new AutoLaunch({
40 name: 'Ferdi', 34 name: 'Ferdi',
41 path: executablePath, 35 path: executablePath,
diff --git a/src/stores/PaymentStore.js b/src/stores/PaymentStore.js
index 69e6eb9c3..05bb5b3d0 100644
--- a/src/stores/PaymentStore.js
+++ b/src/stores/PaymentStore.js
@@ -1,12 +1,10 @@
1import { action, observable, computed } from 'mobx'; 1import { action, observable, computed } from 'mobx';
2import { remote } from 'electron'; 2import { BrowserWindow, getCurrentWindow } from '@electron/remote';
3 3
4import Store from './lib/Store'; 4import Store from './lib/Store';
5import CachedRequest from './lib/CachedRequest'; 5import CachedRequest from './lib/CachedRequest';
6import Request from './lib/Request'; 6import Request from './lib/Request';
7 7
8const { BrowserWindow } = remote;
9
10export default class PaymentStore extends Store { 8export default class PaymentStore extends Store {
11 @observable plansRequest = new CachedRequest(this.api.payment, 'plans'); 9 @observable plansRequest = new CachedRequest(this.api.payment, 'plans');
12 10
@@ -43,7 +41,7 @@ export default class PaymentStore extends Store {
43 hostedPageURL = this.stores.user.getAuthURL(`${parsedUrl.origin}${parsedUrl.pathname}?${params.toString()}`); 41 hostedPageURL = this.stores.user.getAuthURL(`${parsedUrl.origin}${parsedUrl.pathname}?${params.toString()}`);
44 42
45 const win = new BrowserWindow({ 43 const win = new BrowserWindow({
46 parent: remote.getCurrentWindow(), 44 parent: getCurrentWindow(),
47 modal: true, 45 modal: true,
48 title: '🔒 Upgrade Your Franz Account', 46 title: '🔒 Upgrade Your Franz Account',
49 width: 800, 47 width: 800,
@@ -54,6 +52,8 @@ export default class PaymentStore extends Store {
54 webPreferences: { 52 webPreferences: {
55 nodeIntegration: true, 53 nodeIntegration: true,
56 webviewTag: true, 54 webviewTag: true,
55 enableRemoteModule: true,
56 contextIsolation: false,
57 }, 57 },
58 }); 58 });
59 win.loadURL(`file://${__dirname}/../index.html#/payment/${encodeURIComponent(hostedPageURL)}`); 59 win.loadURL(`file://${__dirname}/../index.html#/payment/${encodeURIComponent(hostedPageURL)}`);
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index afb370341..dc2cb0dbd 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -1,4 +1,4 @@
1import { shell, remote } from 'electron'; 1import { shell } from 'electron';
2import { 2import {
3 action, 3 action,
4 reaction, 4 reaction,
@@ -7,6 +7,7 @@ import {
7} from 'mobx'; 7} from 'mobx';
8import { debounce, remove } from 'lodash'; 8import { debounce, remove } from 'lodash';
9import ms from 'ms'; 9import ms from 'ms';
10import { app } from '@electron/remote';
10import fs from 'fs-extra'; 11import fs from 'fs-extra';
11import path from 'path'; 12import path from 'path';
12 13
@@ -25,8 +26,6 @@ import { SPELLCHECKER_LOCALES } from '../i18n/languages';
25 26
26const debug = require('debug')('Ferdi:ServiceStore'); 27const debug = require('debug')('Ferdi:ServiceStore');
27 28
28const { app } = remote;
29
30export default class ServicesStore extends Store { 29export default class ServicesStore extends Store {
31 @observable allServicesRequest = new CachedRequest(this.api.services, 'all'); 30 @observable allServicesRequest = new CachedRequest(this.api.services, 'all');
32 31
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js
index ced286052..15b0db120 100644
--- a/src/stores/SettingsStore.js
+++ b/src/stores/SettingsStore.js
@@ -1,4 +1,5 @@
1import { ipcRenderer, remote } from 'electron'; 1import { ipcRenderer } from 'electron';
2import { getCurrentWindow } from '@electron/remote';
2import { 3import {
3 action, computed, observable, reaction, 4 action, computed, observable, reaction,
4} from 'mobx'; 5} from 'mobx';
@@ -41,7 +42,7 @@ export default class SettingsStore extends Store {
41 reaction( 42 reaction(
42 () => this.all.app.autohideMenuBar, 43 () => this.all.app.autohideMenuBar,
43 () => { 44 () => {
44 const currentWindow = remote.getCurrentWindow(); 45 const currentWindow = getCurrentWindow();
45 currentWindow.setMenuBarVisibility(!this.all.app.autohideMenuBar); 46 currentWindow.setMenuBarVisibility(!this.all.app.autohideMenuBar);
46 currentWindow.autoHideMenuBar = this.all.app.autohideMenuBar; 47 currentWindow.autoHideMenuBar = this.all.app.autohideMenuBar;
47 }, 48 },
@@ -61,7 +62,7 @@ export default class SettingsStore extends Store {
61 62
62 // Inactivity lock timer 63 // Inactivity lock timer
63 let inactivityTimer; 64 let inactivityTimer;
64 remote.getCurrentWindow().on('blur', () => { 65 getCurrentWindow().on('blur', () => {
65 if (this.all.app.inactivityLock !== 0) { 66 if (this.all.app.inactivityLock !== 0) {
66 inactivityTimer = setTimeout(() => { 67 inactivityTimer = setTimeout(() => {
67 this.actions.settings.update({ 68 this.actions.settings.update({
@@ -73,7 +74,7 @@ export default class SettingsStore extends Store {
73 }, this.all.app.inactivityLock * 1000 * 60); 74 }, this.all.app.inactivityLock * 1000 * 60);
74 } 75 }
75 }); 76 });
76 remote.getCurrentWindow().on('focus', () => { 77 getCurrentWindow().on('focus', () => {
77 if (inactivityTimer) { 78 if (inactivityTimer) {
78 clearTimeout(inactivityTimer); 79 clearTimeout(inactivityTimer);
79 } 80 }
diff --git a/src/stores/UIStore.js b/src/stores/UIStore.js
index 05e3f71fe..0ca61046a 100644
--- a/src/stores/UIStore.js
+++ b/src/stores/UIStore.js
@@ -2,13 +2,11 @@ import {
2 action, observable, computed, reaction, 2 action, observable, computed, reaction,
3} from 'mobx'; 3} from 'mobx';
4import { theme } from '@meetfranz/theme'; 4import { theme } from '@meetfranz/theme';
5import { remote } from 'electron'; 5import { nativeTheme, systemPreferences } from '@electron/remote';
6 6
7import Store from './lib/Store'; 7import Store from './lib/Store';
8import { isMac, isWindows } from '../environment'; 8import { isMac, isWindows } from '../environment';
9 9
10const { nativeTheme, systemPreferences } = remote;
11
12export default class UIStore extends Store { 10export default class UIStore extends Store {
13 @observable showServicesUpdatedInfoBar = false; 11 @observable showServicesUpdatedInfoBar = false;
14 12
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js
index 7b4d39524..2cb6affa8 100644
--- a/src/stores/UserStore.js
+++ b/src/stores/UserStore.js
@@ -3,7 +3,7 @@ import moment from 'moment';
3import jwt from 'jsonwebtoken'; 3import jwt from 'jsonwebtoken';
4import localStorage from 'mobx-localstorage'; 4import localStorage from 'mobx-localstorage';
5import ms from 'ms'; 5import ms from 'ms';
6import { remote } from 'electron'; 6import { session } from '@electron/remote';
7 7
8import { isDevMode } from '../environment'; 8import { isDevMode } from '../environment';
9import Store from './lib/Store'; 9import Store from './lib/Store';
@@ -14,8 +14,6 @@ import { getPlan } from '../helpers/plan-helpers';
14import { PLANS } from '../config'; 14import { PLANS } from '../config';
15import { TODOS_PARTITION_ID } from '../features/todos'; 15import { TODOS_PARTITION_ID } from '../features/todos';
16 16
17const { session } = remote;
18
19const debug = require('debug')('Ferdi:UserStore'); 17const debug = require('debug')('Ferdi:UserStore');
20 18
21// TODO: split stores into UserStore and AuthStore 19// TODO: split stores into UserStore and AuthStore
diff --git a/src/webview/contextMenu.js b/src/webview/contextMenu.js
index 5858e89ef..f19d863ee 100644
--- a/src/webview/contextMenu.js
+++ b/src/webview/contextMenu.js
@@ -1,7 +1,7 @@
1import { remote } from 'electron'; 1import { getCurrentWebContents } from '@electron/remote';
2import ContextMenuBuilder from './contextMenuBuilder'; 2import ContextMenuBuilder from './contextMenuBuilder';
3 3
4const webContents = remote.getCurrentWebContents(); 4const webContents = getCurrentWebContents();
5 5
6export default async function setupContextMenu(isSpellcheckEnabled, getDefaultSpellcheckerLanguage, getSpellcheckerLanguage, getSearchEngine) { 6export default async function setupContextMenu(isSpellcheckEnabled, getDefaultSpellcheckerLanguage, getSpellcheckerLanguage, getSearchEngine) {
7 const contextMenuBuilder = new ContextMenuBuilder( 7 const contextMenuBuilder = new ContextMenuBuilder(
diff --git a/src/webview/contextMenuBuilder.js b/src/webview/contextMenuBuilder.js
index eac383fbd..5d6df8068 100644
--- a/src/webview/contextMenuBuilder.js
+++ b/src/webview/contextMenuBuilder.js
@@ -6,18 +6,14 @@
6 * 6 *
7 * Source: https://github.com/electron-userland/electron-spellchecker/blob/master/src/context-menu-builder.js 7 * Source: https://github.com/electron-userland/electron-spellchecker/blob/master/src/context-menu-builder.js
8 */ 8 */
9import { clipboard, ipcRenderer, nativeImage, shell } from 'electron';
10import { Menu, MenuItem } from '@electron/remote';
9import { isMac } from '../environment'; 11import { isMac } from '../environment';
10 12
11import { SEARCH_ENGINE_NAMES, SEARCH_ENGINE_URLS } from '../config'; 13import { SEARCH_ENGINE_NAMES, SEARCH_ENGINE_URLS } from '../config';
12 14
13const {
14 clipboard, ipcRenderer, nativeImage, remote, shell,
15} = require('electron');
16
17const { URL } = require('url'); 15const { URL } = require('url');
18 16
19const { Menu, MenuItem } = remote;
20
21function matchesWord(string) { 17function matchesWord(string) {
22 const regex = /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]+/g; 18 const regex = /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]+/g;
23 19
diff --git a/src/webview/recipe.js b/src/webview/recipe.js
index 2701603cb..6180270b2 100644
--- a/src/webview/recipe.js
+++ b/src/webview/recipe.js
@@ -1,5 +1,6 @@
1/* eslint-disable import/first */ 1/* eslint-disable import/first */
2import { ipcRenderer, remote, desktopCapturer } from 'electron'; 2import { ipcRenderer, desktopCapturer } from 'electron';
3import { getCurrentWebContents } from '@electron/remote';
3import path from 'path'; 4import path from 'path';
4import { autorun, computed, observable } from 'mobx'; 5import { autorun, computed, observable } from 'mobx';
5import fs from 'fs-extra'; 6import fs from 'fs-extra';
@@ -158,7 +159,7 @@ class RecipeController {
158 autorun(() => this.update()); 159 autorun(() => this.update());
159 160
160 document.addEventListener('DOMContentLoaded', () => { 161 document.addEventListener('DOMContentLoaded', () => {
161 this.findInPage = new FindInPage(remote.getCurrentWebContents(), { 162 this.findInPage = new FindInPage(getCurrentWebContents(), {
162 inputFocusColor: '#CE9FFC', 163 inputFocusColor: '#CE9FFC',
163 textColor: '#212121', 164 textColor: '#212121',
164 }); 165 });
diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js
index d7c917326..58a04b728 100644
--- a/src/webview/spellchecker.js
+++ b/src/webview/spellchecker.js
@@ -1,12 +1,10 @@
1import { 1import { getCurrentWebContents } from '@electron/remote';
2 remote,
3} from 'electron';
4import { SPELLCHECKER_LOCALES } from '../i18n/languages'; 2import { SPELLCHECKER_LOCALES } from '../i18n/languages';
5import { isMac } from '../environment'; 3import { isMac } from '../environment';
6 4
7const debug = require('debug')('Ferdi:spellchecker'); 5const debug = require('debug')('Ferdi:spellchecker');
8 6
9const webContents = remote.getCurrentWebContents(); 7const webContents = getCurrentWebContents();
10const [defaultLocale] = webContents.session.getSpellCheckerLanguages(); 8const [defaultLocale] = webContents.session.getSpellCheckerLanguages();
11debug('Spellchecker default locale is', defaultLocale); 9debug('Spellchecker default locale is', defaultLocale);
12 10