connectTokenLogin function

Future<ConnectRefreshTokenModel?> connectTokenLogin(
  1. String payload,
  2. BuildContext context,
  3. Locale? locale,
  4. int n,
)

Implementation

Future<ConnectRefreshTokenModel?> connectTokenLogin(
    String payload, BuildContext context, Locale? locale, int n) async {
  int retry = n + 1;
  if(retry > 3){
    return null;
  }
  String url = APIPath.CONNECT_TOKEN_LOGIN;
  try {
    var response = await http.post(Uri.parse(url), body: payload, headers: {
      'Content-type': 'application/json',
      'Accept': 'application/json'
    });
    if (response.statusCode == 200) {
      ConnectRefreshTokenModel data =
          connectRefreshTokenModelFromJson(response.body);
      return data;
    } else if (response.statusCode == 400) {
      Navigator.pop(context);
      BadRequestModel data = badRequestModelFromJson(response.body);
      if (data.code == 'REQUEST_TOKEN_ERROR' &&
          data.message == 'invalid_grant') {
        errorDialog(context, locale == const Locale('en') ? 'Warning' : 'ແຈ້ງເຕືອນ', locale == const Locale('en') ? 'Sorry, Please enter correct OTP' : 'ຂໍອະໄພ ກະລຸນາປ້ອນ OTP ໃຫ້ຖືກຕ້ອງ',
            locale == const Locale('en') ? 'Close' : 'ປິດ', 'Phetsarath');
      } else {
        errorDialog(
            context,
            locale == const Locale('en') ? 'Warning' :'ແຈ້ງເຕືອນ',
            'Connect Token login: ${data.code} ${data.detail}',
            locale == const Locale('en') ? 'Close' : 'ປິດ',
            'Phetsarath');
      }
      return null;
    } else {
      Navigator.pop(context);
      errorDialog(
          context,
          locale == const Locale('en') ? 'Warning' : 'ແຈ້ງເຕືອນ',
          'Connect Token login: ${response.statusCode} ${response.body}',
          locale == const Locale('en') ? 'Close' : 'ປິດ',
          'Phetsarath');
      return null;
    }
  } catch (e) {
    return await connectTokenLogin(payload, context, locale, retry);
  }
}