[MM-63224] Add incompatible server screen (#3348)
* [MM-63224] Add incompatible server screen * Fixed issue where init isn't called on no server case * Amend check
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
import AppState from 'common/appState';
|
||||
import {LOAD_FAILED, UPDATE_TARGET_URL} from 'common/communication';
|
||||
import {MattermostServer} from 'common/servers/MattermostServer';
|
||||
import ServerManager from 'common/servers/serverManager';
|
||||
import MessagingView from 'common/views/MessagingView';
|
||||
|
||||
import {MattermostWebContentsView} from './MattermostWebContentsView';
|
||||
@@ -68,6 +69,16 @@ jest.mock('main/performanceMonitor', () => ({
|
||||
registerServerView: jest.fn(),
|
||||
unregisterView: jest.fn(),
|
||||
}));
|
||||
jest.mock('common/servers/serverManager', () => ({
|
||||
getRemoteInfo: jest.fn(),
|
||||
getViewLog: jest.fn().mockReturnValue({
|
||||
verbose: jest.fn(),
|
||||
info: jest.fn(),
|
||||
error: jest.fn(),
|
||||
silly: jest.fn(),
|
||||
}),
|
||||
on: jest.fn(),
|
||||
}));
|
||||
|
||||
const server = new MattermostServer({name: 'server_name', url: 'http://server-1.com'});
|
||||
const view = new MessagingView(server, true);
|
||||
@@ -268,6 +279,7 @@ describe('main/views/MattermostWebContentsView', () => {
|
||||
mattermostView.setInitialized = jest.fn();
|
||||
mattermostView.updateMentionsFromTitle = jest.fn();
|
||||
mattermostView.findUnreadState = jest.fn();
|
||||
ServerManager.getRemoteInfo.mockReturnValue({serverVersion: '10.0.0'});
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
|
@@ -4,6 +4,7 @@
|
||||
import {WebContentsView, app, ipcMain} from 'electron';
|
||||
import type {WebContentsViewConstructorOptions, Event, Input} from 'electron/main';
|
||||
import {EventEmitter} from 'events';
|
||||
import semver from 'semver';
|
||||
|
||||
import AppState from 'common/appState';
|
||||
import {
|
||||
@@ -16,6 +17,7 @@ import {
|
||||
BROWSER_HISTORY_STATUS_UPDATED,
|
||||
CLOSE_SERVERS_DROPDOWN,
|
||||
CLOSE_DOWNLOADS_DROPDOWN,
|
||||
LOAD_INCOMPATIBLE_SERVER,
|
||||
} from 'common/communication';
|
||||
import type {Logger} from 'common/log';
|
||||
import ServerManager from 'common/servers/serverManager';
|
||||
@@ -426,15 +428,22 @@ export class MattermostWebContentsView extends EventEmitter {
|
||||
|
||||
private loadSuccess = (loadURL: string) => {
|
||||
return () => {
|
||||
this.log.verbose(`finished loading ${loadURL}`);
|
||||
MainWindow.sendToRenderer(LOAD_SUCCESS, this.id);
|
||||
this.maxRetries = MAX_SERVER_RETRIES;
|
||||
this.status = Status.WAITING_MM;
|
||||
this.removeLoading = setTimeout(this.setInitialized, MAX_LOADING_SCREEN_SECONDS, true);
|
||||
this.emit(LOAD_SUCCESS, this.id, loadURL);
|
||||
const mainWindow = MainWindow.get();
|
||||
if (mainWindow && this.currentURL) {
|
||||
this.setBounds(getWindowBoundaries(mainWindow));
|
||||
const serverInfo = ServerManager.getRemoteInfo(this.view.server.id);
|
||||
if (serverInfo?.serverVersion && semver.gte(serverInfo.serverVersion, '9.4.0')) {
|
||||
this.log.verbose(`finished loading ${loadURL}`);
|
||||
MainWindow.sendToRenderer(LOAD_SUCCESS, this.id);
|
||||
this.maxRetries = MAX_SERVER_RETRIES;
|
||||
this.status = Status.WAITING_MM;
|
||||
this.removeLoading = setTimeout(this.setInitialized, MAX_LOADING_SCREEN_SECONDS, true);
|
||||
this.emit(LOAD_SUCCESS, this.id, loadURL);
|
||||
const mainWindow = MainWindow.get();
|
||||
if (mainWindow && this.currentURL) {
|
||||
this.setBounds(getWindowBoundaries(mainWindow));
|
||||
}
|
||||
} else {
|
||||
MainWindow.sendToRenderer(LOAD_INCOMPATIBLE_SERVER, this.id, loadURL.toString());
|
||||
this.emit(LOAD_FAILED, this.id, 'Incompatible server version', loadURL.toString());
|
||||
this.status = Status.ERROR;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
@@ -31,6 +31,7 @@ import {
|
||||
UNREADS_AND_MENTIONS,
|
||||
TAB_LOGIN_CHANGED,
|
||||
DEVELOPER_MODE_UPDATED,
|
||||
OPEN_SERVER_UPGRADE_LINK,
|
||||
} from 'common/communication';
|
||||
import Config from 'common/config';
|
||||
import {Logger} from 'common/log';
|
||||
@@ -42,7 +43,7 @@ import Utils from 'common/utils/util';
|
||||
import type {MattermostView} from 'common/views/View';
|
||||
import {TAB_MESSAGING} from 'common/views/View';
|
||||
import {handleWelcomeScreenModal} from 'main/app/intercom';
|
||||
import {flushCookiesStore} from 'main/app/utils';
|
||||
import {flushCookiesStore, updateServerInfos} from 'main/app/utils';
|
||||
import DeveloperMode from 'main/developerMode';
|
||||
import performanceMonitor from 'main/performanceMonitor';
|
||||
import PermissionsManager from 'main/permissionsManager';
|
||||
@@ -82,6 +83,7 @@ export class ViewManager {
|
||||
ipcMain.on(BROWSER_HISTORY_PUSH, this.handleBrowserHistoryPush);
|
||||
ipcMain.on(TAB_LOGIN_CHANGED, this.handleTabLoginChanged);
|
||||
ipcMain.on(OPEN_SERVER_EXTERNALLY, this.handleOpenServerExternally);
|
||||
ipcMain.on(OPEN_SERVER_UPGRADE_LINK, this.handleOpenServerUpgradeLink);
|
||||
ipcMain.on(UNREADS_AND_MENTIONS, this.handleUnreadsAndMentionsChanged);
|
||||
ipcMain.on(SESSION_EXPIRED, this.handleSessionExpired);
|
||||
|
||||
@@ -91,8 +93,11 @@ export class ViewManager {
|
||||
DeveloperMode.on(DEVELOPER_MODE_UPDATED, this.handleDeveloperModeUpdated);
|
||||
}
|
||||
|
||||
private init = () => {
|
||||
private init = async () => {
|
||||
if (ServerManager.hasServers()) {
|
||||
// TODO: This init should be happening elsewhere, future refactor will fix this
|
||||
ServerViewState.init();
|
||||
await updateServerInfos(ServerManager.getAllServers());
|
||||
LoadingScreen.show();
|
||||
ServerManager.getAllServers().forEach((server) => this.loadServer(server));
|
||||
this.showInitial();
|
||||
@@ -303,7 +308,6 @@ export class ViewManager {
|
||||
private showInitial = () => {
|
||||
log.verbose('showInitial');
|
||||
|
||||
// TODO: This init should be happening elsewhere, future refactor will fix this
|
||||
ServerViewState.init();
|
||||
if (ServerManager.hasServers()) {
|
||||
const lastActiveServer = ServerViewState.getCurrentServer();
|
||||
@@ -577,6 +581,12 @@ export class ViewManager {
|
||||
shell.openExternal(view.view.server.url.toString());
|
||||
};
|
||||
|
||||
private handleOpenServerUpgradeLink = () => {
|
||||
if (Config.upgradeLink) {
|
||||
shell.openExternal(Config.upgradeLink);
|
||||
}
|
||||
};
|
||||
|
||||
private handleUnreadsAndMentionsChanged = (e: IpcMainEvent, isUnread: boolean, mentionCount: number) => {
|
||||
log.silly('handleUnreadsAndMentionsChanged', {webContentsId: e.sender.id, isUnread, mentionCount});
|
||||
|
||||
|
Reference in New Issue
Block a user