mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-11-15 04:30:12 +00:00
Show expandable relay, peer, and sync observations below Stats and route Diag events to the existing Log Pane without notification or editor-status churn. Retain departed-peer evidence and replay logs recorded before the pane opens. Keep narrow panes usable with wrapping peer controls, readable device names, and larger buttons. Add browser regressions for disclosure, control bounds, button targets, and existing actions.
59 lines
2.7 KiB
TypeScript
59 lines
2.7 KiB
TypeScript
import { mount } from "svelte";
|
|
import Card from "../../../src/features/P2PSync/P2PReplicator/P2PServerStatusCard.svelte";
|
|
import LogPane from "../../../src/modules/features/Log/LogPane.svelte";
|
|
import { eventHub } from "../../../src/common/events";
|
|
import { EVENT_SERVER_STATUS } from "@vrtmrz/livesync-commonlib/compat/replication/trystero/TrysteroReplicatorP2PServer";
|
|
import { logMessages } from "@vrtmrz/livesync-commonlib/compat/mock_and_interop/stores";
|
|
import { setGlobalLogFunction } from "octagonal-wheels/common/logger";
|
|
import type { P2PDiagnosticEvent } from "@vrtmrz/livesync-commonlib/p2p";
|
|
|
|
setGlobalLogFunction(() => undefined);
|
|
const timestamp = 1_700_000_000_000;
|
|
const listeners = new Set<(event: P2PDiagnosticEvent) => void>();
|
|
const settings = { P2P_useDiagRTC: true, P2P_roomID: "fixture-room" };
|
|
const p2p = {
|
|
transportLifecycle: { connect: async () => undefined, disconnect: async () => undefined },
|
|
changeRelay: { enableBroadcastChanges() {}, disableBroadcastChanges() {} },
|
|
diagnostics: {
|
|
getDiagnosticSnapshot: () => ({
|
|
relay: { category: "relay", code: "room-opened", reason: "relay-details-unobserved", timestamp },
|
|
peer: { category: "peer", code: "peer-left", peerId: "departed-peer", timestamp },
|
|
}),
|
|
onDiagnosticEvent: (listener: (event: P2PDiagnosticEvent) => void) => {
|
|
listeners.add(listener);
|
|
return () => listeners.delete(listener);
|
|
},
|
|
requestStatus: () =>
|
|
eventHub.emitEvent(EVENT_SERVER_STATUS, {
|
|
isConnected: true,
|
|
knownAdvertisements: [],
|
|
serverPeerId: "fixture-self",
|
|
roomId: "fixture-room",
|
|
diag: {
|
|
totalNewConnections: 0,
|
|
totalSuccessfulConnections: 0,
|
|
totalFailedConnections: 0,
|
|
totalClosedConnections: 0,
|
|
details: {},
|
|
},
|
|
}),
|
|
},
|
|
};
|
|
const core = {
|
|
services: {
|
|
setting: { currentSettings: () => settings },
|
|
API: {
|
|
showWindow: async (view: string) => {
|
|
document.querySelector("#opened")!.textContent = view;
|
|
logMessages.value = ["[P2P Diag] Earlier connection failure"];
|
|
mount(LogPane, { target: document.querySelector("#logapp")!, props: { close() {} } });
|
|
},
|
|
},
|
|
},
|
|
};
|
|
mount(Card, { target: document.querySelector("#app")!, props: { p2p: p2p as never, core: core as never } });
|
|
document.querySelector<HTMLButtonElement>("#complete")!.onclick = () => {
|
|
for (const listener of listeners)
|
|
listener({ category: "sync", code: "pull-completed", timestamp: timestamp + 1_000 });
|
|
};
|