[MM-54979] Stop auto opening Boards/Playbooks tabs, close existing open tabs once for users that might have them open (#2886)

This commit is contained in:
Devin Binnie 2023-10-25 09:18:50 -04:00 committed by GitHub
parent 932eff2ea9
commit 8a52a94dd6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 13 additions and 75 deletions

View file

@ -29,7 +29,7 @@ describe('common/config/migrationPreferences', () => {
getValue: () => false, getValue: () => false,
setValue: jest.fn(), setValue: jest.fn(),
})); }));
expect(migrateConfigItems({})).toBe(true); expect(migrateConfigItems({teams: []})).toBe(true);
Object.defineProperty(process, 'platform', { Object.defineProperty(process, 'platform', {
value: originalPlatform, value: originalPlatform,
}); });

View file

@ -4,6 +4,7 @@
import {Config, MigrationInfo} from 'types/config'; import {Config, MigrationInfo} from 'types/config';
import JsonFileManager from 'common/JsonFileManager'; import JsonFileManager from 'common/JsonFileManager';
import {TAB_MESSAGING} from 'common/views/View';
import {migrationInfoPath} from 'main/constants'; import {migrationInfoPath} from 'main/constants';
@ -17,5 +18,15 @@ export default function migrateConfigItems(config: Config) {
didMigrate = true; didMigrate = true;
} }
if (!migrationPrefs.getValue('closeExtraTabs')) {
config.teams.forEach((team) => {
team.tabs.filter((tab) => tab.name !== TAB_MESSAGING).forEach((tab) => {
tab.isOpen = false;
});
});
migrationPrefs.setValue('closeExtraTabs', true);
didMigrate = true;
}
return didMigrate; return didMigrate;
} }

View file

@ -53,42 +53,6 @@ describe('common/servers/serverManager', () => {
expect(serverManager.persistServers).not.toHaveBeenCalled(); expect(serverManager.persistServers).not.toHaveBeenCalled();
}); });
it('should open all views', async () => {
serverManager.updateRemoteInfos(new Map([['server-1', {
siteURL: 'http://server-1.com',
serverVersion: '6.0.0',
hasPlaybooks: true,
hasFocalboard: true,
}]]));
expect(serverManager.views.get('view-2').isOpen).toBe(true);
expect(serverManager.views.get('view-3').isOpen).toBe(true);
});
it('should open only playbooks', async () => {
serverManager.updateRemoteInfos(new Map([['server-1', {
siteURL: 'http://server-1.com',
serverVersion: '6.0.0',
hasPlaybooks: true,
hasFocalboard: false,
}]]));
expect(serverManager.views.get('view-2').isOpen).toBe(true);
expect(serverManager.views.get('view-3').isOpen).toBeUndefined();
});
it('should open none when server version is too old', async () => {
serverManager.updateRemoteInfos(new Map([['server-1', {
siteURL: 'http://server-1.com',
serverVersion: '5.0.0',
hasPlaybooks: true,
hasFocalboard: true,
}]]));
expect(serverManager.views.get('view-2').isOpen).toBeUndefined();
expect(serverManager.views.get('view-3').isOpen).toBeUndefined();
});
it('should update server URL using site URL', async () => { it('should update server URL using site URL', async () => {
serverManager.updateRemoteInfos(new Map([['server-1', { serverManager.updateRemoteInfos(new Map([['server-1', {
siteURL: 'http://server-2.com', siteURL: 'http://server-2.com',

View file

@ -18,7 +18,6 @@ import MessagingView from 'common/views/MessagingView';
import FocalboardView from 'common/views/FocalboardView'; import FocalboardView from 'common/views/FocalboardView';
import PlaybooksView from 'common/views/PlaybooksView'; import PlaybooksView from 'common/views/PlaybooksView';
import {getFormattedPathName, isInternalURL, parseURL} from 'common/utils/url'; import {getFormattedPathName, isInternalURL, parseURL} from 'common/utils/url';
import Utils from 'common/utils/util';
const log = new Logger('ServerManager'); const log = new Logger('ServerManager');
@ -108,7 +107,6 @@ export class ServerManager extends EventEmitter {
remoteInfos.forEach((remoteInfo, serverId) => { remoteInfos.forEach((remoteInfo, serverId) => {
this.remoteInfo.set(serverId, remoteInfo); this.remoteInfo.set(serverId, remoteInfo);
hasUpdates = this.updateServerURL(serverId) || hasUpdates; hasUpdates = this.updateServerURL(serverId) || hasUpdates;
hasUpdates = this.openExtraViews(serverId) || hasUpdates;
}); });
if (hasUpdates) { if (hasUpdates) {
@ -379,42 +377,6 @@ export class ServerManager extends EventEmitter {
return false; return false;
} }
private openExtraViews = (serverId: string) => {
const server = this.servers.get(serverId);
const remoteInfo = this.remoteInfo.get(serverId);
if (!(server && remoteInfo)) {
return false;
}
if (!(remoteInfo.serverVersion && Utils.isVersionGreaterThanOrEqualTo(remoteInfo.serverVersion, '6.0.0'))) {
return false;
}
let hasUpdates = false;
const viewOrder = this.viewOrder.get(serverId);
if (viewOrder) {
viewOrder.forEach((viewId) => {
const view = this.views.get(viewId);
if (view) {
if (view.type === TAB_PLAYBOOKS && remoteInfo.hasPlaybooks && typeof view.isOpen === 'undefined') {
log.withPrefix(view.id).verbose('opening Playbooks');
view.isOpen = true;
this.views.set(viewId, view);
hasUpdates = true;
}
if (view.type === TAB_FOCALBOARD && remoteInfo.hasFocalboard && typeof view.isOpen === 'undefined') {
log.withPrefix(view.id).verbose('opening Boards');
view.isOpen = true;
this.views.set(viewId, view);
hasUpdates = true;
}
}
});
}
return hasUpdates;
}
private includeId = (id: string, ...prefixes: string[]) => { private includeId = (id: string, ...prefixes: string[]) => {
const shouldInclude = ['debug', 'silly'].includes(getLevel()); const shouldInclude = ['debug', 'silly'].includes(getLevel());
return shouldInclude ? [id, ...prefixes] : prefixes; return shouldInclude ? [id, ...prefixes] : prefixes;

View file

@ -131,4 +131,5 @@ export type LocalConfiguration = Config & {
export type MigrationInfo = { export type MigrationInfo = {
updateTrayIconWin32: boolean; updateTrayIconWin32: boolean;
masConfigs: boolean; masConfigs: boolean;
closeExtraTabs: boolean;
} }