feat: system messages, group DM welcome header, and dm_owner_updated event
- Render system messages (member_added, member_removed, owner_changed) inline in MessageList with icon + human-readable text; system messages never group with adjacent user messages - Rewrite WelcomeHeader to branch on ownerId: group DMs show overlapping avatars, group name, creator attribution, federated privacy note, and a Leave Group button - Add dm_owner_updated ServerEvent; broadcast from dm.ts leave handler and federation processOwnershipTransferEvent so all clients update ownerId in real-time - Add updateDmOwner action to spaceStore and handle dm_owner_updated in useWebSocket - Add leaveGroup alias to API client dm namespace
This commit is contained in:
@@ -145,6 +145,7 @@ export class BackspaceApiClient {
|
||||
deleteMessage: (id: string) => Promise<{ success: boolean }>;
|
||||
addMember: (dmChannelId: string, data: { userId: string }) => Promise<DmChannel>;
|
||||
leave: (dmChannelId: string) => Promise<{ success: boolean }>;
|
||||
leaveGroup: (dmChannelId: string) => Promise<{ success: boolean }>;
|
||||
};
|
||||
|
||||
readonly social: {
|
||||
@@ -505,6 +506,8 @@ export class BackspaceApiClient {
|
||||
request<DmChannel>('POST', `/dm/${dmChannelId}/members`, data),
|
||||
leave: (dmChannelId: string) =>
|
||||
request<{ success: boolean }>('DELETE', `/dm/${dmChannelId}/members`),
|
||||
leaveGroup: (dmChannelId: string) =>
|
||||
request<{ success: boolean }>('DELETE', `/dm/${dmChannelId}/members`),
|
||||
};
|
||||
|
||||
this.social = {
|
||||
|
||||
Reference in New Issue
Block a user