feat(host,panel): stream a workspace's members to the windows that draw them
Merged
CH
8d ago+639+639+012345678901234567890123456789-139-139-012345678901234567890123456789
A workspace's members are streamed to the windows that show them. Stacked on #3929.
- Act-port procedure:
workspace.peopleoutputs aneventIterator, following #4175's pattern. It counts the open streams per workspace, has the host follow afresh as each stream opens, and lets go with the last. - Host follow: the host follows through
liveRows(WORKSPACES_PEOPLE_FOLLOW, held polls with Realtime off) and tells each change asWORKSPACE_PEOPLE_CHANGED. That keeps members' names and emails out of app state, which the voice window also reads. - Web tab: a web tab serves the same procedure with no code of its own.
- Panel:
use-workspace-members.tsand the settings page keep the members read as the first read, then take the stream. Removed: the re-read on everymemberCountchange, and the re-read before Transfer ownership.
streamed is a private copy of #4175's adapter. It should be shared once both have merged.
Tests
- Host
compose-tasksfollow tests. - Act-port stream tests: counting, filtering by workspace, and the voice window refused.
- Settings page: a pushed admin can be handed the workspace with no second read.
Made with Luke