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?.statusCode} - ${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,
    );
  }
}
