59 lines
1.6 KiB
Dart
59 lines
1.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:rasadyar_core/core.dart';
|
|
|
|
class DioErrorHandler {
|
|
void handle(DioException error) {
|
|
switch (error.response?.statusCode) {
|
|
case 401:
|
|
_handleGeneric(error);
|
|
break;
|
|
case 403:
|
|
_handleGeneric(error);
|
|
break;
|
|
|
|
case 410:
|
|
_handle410();
|
|
break;
|
|
default:
|
|
_handleGeneric(error);
|
|
}
|
|
}
|
|
|
|
//wrong password/user name => "detail": "No active account found with the given credentials" - 401
|
|
void _handle410() {
|
|
Get.showSnackbar(_errorSnackBar('نام کاربری یا رمز عبور اشتباه است'));
|
|
}
|
|
|
|
//wrong captcha => "detail": "Captcha code is incorrect" - 403
|
|
void _handle403() {}
|
|
|
|
void _handleGeneric(DioException error) {
|
|
Get.showSnackbar(
|
|
_errorSnackBar(
|
|
error.response?.data.keys.first == 'is_user'
|
|
? 'کاربر با این شماره تلفن وجود ندارد'
|
|
: error.response?.data[error.response?.data.keys.first] ??
|
|
'خطا در برقراری ارتباط با سرور',
|
|
),
|
|
);
|
|
}
|
|
|
|
GetSnackBar _errorSnackBar(String message) {
|
|
return GetSnackBar(
|
|
titleText: Text(
|
|
'خطا',
|
|
style: AppFonts.yekan14.copyWith(color: Colors.white),
|
|
),
|
|
messageText: Text(
|
|
message,
|
|
style: AppFonts.yekan12.copyWith(color: Colors.white),
|
|
),
|
|
backgroundColor: AppColor.error,
|
|
margin: EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
|
borderRadius: 12,
|
|
duration: Duration(milliseconds: 3500),
|
|
snackPosition: SnackPosition.TOP,
|
|
);
|
|
}
|
|
}
|