From 6f901f4a7a6034ee7df41e9fa8db9905ca327030 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Thu, 26 Mar 2026 20:05:47 +0100 Subject: [PATCH] feat(shared): add group DM federation event types and payloads Extend FederationRelayEvent with member_add, member_remove, and ownership_transfer event types, plus federatedId and the new optional membership/ownership/group payload fields. Add FederationMembershipPayload, FederationOwnershipPayload, and FederationGroupPayload interfaces. Add federatedId to FederationSyncRequest for group DM sync filtering. --- packages/shared/src/types.ts | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/shared/src/types.ts b/packages/shared/src/types.ts index e0376c82..057dcf93 100644 --- a/packages/shared/src/types.ts +++ b/packages/shared/src/types.ts @@ -726,9 +726,11 @@ export interface FederationRelayParticipant { } export interface FederationRelayEvent { - eventType: 'create' | 'update' | 'delete' | 'reaction_add' | 'reaction_remove'; + eventType: 'create' | 'update' | 'delete' | 'reaction_add' | 'reaction_remove' + | 'member_add' | 'member_remove' | 'ownership_transfer'; dmChannelId: string; messageId: string; + federatedId?: string; encryptionVersion: 0; timestamp: number; participants?: FederationRelayParticipant[]; @@ -744,6 +746,26 @@ export interface FederationRelayEvent { }; reactions?: FederationRelayReaction[]; reaction?: FederationRelayReaction; + membership?: FederationMembershipPayload; + ownership?: FederationOwnershipPayload; + group?: FederationGroupPayload; +} + +export interface FederationMembershipPayload { + user: FederationRelayParticipant; + addedBy?: FederationRelayParticipant; + removedBy?: FederationRelayParticipant; + reason?: 'kick' | 'leave'; +} + +export interface FederationOwnershipPayload { + newOwner: FederationRelayParticipant; + previousOwner: FederationRelayParticipant; +} + +export interface FederationGroupPayload { + owner: FederationRelayParticipant; + members: FederationRelayParticipant[]; } export interface FederationRelayReaction { @@ -783,6 +805,7 @@ export interface FederationRelayResponse { export interface FederationSyncRequest { sinceTimestamp: number; dmChannelId?: string; + federatedId?: string; limit: number; }