Radish alpha
r
Radicle desktop app
Radicle
Git (anonymous pull)
Log in to clone via SSH
Await event listeners and unlisten on unmount
Sebastian Martinez committed 1 year ago
commit 4d81bf53bee582fc9194fcdb2d98888855d1032f
parent d4825ab1dd0c035f64b6e372bdf80b6a360a2886
1 file changed +23 -13
modified src/App.svelte
@@ -1,5 +1,7 @@
<script lang="ts">
-
  import { onMount } from "svelte";
+
  import type { UnlistenFn } from "@tauri-apps/api/event";
+

+
  import { onDestroy, onMount } from "svelte";

  import { invoke } from "@tauri-apps/api/core";
  import { listen } from "@tauri-apps/api/event";
@@ -18,21 +20,20 @@

  const activeRouteStore = router.activeRouteStore;

+
  let unlistenEvents: UnlistenFn | undefined = undefined;
+
  let unlistenNodeEvents: UnlistenFn | undefined = undefined;
+

  onMount(async () => {
-
    try {
-
      await listen("event", event => {
-
        console.log(event.payload);
-
      });
+
    unlistenEvents = await listen("event", event => {
+
      console.log(event.payload);
+
    });

-
      await listen<boolean>("node_running", event => {
-
        nodeRunning.set(event.payload);
-
      });
-
      // For development purposes don't run tauri commands when viewing from
-
      // a browser.
-
      if (window.__TAURI_INTERNALS__) {
-
        await invoke("authenticate");
-
      }
+
    unlistenNodeEvents = await listen<boolean>("node_running", event => {
+
      nodeRunning.set(event.payload);
+
    });

+
    try {
+
      await invoke("authenticate");
      void router.loadFromLocation();
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
    } catch (e: any) {
@@ -46,6 +47,15 @@
    }
  });

+
  onDestroy(() => {
+
    if (unlistenEvents) {
+
      unlistenEvents();
+
    }
+
    if (unlistenNodeEvents) {
+
      unlistenNodeEvents();
+
    }
+
  });
+

  $: document.documentElement.setAttribute("data-theme", $theme);
</script>