Reload server info on retry (#3356)

* Reload server info on retry

* test
This commit is contained in:
Devin Binnie
2025-02-27 09:55:57 -05:00
committed by GitHub
parent fb0830d4fe
commit a4019ddd72
2 changed files with 31 additions and 1 deletions

View File

@@ -8,6 +8,8 @@ import {LOAD_FAILED, UPDATE_TARGET_URL} from 'common/communication';
import {MattermostServer} from 'common/servers/MattermostServer'; import {MattermostServer} from 'common/servers/MattermostServer';
import ServerManager from 'common/servers/serverManager'; import ServerManager from 'common/servers/serverManager';
import MessagingView from 'common/views/MessagingView'; import MessagingView from 'common/views/MessagingView';
import {updateServerInfos} from 'main/app/utils';
import {getServerAPI} from 'main/server/serverAPI';
import {MattermostWebContentsView} from './MattermostWebContentsView'; import {MattermostWebContentsView} from './MattermostWebContentsView';
@@ -64,6 +66,9 @@ jest.mock('../utils', () => ({
jest.mock('main/developerMode', () => ({ jest.mock('main/developerMode', () => ({
get: jest.fn(), get: jest.fn(),
})); }));
jest.mock('main/app/utils', () => ({
updateServerInfos: jest.fn(),
}));
jest.mock('main/performanceMonitor', () => ({ jest.mock('main/performanceMonitor', () => ({
registerView: jest.fn(), registerView: jest.fn(),
registerServerView: jest.fn(), registerServerView: jest.fn(),
@@ -79,6 +84,9 @@ jest.mock('common/servers/serverManager', () => ({
}), }),
on: jest.fn(), on: jest.fn(),
})); }));
jest.mock('main/server/serverAPI', () => ({
getServerAPI: jest.fn(),
}));
const server = new MattermostServer({name: 'server_name', url: 'http://server-1.com'}); const server = new MattermostServer({name: 'server_name', url: 'http://server-1.com'});
const view = new MessagingView(server, true); 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', () => { describe('goToOffset', () => {
const window = {on: jest.fn()}; const window = {on: jest.fn()};
const mattermostView = new MattermostWebContentsView(view, {}, {}); const mattermostView = new MattermostWebContentsView(view, {}, {});

View File

@@ -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 {RELOAD_INTERVAL, MAX_SERVER_RETRIES, SECOND, MAX_LOADING_SCREEN_SECONDS} from 'common/utils/constants';
import {isInternalURL, parseURL} from 'common/utils/url'; import {isInternalURL, parseURL} from 'common/utils/url';
import {TAB_MESSAGING, type MattermostView} from 'common/views/View'; import {TAB_MESSAGING, type MattermostView} from 'common/views/View';
import {updateServerInfos} from 'main/app/utils';
import DeveloperMode from 'main/developerMode'; import DeveloperMode from 'main/developerMode';
import performanceMonitor from 'main/performanceMonitor'; import performanceMonitor from 'main/performanceMonitor';
import {getServerAPI} from 'main/server/serverAPI'; import {getServerAPI} from 'main/server/serverAPI';
@@ -411,7 +412,10 @@ export class MattermostWebContentsView extends EventEmitter {
getServerAPI( getServerAPI(
parsedURL, parsedURL,
false, false,
() => this.reload(loadURL), async () => {
await updateServerInfos([this.view.server]);
this.reload(loadURL);
},
() => {}, () => {},
(error: Error) => { (error: Error) => {
this.log.debug(`Cannot reach server: ${error}`); this.log.debug(`Cannot reach server: ${error}`);