[MM-52333] Create Server View State module, move into new app module (#2739)

* Create Server View State Module

* Move currentServerId to serverViewState

* Move view state into server view state module

* PR feedback/bug fixes
This commit is contained in:
Devin Binnie
2023-06-12 08:35:14 -04:00
committed by GitHub
parent a7c25ee95e
commit 21e3044ff2
21 changed files with 505 additions and 486 deletions

View File

@@ -8,6 +8,8 @@ import {getDoNotDisturb as getDarwinDoNotDisturb} from 'macos-notification-state
import {localizeMessage} from 'main/i18nManager';
import ServerManager from 'common/servers/serverManager';
import ServerViewState from 'app/serverViewState';
import {createTemplate} from './app';
jest.mock('electron', () => {
@@ -51,12 +53,12 @@ jest.mock('main/i18nManager', () => ({
}));
jest.mock('common/servers/serverManager', () => ({
hasServers: jest.fn(),
getCurrentServer: jest.fn(),
getOrderedServers: jest.fn(),
getOrderedTabsForServer: jest.fn(),
}));
jest.mock('main/app/servers', () => ({
jest.mock('app/serverViewState', () => ({
switchServer: jest.fn(),
getCurrentServer: jest.fn(),
}));
jest.mock('main/diagnostics', () => ({}));
jest.mock('main/downloadsManager', () => ({
@@ -107,7 +109,7 @@ describe('main/menus/app', () => {
];
beforeEach(() => {
ServerManager.getCurrentServer.mockReturnValue(servers[0]);
ServerViewState.getCurrentServer.mockReturnValue(servers[0]);
ServerManager.getOrderedServers.mockReturnValue(servers);
ServerManager.getOrderedTabsForServer.mockReturnValue(views);
getDarwinDoNotDisturb.mockReturnValue(false);
@@ -278,7 +280,7 @@ describe('main/menus/app', () => {
}
return id;
});
ServerManager.getCurrentServer.mockImplementation(() => ({id: servers[0].id}));
ServerViewState.getCurrentServer.mockImplementation(() => ({id: servers[0].id}));
const modifiedViews = [...Array(15).keys()].map((key) => ({
id: `view-${key}`,

View File

@@ -6,6 +6,8 @@
import {app, ipcMain, Menu, MenuItemConstructorOptions, MenuItem, session, shell, WebContents, clipboard} from 'electron';
import log from 'electron-log';
import ServerViewState from 'app/serverViewState';
import {OPEN_SERVERS_DROPDOWN, SHOW_NEW_SERVER_MODAL} from 'common/communication';
import {t} from 'common/utils/util';
import {getViewDisplayName, ViewType} from 'common/views/View';
@@ -18,8 +20,6 @@ import downloadsManager from 'main/downloadsManager';
import Diagnostics from 'main/diagnostics';
import ViewManager from 'main/views/viewManager';
import SettingsWindow from 'main/windows/settingsWindow';
import {selectNextView, selectPreviousView} from 'main/app/views';
import {switchServer} from 'main/app/servers';
export function createTemplate(config: Config, updateManager: UpdateManager) {
const separatorItem: MenuItemConstructorOptions = {
@@ -266,10 +266,10 @@ export function createTemplate(config: Config, updateManager: UpdateManager) {
label: server.name,
accelerator: `${process.platform === 'darwin' ? 'Cmd+Ctrl' : 'Ctrl+Shift'}+${i + 1}`,
click() {
switchServer(server.id);
ServerViewState.switchServer(server.id);
},
});
if (ServerManager.getCurrentServer().id === server.id) {
if (ServerViewState.getCurrentServer().id === server.id) {
ServerManager.getOrderedTabsForServer(server.id).slice(0, 9).forEach((view, i) => {
items.push({
label: ` ${localizeMessage(`common.views.${view.type}`, getViewDisplayName(view.type as ViewType))}`,
@@ -285,14 +285,14 @@ export function createTemplate(config: Config, updateManager: UpdateManager) {
label: localizeMessage('main.menus.app.window.selectNextTab', 'Select Next Tab'),
accelerator: 'Ctrl+Tab',
click() {
selectNextView();
ServerViewState.selectNextView();
},
enabled: (servers.length > 1),
}, {
label: localizeMessage('main.menus.app.window.selectPreviousTab', 'Select Previous Tab'),
accelerator: 'Ctrl+Shift+Tab',
click() {
selectPreviousView();
ServerViewState.selectPreviousView();
},
enabled: (servers.length > 1),
}, ...(isMac ? [separatorItem, {

View File

@@ -14,7 +14,7 @@ jest.mock('main/i18nManager', () => ({
jest.mock('common/servers/serverManager', () => ({
getOrderedServers: jest.fn(),
}));
jest.mock('main/app/servers', () => ({
jest.mock('app/serverViewState', () => ({
switchServer: jest.fn(),
}));
jest.mock('main/windows/settingsWindow', () => ({}));

View File

@@ -5,11 +5,12 @@
import {Menu, MenuItem, MenuItemConstructorOptions} from 'electron';
import ServerViewState from 'app/serverViewState';
import ServerManager from 'common/servers/serverManager';
import {localizeMessage} from 'main/i18nManager';
import SettingsWindow from 'main/windows/settingsWindow';
import {switchServer} from 'main/app/servers';
export function createTemplate() {
const servers = ServerManager.getOrderedServers();
@@ -18,7 +19,7 @@ export function createTemplate() {
return {
label: server.name.length > 50 ? `${server.name.slice(0, 50)}...` : server.name,
click: () => {
switchServer(server.id);
ServerViewState.switchServer(server.id);
},
};
}), {