Untitled
unknown
dart
a year ago
2.7 kB
5
Indexable
import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:ecommerce_integration_mobile_app/core/model/response/base_response_model.dart'; import 'package:ecommerce_integration_mobile_app/core/provider/snack_bar_provider.dart'; import 'package:ecommerce_integration_mobile_app/core/provider/token_provider.dart'; import 'package:ecommerce_integration_mobile_app/core/widget/snack_bar_widget.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; typedef DioParams = ({ bool? authRequired, List<String>? endpointsToIgnore, // Yoksayılacak endpointleri buna ekle }); final dioProvider = Provider.family<Dio, DioParams>((ref, DioParams params) { BaseOptions baseOptions = BaseOptions( contentType: "application/json", responseType: ResponseType.json); baseOptions.headers.addAll({ 'Authorization': params.authRequired == true ? "Bearer ${ref.watch(tokenProvider)?.access_token ?? ""}" : null, "X-CSRF-TOKEN": params.authRequired == true ? ref.watch(tokenProvider)?.csrf_token ?? "" : null }); var dio = Dio(baseOptions); dio.interceptors.add(InterceptorsWrapper( onError: (e, handler) async { // İsteğin endpointinin yoksayılacak endpointler listesinde olup olmadığını kontrol et final requestUri = e.requestOptions.uri.toString(); final endpointsToIgnore = params.endpointsToIgnore ?? []; if (endpointsToIgnore.contains(requestUri)) { // Endpoint ignore listesindeyse, toastı göstermeyi atla handler.next(e); return; } if (e.response?.data != null) { final Map<String, dynamic> jsonData = json.decode(e.response?.data); final response = BaseResponseModel.fromJson(jsonData, null); if (response.message != null) { ref.read(snackBarProvider.notifier).showSnackBar( message: response.message ?? "", snackBarType: SnackBarType.error); } } else if (e.type == DioExceptionType.connectionError) { ref.read(snackBarProvider.notifier).showSnackBar( message: "Please check your connection and try again.", snackBarType: SnackBarType.error); } else if (e.type == DioExceptionType.connectionTimeout) { ref.read(snackBarProvider.notifier).showSnackBar( message: e.message ?? "Timeout", snackBarType: SnackBarType.error); } else if (e.type == DioExceptionType.badResponse) { ref.read(snackBarProvider.notifier).showSnackBar( message: e.message ?? "An error occurred.", snackBarType: SnackBarType.error); } handler.next(e); }, )); return dio; });
Editor is loading...
Leave a Comment