connectTokenLogin function

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

Implementation

Future<ConnectRefreshTokenModel?> connectTokenLogin(
  String payload,
  BuildContext context,
  Locale? locale,
  int tryCatch,
) async {
  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);
      await PreferenceInfo().setLoginPayload(payload);
      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) {
    if (tryCatch < 3) {
      return await connectTokenLogin(
        payload,
        context,
        locale,
        tryCatch + 1,
      );
    } else {
      Navigator.pop(context);
      errorDialog(
        context,
        locale == const Locale('en') ? 'Warning' : 'ແຈ້ງເຕືອນ',
        'Connect Token login: error',
        locale == const Locale('en') ? 'Close' : 'ປິດ',
        'Phetsarath',
      );
      return null;
    }
  }
}