acceptInvitation method
Accepts a pending invitation to roomId.
Implementation
Future<ChatResult<void>> acceptInvitation(String roomId) async {
final inviteResult = await _a.client.members.invite(
roomId,
userIds: [_a.currentUser.id],
mode: RoomUserMode.acceptInvitation,
);
final result = inviteResult.isSuccess
? const ChatSuccess<void>(null)
: ChatFailureResult<void>(inviteResult.failureOrNull!);
if (result.isSuccess) {
final existing = _a.roomListController.getRoomById(roomId);
if (existing != null) {
final custom = Map<String, dynamic>.from(existing.custom ?? {});
custom.remove('invited');
custom.remove('invitedBy');
_a.roomListController.updateRoom(
existing.copyWith(
custom: custom.isEmpty ? null : custom,
userRole: RoomRole.member,
),
);
}
}
return _a._emitFailure(
result,
OperationKind.acceptInvitation,
roomId: roomId,
);
}