add NIP-29 groups to sidebar

This commit is contained in:
2026-09-30 15:09:23 +07:00
parent 41045d4f88
commit 6b068091c1
10 changed files with 111 additions and 385 deletions
+6 -7
View File
@@ -198,7 +198,8 @@ cx.subscribe(&group, |this, group, event, cx| match event {
The reads are all accessors: `key`, `metadata`, `members`, `admins`, `roles`,
`participants`, `pins`, `membership`, `elsewhere`, `messages`, `loading`,
`loading_more`, `oldest`, `refused`.
`loading_more`, `oldest`, `refused`. `display_name` reads the group's name and
falls back to its id; `display_image` is the picture, for a row or avatar.
### The read model
@@ -544,12 +545,10 @@ before they reach the consumer, so a replay cannot double-hydrate.
## Not wired up yet
- **No screen consumes this crate yet.** The only references outside
`crates/nip29` are the two `nip29::init(cx)` calls. The group panel is built in
`crates/nip29_ui` (`GroupPanel`, which also owns the `chat::Message` row
rendering), but nothing opens it yet: the sidebar section, the join dialog and
their entry points are still to be built. `crates/workspace/src/panels/browse.rs`
is the stub for browsing.
- **Browsing, details and administration are not built.** The sidebar's `Groups`
tab lists `GroupsRegistry::groups()`, opens a `GroupPanel`, and offers the
new-group and join dialogs, but `crates/workspace/src/panels/browse.rs` is still
a stub, and the group details, moderation and pin surfaces are still to be built.
- **Remote deletions are not folded in.** A `9005` from another admin never reaches the
standing REQ, so only our own accepted deletes evict the row.
- **The LiveKit response shape is a guess.** The NIP names no fields, so