fetchToken method

Future<void> fetchToken()

Implementation

Future<void> fetchToken() async {
  tools.log("ChatCallKitManagerImpl: fetchToken called");
  if (_chat.model.hasJoined) return;
  if (_chat.model.curCall == null ||
      _rtc.agoraAppId == null ||
      rtcTokenHandler == null) {
    return;
  }

  Map<String, int> agoraToken = await rtcTokenHandler!.call(
    _chat.model.curCall!.channel,
    _rtc.agoraAppId!,
  );

  tools.log("ChatCallKitManagerImpl: fetchToken called, agoraToken: $agoraToken");

  if (agoraToken.isEmpty) {
    throw ChatCallKitError.process(
        ChatCallKitErrorProcessCode.fetchTokenFail, 'fetch token fail');
  }

  if (_chat.model.curCall == null) {}

  String? username = ChatCallKitClient.getInstance.currentUserId;

  if (username == null) return;

  tools.log(
    "ChatCallKitManagerImpl: joinChannel called, "
    "callType: ${_chat.model.curCall!.callType}, "
    "agoraToken: ${agoraToken.keys.first}, "
    "channel: ${_chat.model.curCall!.channel}, "
    "agoraUid: ${_chat.model.agoraUid ?? agoraToken.values.first}"
  );
  await _rtc.joinChannel(
    _chat.model.curCall!.callType,
    agoraToken.keys.first,
    _chat.model.curCall!.channel,
    _chat.model.agoraUid ?? agoraToken.values.first,
  );
}