refactor(client): rename currentProvide to currentProvideInfo

This commit is contained in:
imccyu
2026-07-28 11:09:55 +08:00
parent 71529aa7d2
commit b7f3cd3d78
9 changed files with 35 additions and 35 deletions

View File

@@ -195,55 +195,55 @@ describe('cell (render-layer session kit)', () => {
expect(b.svc.provideInfo('ghost')).toBeUndefined()
})
it('currentProvide follows selection: absent projection ↔ definite bundle, notified on each move', async () => {
it('currentProvideInfo follows selection: absent projection ↔ definite bundle, notified on each move', async () => {
const b = bench()
await feedList(b, [{ id: 's1' }, { id: 's2' }])
const absent = b.svc.currentProvide.getSnapshot()
const absent = b.svc.currentProvideInfo.getSnapshot()
expect(absent.sessionId).toBeUndefined()
expect(Object.hasOwn(absent.hooks, 'session')).toBe(true)
const notified = vi.fn()
b.svc.currentProvide.subscribe(notified)
b.svc.currentProvideInfo.subscribe(notified)
b.svc.open(sid('s1'))
expect(b.svc.currentProvide.getSnapshot()).toBe(b.svc.provideInfo('s1'))
expect(b.svc.currentProvideInfo.getSnapshot()).toBe(b.svc.provideInfo('s1'))
expect(notified).toHaveBeenCalledTimes(1)
b.svc.open(sid('s2'))
expect(b.svc.currentProvide.getSnapshot()).toBe(b.svc.provideInfo('s2'))
expect(b.svc.currentProvideInfo.getSnapshot()).toBe(b.svc.provideInfo('s2'))
expect(notified).toHaveBeenCalledTimes(2)
b.svc.clear()
await Promise.resolve() // clearSelection projects through the manager notifier
expect(b.svc.currentProvide.getSnapshot().sessionId).toBeUndefined()
expect(b.svc.currentProvideInfo.getSnapshot().sessionId).toBeUndefined()
})
it('a provider roster change under a stable current id republishes the bundle', async () => {
const b = bench()
await feedList(b, [{ id: 's1' }])
b.svc.open(sid('s1'))
const before = b.svc.currentProvide.getSnapshot()
const before = b.svc.currentProvideInfo.getSnapshot()
const notified = vi.fn()
b.svc.currentProvide.subscribe(notified)
b.svc.currentProvideInfo.subscribe(notified)
const source = { getSnapshot: () => 'live', subscribe: () => () => {} }
const dispose = b.svc.provide({
hooks: ['extra'],
props: ['marker'],
resolve: () => ({ hooks: { extra: source }, props: { marker: 7 } }),
})
const added = b.svc.currentProvide.getSnapshot()
const added = b.svc.currentProvideInfo.getSnapshot()
expect(added).not.toBe(before)
expect(added).toMatchObject({ sessionId: 's1', props: { marker: 7 } })
expect(added.hooks['extra']).toBe(source)
expect(notified).toHaveBeenCalledTimes(1)
dispose()
const removed = b.svc.currentProvide.getSnapshot()
const removed = b.svc.currentProvideInfo.getSnapshot()
expect(removed).not.toBe(added)
expect(Object.hasOwn(removed.hooks, 'extra')).toBe(false)
expect(notified).toHaveBeenCalledTimes(2)
})
it('an unsubscribed currentProvide listener stops receiving notifications', async () => {
it('an unsubscribed currentProvideInfo listener stops receiving notifications', async () => {
const b = bench()
await feedList(b, [{ id: 's1' }])
const notified = vi.fn()
const off = b.svc.currentProvide.subscribe(notified)
const off = b.svc.currentProvideInfo.subscribe(notified)
off()
b.svc.open(sid('s1'))
expect(notified).not.toHaveBeenCalled()

View File

@@ -103,7 +103,7 @@ function fakeSessions() {
const absentInfo = { sessionId: undefined, hooks: { session: undefined }, props: {} }
return {
list: { getSnapshot: () => state, subscribe: () => () => undefined },
currentProvide: { getSnapshot: () => absentInfo, subscribe: () => () => undefined },
currentProvideInfo: { getSnapshot: () => absentInfo, subscribe: () => () => undefined },
}
}