Fix custom store

This commit is contained in:
Jon Staab
2024-05-15 14:41:44 -07:00
parent 94e1d8ad52
commit 08d6d93661
2 changed files with 10 additions and 8 deletions
+10 -6
View File
@@ -350,6 +350,10 @@ export const customStore = <T>({get, start}: ICustomStore<T>) => {
const set = (newValue: T) => { const set = (newValue: T) => {
value = newValue value = newValue
for (const sub of subs) {
sub(value)
}
} }
let stop: () => void let stop: () => void
@@ -357,16 +361,16 @@ export const customStore = <T>({get, start}: ICustomStore<T>) => {
return asReadable({ return asReadable({
get: () => subs.length === 0 ? get() : value, get: () => subs.length === 0 ? get() : value,
subscribe: (subscriber: Subscriber<T>) => { subscribe: (sub: Subscriber<T>) => {
if (subs.length === 0) { subs.push(sub)
if (subs.length === 1) {
stop = start(set) stop = start(set)
value = get() set(get())
} }
subs.push(subscriber)
return () => { return () => {
subs.splice(subs.findIndex(sub => sub === subscriber), 1) subs.splice(subs.findIndex(s => s === sub), 1)
if (subs.length === 0) { if (subs.length === 0) {
stop() stop()
-2
View File
@@ -81,8 +81,6 @@ export class Repository extends Emitter implements IReadable<TrustedEvent[]> {
setValue(getValue()) setValue(getValue())
} }
onRefresh()
this.on('event', onEvent) this.on('event', onEvent)
this.on('delete', onRefresh) this.on('delete', onRefresh)