mirror of
				https://github.com/zulip/zulip-desktop.git
				synced 2025-11-03 21:43:18 +00:00 
			
		
		
		
	Explode PreferenceView class to a function.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		@@ -10,64 +10,51 @@ import {initNetworkSection} from "./network-section";
 | 
			
		||||
import {initServersSection} from "./servers-section";
 | 
			
		||||
import {initShortcutsSection} from "./shortcuts-section";
 | 
			
		||||
 | 
			
		||||
export default class PreferenceView {
 | 
			
		||||
  $sidebarContainer: Element;
 | 
			
		||||
  $settingsContainer: Element;
 | 
			
		||||
  nav: Nav;
 | 
			
		||||
  constructor() {
 | 
			
		||||
    this.$sidebarContainer = document.querySelector("#sidebar");
 | 
			
		||||
    this.$settingsContainer = document.querySelector("#settings-container");
 | 
			
		||||
  }
 | 
			
		||||
export function initPreferenceView(): void {
 | 
			
		||||
  const $sidebarContainer = document.querySelector("#sidebar")!;
 | 
			
		||||
  const $settingsContainer = document.querySelector("#settings-container")!;
 | 
			
		||||
 | 
			
		||||
  init(): void {
 | 
			
		||||
    this.nav = new Nav({
 | 
			
		||||
      $root: this.$sidebarContainer,
 | 
			
		||||
      onItemSelected: this.handleNavigation.bind(this),
 | 
			
		||||
    });
 | 
			
		||||
  const nav = new Nav({
 | 
			
		||||
    $root: $sidebarContainer,
 | 
			
		||||
    onItemSelected: handleNavigation,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
    this.setDefaultView();
 | 
			
		||||
    this.registerIpcs();
 | 
			
		||||
  }
 | 
			
		||||
  const navItem =
 | 
			
		||||
    nav.navItems.find((navItem) => window.location.hash === `#${navItem}`) ??
 | 
			
		||||
    "General";
 | 
			
		||||
 | 
			
		||||
  setDefaultView(): void {
 | 
			
		||||
    const navItem =
 | 
			
		||||
      this.nav.navItems.find(
 | 
			
		||||
        (navItem) => window.location.hash === `#${navItem}`,
 | 
			
		||||
      ) ?? "General";
 | 
			
		||||
  handleNavigation(navItem);
 | 
			
		||||
 | 
			
		||||
    this.handleNavigation(navItem);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleNavigation(navItem: NavItem): void {
 | 
			
		||||
    this.nav.select(navItem);
 | 
			
		||||
  function handleNavigation(navItem: NavItem): void {
 | 
			
		||||
    nav.select(navItem);
 | 
			
		||||
    switch (navItem) {
 | 
			
		||||
      case "AddServer":
 | 
			
		||||
        initServersSection({
 | 
			
		||||
          $root: this.$settingsContainer,
 | 
			
		||||
          $root: $settingsContainer,
 | 
			
		||||
        });
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case "General":
 | 
			
		||||
        initGeneralSection({
 | 
			
		||||
          $root: this.$settingsContainer,
 | 
			
		||||
          $root: $settingsContainer,
 | 
			
		||||
        });
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case "Organizations":
 | 
			
		||||
        initConnectedOrgSection({
 | 
			
		||||
          $root: this.$settingsContainer,
 | 
			
		||||
          $root: $settingsContainer,
 | 
			
		||||
        });
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case "Network":
 | 
			
		||||
        initNetworkSection({
 | 
			
		||||
          $root: this.$settingsContainer,
 | 
			
		||||
          $root: $settingsContainer,
 | 
			
		||||
        });
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case "Shortcuts": {
 | 
			
		||||
        initShortcutsSection({
 | 
			
		||||
          $root: this.$settingsContainer,
 | 
			
		||||
          $root: $settingsContainer,
 | 
			
		||||
        });
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
@@ -80,58 +67,41 @@ export default class PreferenceView {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Handle toggling and reflect changes in preference page
 | 
			
		||||
  handleToggle(elementName: string, state: boolean): void {
 | 
			
		||||
  function handleToggle(elementName: string, state = false): void {
 | 
			
		||||
    const inputSelector = `#${elementName} .action .switch input`;
 | 
			
		||||
    const input: HTMLInputElement = document.querySelector(inputSelector);
 | 
			
		||||
    const input: HTMLInputElement = document.querySelector(inputSelector)!;
 | 
			
		||||
    if (input) {
 | 
			
		||||
      input.checked = state;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  registerIpcs(): void {
 | 
			
		||||
    ipcRenderer.on("switch-settings-nav", (_event: Event, navItem: NavItem) => {
 | 
			
		||||
      this.handleNavigation(navItem);
 | 
			
		||||
    });
 | 
			
		||||
  ipcRenderer.on("switch-settings-nav", (_event: Event, navItem: NavItem) => {
 | 
			
		||||
    handleNavigation(navItem);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
    ipcRenderer.on(
 | 
			
		||||
      "toggle-sidebar-setting",
 | 
			
		||||
      (_event: Event, state: boolean) => {
 | 
			
		||||
        this.handleToggle("sidebar-option", state);
 | 
			
		||||
      },
 | 
			
		||||
    );
 | 
			
		||||
  ipcRenderer.on("toggle-sidebar-setting", (_event: Event, state: boolean) => {
 | 
			
		||||
    handleToggle("sidebar-option", state);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
    ipcRenderer.on(
 | 
			
		||||
      "toggle-menubar-setting",
 | 
			
		||||
      (_event: Event, state: boolean) => {
 | 
			
		||||
        this.handleToggle("menubar-option", state);
 | 
			
		||||
      },
 | 
			
		||||
    );
 | 
			
		||||
  ipcRenderer.on("toggle-menubar-setting", (_event: Event, state: boolean) => {
 | 
			
		||||
    handleToggle("menubar-option", state);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
    ipcRenderer.on("toggletray", (_event: Event, state: boolean) => {
 | 
			
		||||
      this.handleToggle("tray-option", state);
 | 
			
		||||
    });
 | 
			
		||||
  ipcRenderer.on("toggletray", (_event: Event, state: boolean) => {
 | 
			
		||||
    handleToggle("tray-option", state);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
    ipcRenderer.on(
 | 
			
		||||
      "toggle-dnd",
 | 
			
		||||
      (_event: Event, _state: boolean, newSettings: DNDSettings) => {
 | 
			
		||||
        this.handleToggle(
 | 
			
		||||
          "show-notification-option",
 | 
			
		||||
          newSettings.showNotification,
 | 
			
		||||
        );
 | 
			
		||||
        this.handleToggle("silent-option", newSettings.silent);
 | 
			
		||||
  ipcRenderer.on(
 | 
			
		||||
    "toggle-dnd",
 | 
			
		||||
    (_event: Event, _state: boolean, newSettings: DNDSettings) => {
 | 
			
		||||
      handleToggle("show-notification-option", newSettings.showNotification);
 | 
			
		||||
      handleToggle("silent-option", newSettings.silent);
 | 
			
		||||
 | 
			
		||||
        if (process.platform === "win32") {
 | 
			
		||||
          this.handleToggle(
 | 
			
		||||
            "flash-taskbar-option",
 | 
			
		||||
            newSettings.flashTaskbarOnMessage,
 | 
			
		||||
          );
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
      if (process.platform === "win32") {
 | 
			
		||||
        handleToggle("flash-taskbar-option", newSettings.flashTaskbarOnMessage);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
window.addEventListener("load", () => {
 | 
			
		||||
  const preferenceView = new PreferenceView();
 | 
			
		||||
  preferenceView.init();
 | 
			
		||||
});
 | 
			
		||||
window.addEventListener("load", initPreferenceView);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user