streamCallbackData property

Stream<TcSdkCallback> streamCallbackData

Once you call getAuthorizationCode, you can listen to this stream to determine the result of the action taken by the user. TcSdkCallbackResult.success means the result is successful and you can now fetch the user's access token using the authorization code from TcSdkCallback.tcOAuthData TcSdkCallbackResult.failure means the result is failure and you can now fetch the result of failure from TcSdkCallback.error TcSdkCallbackResult.verification will be returned only when using TcSdkOptions.OPTION_VERIFY_ALL_USERS which indicates to verify the user manually

Implementation

static Stream<TcSdkCallback> get streamCallbackData {
  if (_callbackStream == null) {
    _callbackStream = _eventChannel.receiveBroadcastStream().map<TcSdkCallback>((value) {
      TcSdkCallback callback = new TcSdkCallback();
      var resultHashMap = HashMap<String, String>.from(value);
      final String? result = resultHashMap["result"];
      switch (result.enumValue()) {
        case TcSdkCallbackResult.success:
          callback.result = TcSdkCallbackResult.success;
          _insertOAuthData(callback, resultHashMap["data"]!);
          break;
        case TcSdkCallbackResult.failure:
          callback.result = TcSdkCallbackResult.failure;
          _insertError(callback, resultHashMap["data"]);
          break;
        case TcSdkCallbackResult.verification:
          callback.result = TcSdkCallbackResult.verification;
          _insertError(callback, resultHashMap["data"]);
          break;
        case TcSdkCallbackResult.missedCallInitiated:
          callback.result = TcSdkCallbackResult.missedCallInitiated;
          CallbackData data = _insertData(callback, resultHashMap["data"]!);
          callback.ttl = data.ttl;
          callback.requestNonce = data.requestNonce;
          break;
        case TcSdkCallbackResult.missedCallReceived:
          callback.result = TcSdkCallbackResult.missedCallReceived;
          break;
        case TcSdkCallbackResult.otpInitiated:
          callback.result = TcSdkCallbackResult.otpInitiated;
          CallbackData data = _insertData(callback, resultHashMap["data"]!);
          callback.ttl = data.ttl;
          callback.requestNonce = data.requestNonce;
          break;
        case TcSdkCallbackResult.otpReceived:
          callback.result = TcSdkCallbackResult.otpReceived;
          CallbackData data = _insertData(callback, resultHashMap["data"]!);
          callback.otp = data.otp;
          break;
        case TcSdkCallbackResult.verifiedBefore:
          callback.result = TcSdkCallbackResult.verifiedBefore;
          CallbackData data = _insertData(callback, resultHashMap["data"]!);
          _insertProfile(callback, data.profile!);
          break;
        case TcSdkCallbackResult.verificationComplete:
          callback.result = TcSdkCallbackResult.verificationComplete;
          CallbackData data = _insertData(callback, resultHashMap["data"]!);
          callback.accessToken = data.accessToken;
          callback.requestNonce = data.requestNonce;
          break;
        case TcSdkCallbackResult.exception:
          callback.result = TcSdkCallbackResult.exception;
          Map exceptionMap = jsonDecode(resultHashMap["data"]!);
          TruecallerException exception =
              TruecallerException.fromJson(exceptionMap as Map<String, dynamic>);
          callback.exception = exception;
          break;
        default:
          throw PlatformException(
              code: "1010", message: "${resultHashMap["result"]} is not a valid result");
      }
      return callback;
    });
  }
  return _callbackStream!;
}