[MM-36431] Logic to support multiple configurable tabs per server (#1655)

* Updated config, added types and classes for messaging tab

* Working app with tabs and servers

* Remainder of logic

* Make base tab abstract class

* Account for new app case

* Merge'd

* PR feedback
This commit is contained in:
Devin Binnie
2021-07-20 09:05:53 -04:00
committed by GitHub
parent 29a049e8ae
commit d3599fc500
30 changed files with 636 additions and 361 deletions

View File

@@ -46,12 +46,15 @@ class Root extends React.PureComponent<Record<string, never>, State> {
this.setState({config});
}
moveTabs = (originalOrder: number, newOrder: number): number | undefined => {
moveTabs = (teamName: string, originalOrder: number, newOrder: number): number | undefined => {
if (!this.state.config) {
throw new Error('No config');
}
const teams = this.state.config.teams.concat();
const tabOrder = teams.map((team, index) => {
const currentTeamIndex = teams.findIndex((team) => team.name === teamName);
const tabs = teams[currentTeamIndex].tabs.concat();
const tabOrder = tabs.map((team, index) => {
return {
index,
order: team.order,
@@ -66,8 +69,9 @@ class Root extends React.PureComponent<Record<string, never>, State> {
if (order === newOrder) {
teamIndex = t.index;
}
teams[t.index].order = order;
tabs[t.index].order = order;
});
teams[currentTeamIndex].tabs = tabs;
this.setState({
config: {
...this.state.config,
@@ -118,7 +122,6 @@ class Root extends React.PureComponent<Record<string, never>, State> {
return (
<MainPage
teams={config.teams}
showAddServerButton={config.enableServerManagement}
moveTabs={this.moveTabs}
openMenu={this.openMenu}
darkMode={config.darkMode}