checkStatus method

dynamic checkStatus(
  1. String cardToken,
  2. String appToken
)

Implementation

checkStatus(String cardToken, String appToken) async {
  _pollingTimer = Timer.periodic(Duration(seconds: 5), (timer) async {
    try {
      ThreeDSStatusResponse statusResponse = await _customerRepository
          .get3DSStatus(cardToken, appToken);
      if (kDebugMode) {
        print("3DS STATUS: ${jsonEncode(statusResponse.toJson())}");
      }
      if (statusResponse.status == 200) {
        if (statusResponse.data!.isAuthenticateStart == false) {
          if (kDebugMode) {
            print("3DS STATUS AUTH START FAILED: ${IPGErrorMessages
                .authStartFailed}");
          }
          timer.cancel();
          check3DSStatusSink.add(Response.error(statusResponse.message));
        }
        if (statusResponse.data!.isLoading == false &&
            statusResponse.data!.isAuthenticate == true &&
            statusResponse.data!.isPay == true) {
          if (kDebugMode) {
            print("3DS STATUS COMPLETED MESSAGE: ${statusResponse.message}");
          }
          timer.cancel();
          check3DSStatusSink.add(Response.completed(statusResponse.data!));
        } else if (statusResponse.data!.isLoading == false &&
            statusResponse.data!.isAuthenticate == true) {
          if (kDebugMode) {
            print("3DS STATUS AUTH FAILED MESSAGE: ${IPGErrorMessages
                .authIncompleteProcess}");
          }
          timer.cancel();
          check3DSStatusSink.add(Response.error(statusResponse.message));
        } else if (statusResponse.data!.isLoading == false &&
            statusResponse.data!.isAuthenticate == false) {
          if (kDebugMode) {
            print("3DS STATUS AUTH FAILED MESSAGE: ${IPGErrorMessages
                .authFailed}");
          }
          timer.cancel();
          check3DSStatusSink.add(Response.error(statusResponse.message));
        }
      } else {
        if (kDebugMode) {
          print("3DS STATUS FAILED MESSAGE: ${statusResponse.message}");
        }
        check3DSStatusSink.add(
          Response.error(statusResponse.message, errorCode: 1),
        );
      }
    } on UnauthorisedException {
      timer.cancel();
      if (kDebugMode) {
        print("3DS STATUS ERROR: ${IPGErrorMessages.invalidAppToken}");
      }
      check3DSStatusSink.add(
        Response.error(IPGErrorMessages.invalidAppToken),
      );
    } catch (e) {
      timer.cancel();
      check3DSStatusSink.add(Response.error(e.toString()));
      if (kDebugMode) {
        print("3DS STATUS ERROR: ${e.toString()}");
      }
    }
  });
}