fix(client): publish current session provide bundle as one reactive projection
A provider roster change under a stable current id rematerialized every scope's bundle but nothing notified React: SessionProvider resolved the bundle from a current-id subscription only, so mounted entries kept the obsolete hook/prop schema until an unrelated re-render. The sessions service now owns an atomic currentProvide observable fed by both current writes and roster changes; the renderer host exposes it as sessions.provide, replacing the current/provideInfo/maybeProvideInfo trio, and both providers subscribe to it.
This commit is contained in:
@@ -105,18 +105,14 @@ export interface SlotRendererHost {
|
||||
sessions: {
|
||||
/** Session list source backing the useSessions standard hook. */
|
||||
list: HostObservable<unknown>
|
||||
/** Current-session source used by SessionProvider. */
|
||||
current: HostObservable<string | undefined>
|
||||
/** Resolve a definite session bundle, or undefined when the id is unknown. */
|
||||
provideInfo(id: string): SessionProvideInfo | undefined
|
||||
/**
|
||||
* Resolve the current-session-optional standard props bundle. The result
|
||||
* always carries the static provider roster, even when `id` is absent or
|
||||
* cannot resolve to a live session.
|
||||
* @param id - current session id, when selected.
|
||||
* @returns the optional provide info.
|
||||
* Atomic current-session provide projection used by SessionProvider:
|
||||
* selection changes and provider-roster changes publish through this one
|
||||
* source, so a stable current id cannot strand mounted entries on an
|
||||
* obsolete hook/prop schema. Carries the static roster with sessionId
|
||||
* undefined while no current session resolves.
|
||||
*/
|
||||
maybeProvideInfo(id: string | undefined): SessionMaybeProvideInfo
|
||||
provide: HostObservable<SessionMaybeProvideInfo>
|
||||
}
|
||||
/** Workspace-side standard-kit sources. */
|
||||
workspaces: {
|
||||
|
||||
Reference in New Issue
Block a user