redialChatCallMember method
override
Redials a User who left or declined the ongoing ChatCall in the specified Chat-group by the authenticated MyUser.
Implementation
@override
Future<void> redialChatCallMember(ChatId chatId, UserId memberId) async {
Log.debug('redialChatCallMember($chatId, $memberId)', '$runtimeType');
final Rx<OngoingCall>? ongoing = calls[chatId];
final CallMemberId id = CallMemberId(memberId, null);
if (ongoing != null) {
if (ongoing.value.members.keys.none((e) => e.userId == memberId)) {
ongoing.value.members[id] = CallMember(
id,
null,
isConnected: false,
isDialing: true,
);
}
}
try {
await _graphQlProvider.redialChatCallMember(chatId, memberId);
} on RedialChatCallMemberException catch (e) {
switch (e.code) {
case RedialChatCallMemberErrorCode.notCallMember:
case RedialChatCallMemberErrorCode.noCall:
case RedialChatCallMemberErrorCode.unknownChat:
case RedialChatCallMemberErrorCode.notChatMember:
WebUtils.removeCall(chatId);
remove(chatId);
break;
case RedialChatCallMemberErrorCode.unknownUser:
case RedialChatCallMemberErrorCode.notGroup:
// No-op.
break;
case RedialChatCallMemberErrorCode.artemisUnknown:
rethrow;
}
} catch (_) {
ongoing?.value.members.remove(id);
}
}