Browse Source

Subscribe to and store traceroutePackets

pull/211/head
Tom Fifield 2 years ago
parent
commit
390b16812a
  1. 24
      src/core/stores/deviceStore.ts
  2. 6
      src/core/subscriptions.ts

24
src/core/stores/deviceStore.ts

@ -73,6 +73,7 @@ export interface Device {
addPosition: (position: Types.PacketMetadata<Protobuf.Mesh.Position>) => 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<DeviceState>((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<DeviceState>((set, get) => ({
}),
);
},
addMetadata: (from, metadata) => {
set(
produce<DeviceState>((draft) => {
@ -494,6 +497,27 @@ export const useDeviceStore = create<DeviceState>((set, get) => ({
}),
);
},
addTraceRoute: (traceroute) => {
set(
produce<DeviceState>((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,

6
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);
});

Loading…
Cancel
Save