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 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, {}, {});

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 {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}`);