Skip to content

Commit 652bc0a

Browse files
committed
tab: Rename index to order.
After introducing id field to the server object, index was just an indicator of the ordering of tabs in the tab list. This commit changes the name to accurately represent the field's function. This commit should make it easier to change the order of tabs in the future. Since order is not the same as index anymore, we add an additional function called getTabByOrder to replace the leftover instances of us fetching a tab by it's index when it meant to fetch a tab by it's id. After this commit, we should not have any instances of accessing tabs directly by their index in the server list or the tab list.
1 parent d731011 commit 652bc0a

File tree

5 files changed

+38
-24
lines changed

5 files changed

+38
-24
lines changed

app/common/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ export type TabData = {
2929
role: TabRole;
3030
page?: TabPage;
3131
label: string;
32-
index: number;
32+
order: number;
3333
id: string;
3434
};

app/main/menu.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ function getWindowSubmenu(
323323
initialSubmenu.push({
324324
label: tab.label,
325325
accelerator:
326-
tab.role === "function" ? "" : `${shortcutKey} + ${tab.index + 1}`,
326+
tab.role === "function" ? "" : `${shortcutKey} + ${tab.order + 1}`,
327327
checked: tab.id === activeTabId,
328328
click(_item, focusedWindow) {
329329
if (focusedWindow) {
@@ -699,24 +699,28 @@ async function checkForUpdate(): Promise<void> {
699699
await appUpdater(true);
700700
}
701701

702+
function getTabByOrder(tabs: TabData[], order: number): TabData | undefined {
703+
return tabs.find((tab) => tab.order === order);
704+
}
705+
702706
function getNextServer(tabs: TabData[], activeTabId: string): string {
703707
const activeTab = tabs.find((tab) => tab.id === activeTabId)!;
704-
let {index} = activeTab;
708+
let {order} = activeTab;
705709
do {
706-
index = (index + 1) % tabs.length;
707-
} while (tabs[index]?.role !== "server");
710+
order = (order + 1) % tabs.length;
711+
} while (getTabByOrder(tabs, order)?.role !== "server");
708712

709-
return tabs[index].id;
713+
return getTabByOrder(tabs, order)!.id;
710714
}
711715

712716
function getPreviousServer(tabs: TabData[], activeTabId: string): string {
713717
const activeTab = tabs.find((tab) => tab.id === activeTabId)!;
714-
let {index} = activeTab;
718+
let {order} = activeTab;
715719
do {
716-
index = (index - 1 + tabs.length) % tabs.length;
717-
} while (tabs[index]?.role !== "server");
720+
order = (order - 1) % tabs.length;
721+
} while (getTabByOrder(tabs, order)?.role !== "server");
718722

719-
return tabs[index].id;
723+
return getTabByOrder(tabs, order)!.id;
720724
}
721725

722726
export function setMenu(properties: MenuProperties): void {

app/renderer/js/components/server-tab.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,13 @@ export default class ServerTab extends Tab {
7777

7878
generateShortcutText(): string {
7979
// Only provide shortcuts for server [0..9]
80-
if (this.properties.index >= 9) {
80+
if (this.properties.order >= 9) {
8181
return "";
8282
}
8383

84-
const shownIndex = this.properties.index + 1;
84+
const shownIndex = this.properties.order + 1;
8585

86-
// Array index == Shown index - 1
86+
// Array order == Shown order - 1
8787
ipcRenderer.send("switch-server-tab", this.properties.tabId);
8888

8989
return process.platform === "darwin"

app/renderer/js/components/tab.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export type TabProperties = {
77
label: string;
88
$root: Element;
99
onClick: () => void;
10-
index: number;
10+
order: number;
1111
tabId: string;
1212
onHover?: () => void;
1313
onHoverOut?: () => void;

app/renderer/js/main.ts

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -333,27 +333,27 @@ export class ServerManagerView {
333333
}
334334

335335
// Open last active tab
336-
const firstTab = this.tabs[0];
336+
const firstTab = this.getTabByOrder(this.tabs, 0)!;
337337
let lastActiveTabId = ConfigUtil.getConfigItem(
338338
"lastActiveTabId",
339339
firstTab.properties.tabId,
340340
)!;
341341
const lastActiveTab = this.getTabById(lastActiveTabId)!;
342-
if (lastActiveTab.properties.index >= servers.length) {
342+
if (lastActiveTab.properties.order >= servers.length) {
343343
lastActiveTabId = firstTab.properties.tabId;
344344
}
345345

346346
// `webview.load()` for lastActiveTabId before the others
347347
await this.activateTab(lastActiveTabId);
348348
await Promise.all(
349-
servers.map(async (server, i) => {
349+
servers.map(async (server) => {
350350
// After the lastActiveTabId is activated, we load the others in the background
351351
// without activating them, to prevent flashing of server icons
352352
if (server.id === lastActiveTabId) {
353353
return;
354354
}
355355

356-
const tab = this.tabs[i];
356+
const tab = this.getTabById(server.id);
357357
if (tab instanceof ServerTab) (await tab.webview).load();
358358
}),
359359
);
@@ -367,15 +367,15 @@ export class ServerManagerView {
367367
}
368368
}
369369

370-
initServer(server: ServerConfig, index: number): ServerTab {
370+
initServer(server: ServerConfig, order: number): ServerTab {
371371
const tabId = server.id;
372372
const tab: ServerTab = new ServerTab({
373373
role: "server",
374374
icon: DomainUtil.iconAsUrl(server.icon),
375375
label: server.alias,
376376
$root: this.$tabsContainer,
377377
onClick: this.activateLastTab.bind(this, tabId),
378-
index,
378+
order,
379379
tabId,
380380
onHover: this.onHover.bind(this, tabId),
381381
onHoverOut: this.onHoverOut.bind(this, tabId),
@@ -555,7 +555,7 @@ export class ServerManagerView {
555555
return;
556556
}
557557

558-
const index = this.tabs.length;
558+
const order = this.tabs.length;
559559
const tabId = this.generateTabId();
560560
this.functionalTabs.set(tabProperties.page, tabId);
561561
const $view = await tabProperties.makeView();
@@ -568,7 +568,7 @@ export class ServerManagerView {
568568
label: tabProperties.label,
569569
page: tabProperties.page,
570570
$root: this.$tabsContainer,
571-
index,
571+
order,
572572
tabId,
573573
onClick: this.activateTab.bind(this, tabId),
574574
onDestroy: async () => {
@@ -651,11 +651,18 @@ export class ServerManagerView {
651651
role: tab.properties.role,
652652
page: tab.properties.page,
653653
label: tab.properties.label,
654-
index: tab.properties.index,
654+
order: tab.properties.order,
655655
id: tab.properties.tabId,
656656
}));
657657
}
658658

659+
getTabByOrder(
660+
tabs: ServerOrFunctionalTab[],
661+
order: number,
662+
): ServerOrFunctionalTab | undefined {
663+
return tabs.find((tab) => tab.properties.order === order);
664+
}
665+
659666
async activateTab(id: string, hideOldTab = true): Promise<void> {
660667
const tab = this.getTabById(id);
661668
if (!tab) {
@@ -730,7 +737,10 @@ export class ServerManagerView {
730737

731738
// Issue #188: If the functional tab was not focused, do not activate another tab.
732739
if (this.activeTabId === tabId) {
733-
await this.activateTab(this.tabs[0].properties.tabId, false);
740+
await this.activateTab(
741+
this.getTabByOrder(this.tabs, 0)!.properties.tabId,
742+
false,
743+
);
734744
}
735745
}
736746

0 commit comments

Comments
 (0)