acceptInvitation method

Future<ChatResult<void>> acceptInvitation(
  1. String roomId
)

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,
  );
}