mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-10-18 19:30:27 +08:00
Remove unused event listeners
This commit is contained in:
@@ -1,12 +1,8 @@
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
use serde::Serialize;
|
||||
use tauri::{AppHandle, Emitter, Manager};
|
||||
|
||||
use radicle::cob::cache::COBS_DB_FILE;
|
||||
use radicle::identity::RepoId;
|
||||
use radicle::node::{Handle, Node, NOTIFICATIONS_DB_FILE};
|
||||
use radicle::storage::ReadStorage;
|
||||
|
||||
use radicle_types::config::Config;
|
||||
use radicle_types::error::Error;
|
||||
@@ -49,8 +45,6 @@ pub(crate) fn check_radicle_cli(ctx: tauri::State<AppState>) -> Result<(), Error
|
||||
pub(crate) fn startup(app: AppHandle) -> Result<Config, Error> {
|
||||
let profile = radicle::Profile::load()?;
|
||||
let home = profile.home();
|
||||
let repositories = profile.storage.repositories()?;
|
||||
let public_key = profile.public_key;
|
||||
|
||||
let cobs_cache = radicle::cob::cache::Store::open(home.cobs().join(COBS_DB_FILE))?;
|
||||
cobs_cache.check_version()?;
|
||||
@@ -65,14 +59,10 @@ pub(crate) fn startup(app: AppHandle) -> Result<Config, Error> {
|
||||
let patch_service = domain::patch::service::Service::new(cob_db);
|
||||
|
||||
let node_handle = app.app_handle().clone();
|
||||
let sync_handle = app.app_handle().clone();
|
||||
let events_handle = app.app_handle().clone();
|
||||
|
||||
let node = Node::new(profile.socket());
|
||||
let node_status = node.clone();
|
||||
|
||||
let mut node_seeds = node.clone();
|
||||
|
||||
app.manage(inbox_service);
|
||||
app.manage(patch_service);
|
||||
|
||||
@@ -83,47 +73,6 @@ pub(crate) fn startup(app: AppHandle) -> Result<Config, Error> {
|
||||
}
|
||||
});
|
||||
|
||||
tauri::async_runtime::spawn(async move {
|
||||
loop {
|
||||
let mut sync_status =
|
||||
BTreeMap::<RepoId, Option<radicle_types::cobs::repo::SyncStatus>>::new();
|
||||
for repo in &repositories {
|
||||
if let Ok(seeds) = node_seeds.seeds(repo.rid).map(Into::<Vec<_>>::into) {
|
||||
if let Some(status) =
|
||||
seeds
|
||||
.iter()
|
||||
.find_map(|radicle::node::Seed { nid, sync, .. }| {
|
||||
(*nid == public_key).then_some(sync.clone())
|
||||
})
|
||||
{
|
||||
sync_status.insert(repo.rid, status.map(Into::into));
|
||||
} else {
|
||||
// The local node wasn't found in the seed nodes table.
|
||||
sync_status.insert(repo.rid, None);
|
||||
}
|
||||
}
|
||||
}
|
||||
let _ = sync_handle.emit("sync_status", sync_status);
|
||||
tokio::time::sleep(std::time::Duration::from_secs(10)).await;
|
||||
}
|
||||
});
|
||||
|
||||
tauri::async_runtime::spawn(async move {
|
||||
loop {
|
||||
if node.is_running() {
|
||||
log::info!("node: spawned node event subscription.");
|
||||
while let Ok(events) = node.subscribe(std::time::Duration::MAX) {
|
||||
for event in events.into_iter().flatten() {
|
||||
let _ = events_handle.emit("event", event);
|
||||
}
|
||||
}
|
||||
log::info!("node: event subscription loop has exited.");
|
||||
}
|
||||
|
||||
tokio::time::sleep(std::time::Duration::from_secs(2)).await;
|
||||
}
|
||||
});
|
||||
|
||||
let state = AppState { profile };
|
||||
app.manage(state.clone());
|
||||
|
||||
|
||||
+12
-14
@@ -1,24 +1,28 @@
|
||||
<script lang="ts">
|
||||
import type { ErrorWrapper } from "@bindings/error/ErrorWrapper";
|
||||
import type { Config } from "@bindings/config/Config";
|
||||
import type { UnlistenFn } from "@tauri-apps/api/event";
|
||||
|
||||
import delay from "lodash/delay";
|
||||
import { listen } from "@tauri-apps/api/event";
|
||||
import { onDestroy, onMount } from "svelte";
|
||||
|
||||
import * as router from "@app/lib/router";
|
||||
import { checkAuth, startup } from "@app/lib/auth.svelte";
|
||||
import { createEventEmittersOnce } from "@app/lib/startup.svelte";
|
||||
import { dynamicInterval } from "@app/lib/interval";
|
||||
import { invoke } from "@app/lib/invoke";
|
||||
import { nodeRunning } from "@app/lib/events";
|
||||
import {
|
||||
resetFontSize,
|
||||
increaseFontSize,
|
||||
decreaseFontSize,
|
||||
fontSettings,
|
||||
} from "@app/lib/appearance.svelte";
|
||||
import {
|
||||
setUnlistenNodeEvents,
|
||||
unlistenNodeEvents,
|
||||
} from "@app/lib/startup.svelte";
|
||||
import { theme } from "@app/components/ThemeSwitch.svelte";
|
||||
import { unreachable, isMac } from "@app/lib/utils";
|
||||
import delay from "lodash/delay";
|
||||
|
||||
import Auth from "@app/views/booting/Auth.svelte";
|
||||
import CreateIdentity from "@app/views/booting/CreateIdentity.svelte";
|
||||
@@ -37,9 +41,6 @@
|
||||
const activeRouteStore = router.activeRouteStore;
|
||||
|
||||
let profile = $state<Config>();
|
||||
let unlistenEvents: UnlistenFn | undefined = undefined;
|
||||
let unlistenNodeEvents: UnlistenFn | undefined = undefined;
|
||||
let unlistenSyncStatus: UnlistenFn | undefined = undefined;
|
||||
|
||||
let showSpinner = $state(false);
|
||||
delay(() => (showSpinner = true), 1000);
|
||||
@@ -53,8 +54,11 @@
|
||||
}
|
||||
|
||||
if (window.__TAURI_INTERNALS__) {
|
||||
[unlistenEvents, unlistenNodeEvents, unlistenSyncStatus] =
|
||||
await createEventEmittersOnce();
|
||||
setUnlistenNodeEvents(
|
||||
await listen<boolean>("node_running", event => {
|
||||
nodeRunning.set(event.payload);
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -73,12 +77,6 @@
|
||||
});
|
||||
|
||||
onDestroy(() => {
|
||||
if (unlistenEvents) {
|
||||
unlistenEvents();
|
||||
}
|
||||
if (unlistenSyncStatus) {
|
||||
unlistenSyncStatus();
|
||||
}
|
||||
if (unlistenNodeEvents) {
|
||||
unlistenNodeEvents();
|
||||
}
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
import type { SyncStatus } from "@bindings/repo/SyncStatus";
|
||||
|
||||
import { SvelteMap } from "svelte/reactivity";
|
||||
import { writable } from "svelte/store";
|
||||
|
||||
export const nodeRunning = writable<boolean>(false);
|
||||
export const syncStatus = writable<SvelteMap<string, SyncStatus>>(
|
||||
new SvelteMap(),
|
||||
);
|
||||
|
||||
@@ -1,27 +1,19 @@
|
||||
import type { SyncStatus } from "@bindings/repo/SyncStatus";
|
||||
import type { UnlistenFn } from "@tauri-apps/api/event";
|
||||
|
||||
import once from "lodash/once";
|
||||
import { SvelteMap } from "svelte/reactivity";
|
||||
import { listen } from "@tauri-apps/api/event";
|
||||
|
||||
import { nodeRunning, syncStatus } from "./events";
|
||||
import { nodeRunning } from "./events";
|
||||
|
||||
export let unlistenNodeEvents: UnlistenFn | undefined = undefined;
|
||||
|
||||
export function setUnlistenNodeEvents(unlisten: UnlistenFn) {
|
||||
unlistenNodeEvents = unlisten;
|
||||
}
|
||||
|
||||
// Will be called once in the startup of the app
|
||||
export const createEventEmittersOnce = once(async () => {
|
||||
const unlistenEvents = await listen("event", () => {
|
||||
// Add handler for incoming events
|
||||
});
|
||||
|
||||
const unlistenSyncStatus = await listen<Record<string, SyncStatus>>(
|
||||
"sync_status",
|
||||
event => {
|
||||
syncStatus.set(new SvelteMap(Object.entries(event.payload)));
|
||||
},
|
||||
);
|
||||
|
||||
const unlistenNodeEvents = await listen<boolean>("node_running", event => {
|
||||
return await listen<boolean>("node_running", event => {
|
||||
nodeRunning.set(event.payload);
|
||||
});
|
||||
|
||||
return [unlistenEvents, unlistenSyncStatus, unlistenNodeEvents];
|
||||
});
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
import type { ErrorWrapper } from "@bindings/error/ErrorWrapper";
|
||||
|
||||
import * as router from "@app/lib/router";
|
||||
import { createEventEmittersOnce } from "@app/lib/startup.svelte";
|
||||
import { invoke } from "@app/lib/invoke";
|
||||
import { truncateDid } from "@app/lib/utils";
|
||||
|
||||
@@ -13,6 +12,10 @@
|
||||
import Spinner from "@app/components/Spinner.svelte";
|
||||
import TextInput from "@app/components/TextInput.svelte";
|
||||
import logo from "/radicle.svg?url";
|
||||
import {
|
||||
setUnlistenNodeEvents,
|
||||
createEventEmittersOnce,
|
||||
} from "@app/lib/startup.svelte";
|
||||
|
||||
interface Props {
|
||||
profile: Author;
|
||||
@@ -30,7 +33,7 @@
|
||||
try {
|
||||
await invoke("authenticate", { passphrase });
|
||||
if (window.__TAURI_INTERNALS__) {
|
||||
await createEventEmittersOnce();
|
||||
setUnlistenNodeEvents(await createEventEmittersOnce());
|
||||
}
|
||||
passphrase = " ".repeat(passphrase.length);
|
||||
await router.push({ resource: "home", activeTab: "all" });
|
||||
|
||||
Reference in New Issue
Block a user