[MM-50485] Migrate app to ServerManager, remove view names and replace with IDs (#2672)

* Migrate app to ServerManager, remove view names and replace with IDs

* Fixed a test

* Fixed a bug when adding the initial server

* Merge'd

* Bug fixes and PR feedback
This commit is contained in:
Devin Binnie
2023-04-12 12:52:34 -04:00
committed by GitHub
parent d87097b1eb
commit 686b4ac9f1
58 changed files with 1570 additions and 2175 deletions

View File

@@ -11,22 +11,24 @@ export type Team = {
url: string;
}
export type FullTeam = Team & {
order: number;
lastActiveTab?: number;
}
export type ConfigTab = Tab & {
order: number;
}
export type ConfigServer = FullTeam & {
export type ConfigServer = Team & {
order: number;
lastActiveTab?: number;
tabs: ConfigTab[];
}
export type TeamWithIndex = FullTeam & {index: number};
export type TeamWithTabs = ConfigServer & {tabs: Tab[]};
export type TeamWithTabsAndGpo = TeamWithTabs & {isGpo?: boolean};
export type MattermostTeam = Team & {
id?: string;
isPredefined?: boolean;
}
export type MattermostTab = Tab & {
id?: string;
}
export type Config = ConfigV3;
@@ -111,7 +113,7 @@ export type ConfigV0 = {version: 0; url: string};
export type AnyConfig = ConfigV3 | ConfigV2 | ConfigV1 | ConfigV0;
export type BuildConfig = {
defaultTeams?: FullTeam[];
defaultTeams?: Team[];
helpLink: string;
enableServerManagement: boolean;
enableAutoUpdater: boolean;
@@ -125,8 +127,7 @@ export type RegistryConfig = {
enableAutoUpdater: boolean;
}
export type CombinedConfig = ConfigV3 & BuildConfig & {
registryTeams: Team[];
export type CombinedConfig = Omit<ConfigV3, 'teams'> & Omit<BuildConfig, 'defaultTeams'> & {
appName: string;
useNativeWindow: boolean;
}

View File

@@ -2,7 +2,6 @@
// See LICENSE.txt for license information.
export type RemoteInfo = {
name: string;
serverVersion?: string;
siteURL?: string;
hasFocalboard?: boolean;

View File

@@ -1,11 +1,6 @@
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
export type ServerFromURL = {
name: string;
url: string;
}
export type Boundaries = {
maxX: number;
maxY: number;

View File

@@ -5,7 +5,7 @@ import {ipcRenderer, Rectangle} from 'electron/renderer';
import {Language} from '../../i18n/i18n';
import {CombinedConfig, LocalConfiguration, Team, TeamWithTabsAndGpo} from './config';
import {CombinedConfig, LocalConfiguration, MattermostTab, MattermostTeam} from './config';
import {DownloadedItem, DownloadedItems, DownloadsMenuOpenEventPayload} from './downloads';
import {SaveQueueItem} from './settings';
@@ -34,14 +34,14 @@ declare global {
openAppMenu: () => void;
closeTeamsDropdown: () => void;
openTeamsDropdown: () => void;
switchTab: (serverName: string, tabName: string) => void;
closeTab: (serverName: string, tabName: string) => void;
switchTab: (tabId: string) => void;
closeTab: (tabId: string) => void;
closeWindow: () => void;
minimizeWindow: () => void;
maximizeWindow: () => void;
restoreWindow: () => void;
doubleClickOnWindow: (windowName?: string) => void;
focusBrowserView: () => void;
focusCurrentView: () => void;
reloadCurrentView: () => void;
closeDownloadsDropdown: () => void;
closeDownloadsDropdownMenu: () => void;
@@ -50,25 +50,31 @@ declare global {
checkForUpdates: () => void;
updateConfiguration: (saveQueueItems: SaveQueueItem[]) => void;
updateTeams: (updatedTeams: Team[]) => Promise<void>;
getConfiguration: (option?: keyof CombinedConfig) => Promise<CombinedConfig[keyof CombinedConfig] | CombinedConfig>;
updateServerOrder: (serverOrder: string[]) => Promise<void>;
updateTabOrder: (serverId: string, tabOrder: string[]) => Promise<void>;
getLastActive: () => Promise<{server: string; tab: string}>;
getOrderedServers: () => Promise<MattermostTeam[]>;
getOrderedTabsForServer: (serverId: string) => Promise<MattermostTab[]>;
onUpdateServers: (listener: () => void) => void;
getConfiguration: () => Promise<CombinedConfig[keyof CombinedConfig] | CombinedConfig>;
getVersion: () => Promise<{name: string; version: string}>;
getDarkMode: () => Promise<boolean>;
requestHasDownloads: () => Promise<boolean>;
getFullScreenStatus: () => Promise<boolean>;
getAvailableSpellCheckerLanguages: () => Promise<string[]>;
getAvailableLanguages: () => Promise<string[]>;
getLocalConfiguration: (option?: keyof LocalConfiguration) => Promise<LocalConfiguration[keyof LocalConfiguration] | Partial<LocalConfiguration>>;
getLocalConfiguration: () => Promise<LocalConfiguration[keyof LocalConfiguration] | Partial<LocalConfiguration>>;
getDownloadLocation: (downloadLocation?: string) => Promise<string>;
getLanguageInformation: () => Promise<Language>;
onSynchronizeConfig: (listener: () => void) => void;
onReloadConfiguration: (listener: () => void) => void;
onDarkModeChange: (listener: (darkMode: boolean) => void) => void;
onLoadRetry: (listener: (viewName: string, retry: Date, err: string, loadUrl: string) => void) => void;
onLoadSuccess: (listener: (viewName: string) => void) => void;
onLoadFailed: (listener: (viewName: string, err: string, loadUrl: string) => void) => void;
onSetActiveView: (listener: (serverName: string, tabName: string) => void) => void;
onLoadRetry: (listener: (viewId: string, retry: Date, err: string, loadUrl: string) => void) => void;
onLoadSuccess: (listener: (viewId: string) => void) => void;
onLoadFailed: (listener: (viewId: string, err: string, loadUrl: string) => void) => void;
onSetActiveView: (listener: (serverId: string, tabId: string) => void) => void;
onMaximizeChange: (listener: (maximize: boolean) => void) => void;
onEnterFullScreen: (listener: () => void) => void;
onLeaveFullScreen: (listener: () => void) => void;
@@ -127,13 +133,13 @@ declare global {
serverDropdown: {
requestInfo: () => void;
sendSize: (width: number, height: number) => void;
switchServer: (serverName: string) => void;
switchServer: (serverId: string) => void;
showNewServerModal: () => void;
showEditServerModal: (serverName: string) => void;
showRemoveServerModal: (serverName: string) => void;
showEditServerModal: (serverId: string) => void;
showRemoveServerModal: (serverId: string) => void;
onUpdateServerDropdown: (listener: (
teams: TeamWithTabsAndGpo[],
teams: MattermostTeam[],
darkMode: boolean,
windowBounds: Rectangle,
activeTeam?: string,