Skip to content

Commit 7b1d5e1

Browse files
committed
refactor: address remaining todo by separating out help and app menu update menu items
1 parent e27a67a commit 7b1d5e1

File tree

1 file changed

+32
-24
lines changed

1 file changed

+32
-24
lines changed

apps/desktop/src/main.ts

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -571,46 +571,55 @@ const CHECK_FOR_UPDATES_MENU_ITEM_LABEL_DOWNLOADED = "Update downloaded";
571571
const CHECK_FOR_UPDATES_MENU_ITEM_LABEL_AVAILABLE = "Update available";
572572
const CHECK_FOR_UPDATES_MENU_ITEM_LABEL_UP_TO_DATE = "You're up to date!";
573573
const CHECK_FOR_UPDATES_MENU_ITEM_LABEL_ERROR = "Update check failed";
574-
const checkForUpdatesMenuItem: MenuItem = new MenuItem({
575-
label: CHECK_FOR_UPDATES_MENU_ITEM_LABEL_DEFAULT,
576-
click: async () => await handleCheckForUpdatesMenuClick(),
577-
});
574+
function makeCheckForUpdatesMenuItem(): MenuItem {
575+
return new MenuItem({
576+
label: CHECK_FOR_UPDATES_MENU_ITEM_LABEL_DEFAULT,
577+
click: async () => await handleCheckForUpdatesMenuClick(),
578+
});
579+
}
580+
const checkForUpdatesMenuItemInAppMenu = makeCheckForUpdatesMenuItem();
581+
const checkForUpdatesMenuItemInHelpMenu = makeCheckForUpdatesMenuItem();
578582

579-
updateStateListeners.add((state) => {
583+
function updateCheckForUpdatesMenuItem(menuItem: MenuItem, state: DesktopUpdateState): void {
580584
switch (state.status) {
581585
case "checking":
582-
checkForUpdatesMenuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_CHECKING;
583-
checkForUpdatesMenuItem.enabled = false;
586+
menuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_CHECKING;
587+
menuItem.enabled = false;
584588
break;
585589
case "available":
586-
checkForUpdatesMenuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_AVAILABLE;
587-
checkForUpdatesMenuItem.enabled = false;
590+
menuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_AVAILABLE;
591+
menuItem.enabled = false;
588592
break;
589593
case "downloading":
590-
checkForUpdatesMenuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_DOWNLOADING;
591-
checkForUpdatesMenuItem.enabled = false;
594+
menuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_DOWNLOADING;
595+
menuItem.enabled = false;
592596
break;
593597
case "downloaded":
594-
checkForUpdatesMenuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_DOWNLOADED;
595-
checkForUpdatesMenuItem.enabled = false;
598+
menuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_DOWNLOADED;
599+
menuItem.enabled = false;
596600
break;
597601
case "disabled":
598-
checkForUpdatesMenuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_DISABLED;
599-
checkForUpdatesMenuItem.enabled = false;
602+
menuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_DISABLED;
603+
menuItem.enabled = false;
600604
break;
601605
case "error":
602-
checkForUpdatesMenuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_ERROR;
603-
checkForUpdatesMenuItem.enabled = false;
606+
menuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_ERROR;
607+
menuItem.enabled = false;
604608
break;
605609
case "up-to-date":
606-
checkForUpdatesMenuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_UP_TO_DATE;
607-
checkForUpdatesMenuItem.enabled = false;
610+
menuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_UP_TO_DATE;
611+
menuItem.enabled = false;
608612
break;
609613
case "idle":
610-
checkForUpdatesMenuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_IDLE;
611-
checkForUpdatesMenuItem.enabled = true;
614+
menuItem.label = CHECK_FOR_UPDATES_MENU_ITEM_LABEL_IDLE;
615+
menuItem.enabled = true;
612616
break;
613617
}
618+
}
619+
620+
updateStateListeners.add((state) => {
621+
updateCheckForUpdatesMenuItem(checkForUpdatesMenuItemInAppMenu, state);
622+
updateCheckForUpdatesMenuItem(checkForUpdatesMenuItemInHelpMenu, state);
614623
});
615624

616625
let applicationMenu: Menu | null = null;
@@ -623,7 +632,7 @@ function configureApplicationMenu(): void {
623632
label: app.name,
624633
submenu: Menu.buildFromTemplate([
625634
{ role: "about" },
626-
checkForUpdatesMenuItem,
635+
checkForUpdatesMenuItemInAppMenu,
627636
{ type: "separator" },
628637
{
629638
label: "Settings...",
@@ -678,8 +687,7 @@ function configureApplicationMenu(): void {
678687
{ role: "windowMenu" },
679688
{
680689
role: "help",
681-
// TODO: Is it safe to use the same menu item for both the root menu and the help menu?
682-
submenu: Menu.buildFromTemplate([checkForUpdatesMenuItem]),
690+
submenu: Menu.buildFromTemplate([checkForUpdatesMenuItemInHelpMenu]),
683691
},
684692
);
685693

0 commit comments

Comments
 (0)