Migrate collections to new stores, change some conventions

This commit is contained in:
Jon Staab
2025-11-19 16:47:17 -08:00
parent d197acc41e
commit 6d36f5a912
29 changed files with 354 additions and 414 deletions
-50
View File
@@ -1,55 +1,5 @@
import {throttle} from "@welshman/lib"
import {Repository, Tracker} from "@welshman/net"
import {custom} from "@welshman/store"
export const tracker = new Tracker()
export const repository = Repository.get()
// Adapt 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)
},
{
onUpdate: (other: Repository) => repository.load(other.dump()),
},
)
export const makeTrackerStore = ({throttle: t = 300}: {throttle?: number} = {}) =>
custom(
setter => {
let onUpdate = () => setter(tracker)
if (t) {
onUpdate = throttle(t, onUpdate)
}
onUpdate()
tracker.on("add", onUpdate)
tracker.on("remove", onUpdate)
tracker.on("load", onUpdate)
tracker.on("clear", onUpdate)
return () => {
tracker.off("add", onUpdate)
tracker.off("remove", onUpdate)
tracker.off("load", onUpdate)
tracker.off("clear", onUpdate)
}
},
{
onUpdate: (other: Tracker) => tracker.load(other.relaysById),
},
)