diff --git a/src/core/stores/deviceStore.ts b/src/core/stores/deviceStore.ts index fee9fb8f..d350c154 100644 --- a/src/core/stores/deviceStore.ts +++ b/src/core/stores/deviceStore.ts @@ -73,6 +73,7 @@ export interface Device { addPosition: (position: Types.PacketMetadata) => void; addConnection: (connection: Types.ConnectionType) => void; addMessage: (message: MessageWithState) => void; + addTraceRoute: (traceroute: Protobuf.Mesh.RouteDiscovery) => void; addMetadata: (from: number, metadata: Protobuf.Mesh.DeviceMetadata) => void; setMessageState: ( type: "direct" | "broadcast", @@ -119,6 +120,7 @@ export const useDeviceStore = create((set, get) => ({ direct: new Map(), broadcast: new Map(), }, + traceroutes: new Map(), connection: undefined, activePage: "messages", activeNode: 0, @@ -483,6 +485,7 @@ export const useDeviceStore = create((set, get) => ({ }), ); }, + addMetadata: (from, metadata) => { set( produce((draft) => { @@ -494,6 +497,27 @@ export const useDeviceStore = create((set, get) => ({ }), ); }, + addTraceRoute: (traceroute) => { + set( + produce((draft) => { + console.log("addTraceRoute called"); + console.log(traceroute); + const device = draft.devices.get(id); + if (!device) { + return; + } + + const nodetraceroutes = device.traceroutes.get(traceroute.from) + if (nodetraceroutes) { + nodetraceroutes.push(traceroute); + device.traceroutes.set(traceroute.from, nodetraceroutes); + } else { + device.traceroutes.set(traceroute.from, [traceroute]); + } + console.log(device.traceroutes); + }), + ); + }, setMessageState: ( type: "direct" | "broadcast", channelIndex: Types.ChannelNumber, diff --git a/src/core/subscriptions.ts b/src/core/subscriptions.ts index cdbaa892..40febae9 100644 --- a/src/core/subscriptions.ts +++ b/src/core/subscriptions.ts @@ -86,6 +86,12 @@ export const subscribeAll = ( }); }); + connection.events.onTraceRoutePacket.subscribe((traceRoutePacket) => { + device.addTraceRoute({ + ...traceRoutePacket, + }); + }); + connection.events.onPendingSettingsChange.subscribe((state) => { device.setPendingSettingsChanges(state); });