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.
This commit is contained in:
Jannis Braun
2026-03-26 20:05:47 +01:00
parent 3b16d9e2ce
commit 6f901f4a7a
+24 -1
View File
@@ -726,9 +726,11 @@ export interface FederationRelayParticipant {
} }
export interface FederationRelayEvent { 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; dmChannelId: string;
messageId: string; messageId: string;
federatedId?: string;
encryptionVersion: 0; encryptionVersion: 0;
timestamp: number; timestamp: number;
participants?: FederationRelayParticipant[]; participants?: FederationRelayParticipant[];
@@ -744,6 +746,26 @@ export interface FederationRelayEvent {
}; };
reactions?: FederationRelayReaction[]; reactions?: FederationRelayReaction[];
reaction?: 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 { export interface FederationRelayReaction {
@@ -783,6 +805,7 @@ export interface FederationRelayResponse {
export interface FederationSyncRequest { export interface FederationSyncRequest {
sinceTimestamp: number; sinceTimestamp: number;
dmChannelId?: string; dmChannelId?: string;
federatedId?: string;
limit: number; limit: number;
} }