only refresh view when the server URL changes (MM-34565) (#2082) (#2094)

* only refresh view when the server URL changes (MM-34565)

Create views of current and incoming tabs indexed
by unique [URL, TABTYPE] tuples, and diffing them.
Tuples that are identical are recycled, merely
porting the new server name over.

* lint fixes

* WIP

* linting

* remove dependency on by, duad

* provide a more exaplanatory name for TabView.prototype.tuple (urlTypeTuple)

* minor improvements in viewManager

- remove stateful behaviour from makeView
- more descriptive variable names when looping
- create new arrays before sorting (sort is in-place by default)

* resolve linting errors
This commit is contained in:
vas
2022-05-20 18:06:43 +03:00
committed by GitHub
parent d74dba5bad
commit 4efac368d5
8 changed files with 179 additions and 62 deletions

View File

@@ -1,9 +1,11 @@
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {Tuple as tuple} from '@bloomberg/record-tuple-polyfill';
import {MattermostServer} from 'common/servers/MattermostServer';
import {getTabViewName, TabType, TabView} from './TabView';
import {getTabViewName, TabType, TabView, TabTuple} from './TabView';
export default abstract class BaseTabView implements TabView {
server: MattermostServer;
@@ -14,6 +16,9 @@ export default abstract class BaseTabView implements TabView {
get name(): string {
return getTabViewName(this.server.name, this.type);
}
get urlTypeTuple(): TabTuple {
return tuple(this.url.href, this.type) as TabTuple;
}
get url(): URL {
throw new Error('Not implemented');
}