removeChatCallMember method

  1. @override
Future<void> removeChatCallMember(
  1. ChatId chatId,
  2. UserId userId
)
override

Removes the specified User from the ChatCall of the specified Chat-group by authority of the authenticated MyUser.

If the specified User participates in the ChatCall from multiple devices simultaneously, then removes all the devices at once.

Implementation

@override
Future<void> removeChatCallMember(ChatId chatId, UserId userId) async {
  Log.debug('removeChatCallMember($chatId, $userId)', '$runtimeType');

  try {
    // TODO: Implement optimism, if possible.
    await Backoff.run(
      () async {
        await _graphQlProvider.removeChatCallMember(chatId, userId);
      },
      retryIf: (e) => e.isNetworkRelated,
      retries: 10,
    );
  } on RemoveChatCallMemberException catch (e) {
    switch (e.code) {
      case RemoveChatCallMemberErrorCode.artemisUnknown:
        rethrow;

      case RemoveChatCallMemberErrorCode.notGroup:
        // No-op.
        break;

      case RemoveChatCallMemberErrorCode.notMember:
      case RemoveChatCallMemberErrorCode.unknownChat:
        // No-op.
        break;
    }
  }
}