diff --git a/src/main/views/MattermostWebContentsView.test.js b/src/main/views/MattermostWebContentsView.test.js index faf9e11f..c27fd89b 100644 --- a/src/main/views/MattermostWebContentsView.test.js +++ b/src/main/views/MattermostWebContentsView.test.js @@ -8,6 +8,8 @@ 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 {updateServerInfos} from 'main/app/utils'; +import {getServerAPI} from 'main/server/serverAPI'; import {MattermostWebContentsView} from './MattermostWebContentsView'; @@ -64,6 +66,9 @@ jest.mock('../utils', () => ({ jest.mock('main/developerMode', () => ({ get: jest.fn(), })); +jest.mock('main/app/utils', () => ({ + updateServerInfos: jest.fn(), +})); jest.mock('main/performanceMonitor', () => ({ registerView: jest.fn(), registerServerView: jest.fn(), @@ -79,6 +84,9 @@ jest.mock('common/servers/serverManager', () => ({ }), on: jest.fn(), })); +jest.mock('main/server/serverAPI', () => ({ + getServerAPI: jest.fn(), +})); const server = new MattermostServer({name: 'server_name', url: 'http://server-1.com'}); const view = new MessagingView(server, true); @@ -207,6 +215,24 @@ describe('main/views/MattermostWebContentsView', () => { }); }); + describe('retryInBackground', () => { + const window = {on: jest.fn()}; + const mattermostView = new MattermostWebContentsView(view, {}, {}); + mattermostView.reload = jest.fn(); + + beforeEach(() => { + MainWindow.get.mockReturnValue(window); + mattermostView.webContentsView.webContents.loadURL.mockImplementation(() => Promise.resolve()); + getServerAPI.mockImplementation((url, isAuth, onSuccess) => onSuccess()); + }); + + it('should call updateServerInfos and reload on successful retry', async () => { + await mattermostView.retryInBackground('http://server-1.com')(); + expect(updateServerInfos).toBeCalled(); + expect(mattermostView.reload).toBeCalled(); + }); + }); + describe('goToOffset', () => { const window = {on: jest.fn()}; const mattermostView = new MattermostWebContentsView(view, {}, {}); diff --git a/src/main/views/MattermostWebContentsView.ts b/src/main/views/MattermostWebContentsView.ts index e91ad0e4..d3e26dbe 100644 --- a/src/main/views/MattermostWebContentsView.ts +++ b/src/main/views/MattermostWebContentsView.ts @@ -24,6 +24,7 @@ import ServerManager from 'common/servers/serverManager'; import {RELOAD_INTERVAL, MAX_SERVER_RETRIES, SECOND, MAX_LOADING_SCREEN_SECONDS} from 'common/utils/constants'; import {isInternalURL, parseURL} from 'common/utils/url'; import {TAB_MESSAGING, type MattermostView} from 'common/views/View'; +import {updateServerInfos} from 'main/app/utils'; import DeveloperMode from 'main/developerMode'; import performanceMonitor from 'main/performanceMonitor'; import {getServerAPI} from 'main/server/serverAPI'; @@ -411,7 +412,10 @@ export class MattermostWebContentsView extends EventEmitter { getServerAPI( parsedURL, false, - () => this.reload(loadURL), + async () => { + await updateServerInfos([this.view.server]); + this.reload(loadURL); + }, () => {}, (error: Error) => { this.log.debug(`Cannot reach server: ${error}`);