fix: fix crash on password window opening

pull/2940/head
Audric Ackermann 1 year ago
parent 4e9d2dda7e
commit b42e6c659a

@ -1,17 +1,19 @@
import React, { useEffect } from 'react';
import classNames from 'classnames';
import styled from 'styled-components';
import autoBind from 'auto-bind'; import autoBind from 'auto-bind';
import classNames from 'classnames';
import { isString } from 'lodash'; import { isString } from 'lodash';
import React, { useEffect } from 'react';
import { toast } from 'react-toastify';
import styled from 'styled-components';
import { SessionButton, SessionButtonColor, SessionButtonType } from './basic/SessionButton'; import { SessionButton, SessionButtonColor, SessionButtonType } from './basic/SessionButton';
import { SessionSpinner } from './basic/SessionSpinner'; // import { SessionSpinner } from './basic/SessionSpinner';
import { SessionTheme } from '../themes/SessionTheme'; import { SessionTheme } from '../themes/SessionTheme';
import { switchPrimaryColorTo } from '../themes/switchPrimaryColor';
import { switchThemeTo } from '../themes/switchTheme'; import { switchThemeTo } from '../themes/switchTheme';
import { ToastUtils } from '../session/utils';
import { SessionToastContainer } from './SessionToastContainer'; import { SessionToastContainer } from './SessionToastContainer';
import { SessionWrapperModal } from './SessionWrapperModal'; import { SessionWrapperModal } from './SessionWrapperModal';
import { switchPrimaryColorTo } from '../themes/switchPrimaryColor'; import { SessionSpinner } from './basic/SessionSpinner';
import { SessionToast } from './basic/SessionToast';
interface State { interface State {
errorCount: number; errorCount: number;
@ -34,6 +36,15 @@ const StyledContent = styled.div`
width: 100%; width: 100%;
`; `;
// We cannot import toastutils from the password window as it is pulling the whole sending
// pipeline(and causing crashes on Session instances with password)
function pushToastError(id: string, title: string, description?: string) {
toast.error(<SessionToast title={title} description={description} />, {
toastId: id,
updateId: id,
});
}
class SessionPasswordPromptInner extends React.PureComponent<unknown, State> { class SessionPasswordPromptInner extends React.PureComponent<unknown, State> {
private inputRef?: any; private inputRef?: any;
@ -112,9 +123,9 @@ class SessionPasswordPromptInner extends React.PureComponent<unknown, State> {
}); });
if (error && isString(error)) { if (error && isString(error)) {
ToastUtils.pushToastError('onLogin', error); pushToastError('onLogin', error);
} else if (error?.message && isString(error.message)) { } else if (error?.message && isString(error.message)) {
ToastUtils.pushToastError('onLogin', error.message); pushToastError('onLogin', error.message);
} }
global.setTimeout(() => { global.setTimeout(() => {

@ -8,33 +8,33 @@ import {
app, app,
BrowserWindow, BrowserWindow,
dialog, dialog,
protocol as electronProtocol,
ipcMain as ipc, ipcMain as ipc,
Menu, Menu,
nativeTheme, nativeTheme,
protocol as electronProtocol,
screen, screen,
shell, shell,
systemPreferences, systemPreferences,
} from 'electron'; } from 'electron';
import crypto from 'crypto';
import fs from 'fs';
import os from 'os';
import path, { join } from 'path'; import path, { join } from 'path';
import { platform as osPlatform } from 'process'; import { platform as osPlatform } from 'process';
import url from 'url'; import url from 'url';
import os from 'os';
import fs from 'fs';
import crypto from 'crypto';
import Logger from 'bunyan';
import _, { isEmpty } from 'lodash'; import _, { isEmpty } from 'lodash';
import pify from 'pify'; import pify from 'pify';
import Logger from 'bunyan';
import { setup as setupSpellChecker } from '../node/spell_check'; // checked - only node
import { setupGlobalErrorHandler } from '../node/global_errors'; // checked - only node import { setupGlobalErrorHandler } from '../node/global_errors'; // checked - only node
import { setup as setupSpellChecker } from '../node/spell_check'; // checked - only node
import electronLocalshortcut from 'electron-localshortcut';
import packageJson from '../../package.json'; // checked - only node import packageJson from '../../package.json'; // checked - only node
setupGlobalErrorHandler(); setupGlobalErrorHandler();
import electronLocalshortcut from 'electron-localshortcut';
const getRealPath = pify(fs.realpath); const getRealPath = pify(fs.realpath);
@ -75,15 +75,15 @@ import { initAttachmentsChannel } from '../node/attachment_channel';
import * as updater from '../updater/index'; // checked - only node import * as updater from '../updater/index'; // checked - only node
import { createTrayIcon } from '../node/tray_icon'; // checked - only node
import { ephemeralConfig } from '../node/config/ephemeral_config'; // checked - only node import { ephemeralConfig } from '../node/config/ephemeral_config'; // checked - only node
import { getLogger, initializeLogger } from '../node/logging'; // checked - only node import { getLogger, initializeLogger } from '../node/logging'; // checked - only node
import { createTemplate } from '../node/menu'; // checked - only node
import { installPermissionsHandler } from '../node/permissions'; // checked - only node
import { installFileHandler, installWebHandler } from '../node/protocol_filter'; // checked - only node
import { sqlNode } from '../node/sql'; // checked - only node import { sqlNode } from '../node/sql'; // checked - only node
import * as sqlChannels from '../node/sql_channel'; // checked - only node import * as sqlChannels from '../node/sql_channel'; // checked - only node
import { createTrayIcon } from '../node/tray_icon'; // checked - only node
import { windowMarkShouldQuit, windowShouldQuit } from '../node/window_state'; // checked - only node import { windowMarkShouldQuit, windowShouldQuit } from '../node/window_state'; // checked - only node
import { createTemplate } from '../node/menu'; // checked - only node
import { installFileHandler, installWebHandler } from '../node/protocol_filter'; // checked - only node
import { installPermissionsHandler } from '../node/permissions'; // checked - only node
let appStartInitialSpellcheckSetting = true; let appStartInitialSpellcheckSetting = true;
@ -156,9 +156,9 @@ if (windowFromUserConfig) {
} }
// import {load as loadLocale} from '../..' // import {load as loadLocale} from '../..'
import { load as loadLocale, LocaleMessagesWithNameType } from '../node/locale';
import { setLastestRelease } from '../node/latest_desktop_release';
import { getAppRootPath } from '../node/getRootPath'; import { getAppRootPath } from '../node/getRootPath';
import { setLastestRelease } from '../node/latest_desktop_release';
import { load as loadLocale, LocaleMessagesWithNameType } from '../node/locale';
import { classicDark } from '../themes'; import { classicDark } from '../themes';
// Both of these will be set after app fires the 'ready' event // Both of these will be set after app fires the 'ready' event
@ -757,13 +757,14 @@ app.on('ready', async () => {
} }
const key = getDefaultSQLKey(); const key = getDefaultSQLKey();
// Try to show the main window with the default key // Try to show the main window with the default key
// If that fails then show the password window // If that fails then show the password window
const dbHasPassword = userConfig.get('dbHasPassword'); const dbHasPassword = userConfig.get('dbHasPassword');
if (dbHasPassword) { if (dbHasPassword) {
assertLogger().info('showing password window');
await showPasswordWindow(); await showPasswordWindow();
} else { } else {
assertLogger().info('showing main window');
await showMainWindow(key); await showMainWindow(key);
} }
}); });

@ -1,12 +1,15 @@
import path from 'path';
import fs from 'fs'; import fs from 'fs';
import _ from 'lodash'; import _ from 'lodash';
import path from 'path';
import { getAppRootPath } from './getRootPath'; import { getAppRootPath } from './getRootPath';
function normalizeLocaleName(locale: string) { function normalizeLocaleName(locale: string) {
if (/^en-/.test(locale)) { if (/^en-/.test(locale)) {
return 'en'; return 'en';
} }
if (/^en_/.test(locale)) {
return 'en';
}
return locale; return locale;
} }

Loading…
Cancel
Save