Split up tracker event types
This commit is contained in:
+11
-22
@@ -9,26 +9,7 @@ export const relay = new LocalRelay(repository)
|
||||
|
||||
export const tracker = new Tracker()
|
||||
|
||||
// Adapt above objects to stores
|
||||
|
||||
export const makeRepositoryStore = ({throttle: t = 300}: {throttle?: number} = {}) =>
|
||||
custom(
|
||||
setter => {
|
||||
let onUpdate = () => setter(repository)
|
||||
|
||||
if (t) {
|
||||
onUpdate = throttle(t, onUpdate)
|
||||
}
|
||||
|
||||
onUpdate()
|
||||
repository.on("update", onUpdate)
|
||||
|
||||
return () => repository.off("update", onUpdate)
|
||||
},
|
||||
{
|
||||
set: (other: Repository) => repository.load(other.dump()),
|
||||
},
|
||||
)
|
||||
// Adapt objects to stores
|
||||
|
||||
export const makeTrackerStore = ({throttle: t = 300}: {throttle?: number} = {}) =>
|
||||
custom(
|
||||
@@ -40,9 +21,17 @@ export const makeTrackerStore = ({throttle: t = 300}: {throttle?: number} = {})
|
||||
}
|
||||
|
||||
onUpdate()
|
||||
tracker.on("update", onUpdate)
|
||||
tracker.on("add", onUpdate)
|
||||
tracker.on("remove", onUpdate)
|
||||
tracker.on("load", onUpdate)
|
||||
tracker.on("clear", onUpdate)
|
||||
|
||||
return () => tracker.off("update", onUpdate)
|
||||
return () => {
|
||||
tracker.off("add", onUpdate)
|
||||
tracker.off("remove", onUpdate)
|
||||
tracker.off("load", onUpdate)
|
||||
tracker.off("clear", onUpdate)
|
||||
}
|
||||
},
|
||||
{
|
||||
set: (other: Tracker) => tracker.load(other.relaysById),
|
||||
|
||||
@@ -37,7 +37,7 @@ export class RelaysStorageAdapter {
|
||||
}
|
||||
|
||||
sync() {
|
||||
return throttled(3000, relays).subscribe($relays => bulkPut(this.options.name, $relays))
|
||||
return throttled(3000, relays).subscribe($relays => Boolean(console.log('relays', $relays))||bulkPut(this.options.name, $relays))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,19 +152,29 @@ export class TrackerStorageAdapter {
|
||||
}
|
||||
|
||||
sync() {
|
||||
const onUpdate = throttle(3000, async () => {
|
||||
await bulkPut(
|
||||
const updateOne = (id: string, relay: string) =>
|
||||
bulkPut(this.options.name, [{id, relays: Array.from(this.options.tracker.getRelays(id))}])
|
||||
|
||||
const updateAll = () =>
|
||||
bulkPut(
|
||||
this.options.name,
|
||||
Array.from(this.options.tracker.relaysById.entries()).map(([id, relays]) => ({
|
||||
id,
|
||||
relays: Array.from(relays),
|
||||
})),
|
||||
)
|
||||
})
|
||||
|
||||
this.options.tracker.on("update", onUpdate)
|
||||
this.options.tracker.on("add", updateOne)
|
||||
this.options.tracker.on("remove", updateOne)
|
||||
this.options.tracker.on("load", updateAll)
|
||||
this.options.tracker.on("clear", updateAll)
|
||||
|
||||
return () => this.options.tracker.off("update", onUpdate)
|
||||
return () => {
|
||||
this.options.tracker.off("add", updateOne)
|
||||
this.options.tracker.off("remove", updateOne)
|
||||
this.options.tracker.off("load", updateAll)
|
||||
this.options.tracker.off("clear", updateAll)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user