fix : don't redirect to login

This commit is contained in:
2025-06-29 09:43:30 +03:30
parent 6d7d12d032
commit 3fc745737d
3 changed files with 8 additions and 8 deletions

View File

@@ -2,8 +2,6 @@ import 'package:rasadyar_auth/auth.dart';
import 'package:rasadyar_auth/data/repositories/auth_repository_imp.dart';
import 'package:rasadyar_core/core.dart';
import '../models/response/auth/auth_response_model.dart';
import '../services/token_storage_service.dart';
Future<void> safeCall<T>({
required AppAsyncCallback<T> call,
Function(T result)? onSuccess,

View File

@@ -1,4 +1,6 @@
import 'dart:async';
import 'package:rasadyar_auth/presentation/routes/pages.dart';
import '../../core.dart';
typedef RefreshTokenCallback = Future<String?> Function();
@@ -10,7 +12,7 @@ class AppInterceptor extends Interceptor {
@override
Future<void> onError(DioException err, ErrorInterceptorHandler handler) async {
if (err.response?.statusCode == 401 && !ApiHandler.isRefreshing) {
// اول بقیه درخواست‌ها رو کنسل کن
ApiHandler.cancelAllRequests("Token expired - refreshing");
ApiHandler.isRefreshing = true;
@@ -19,7 +21,7 @@ class AppInterceptor extends Interceptor {
final newToken = await refreshTokenCallback();
if (newToken == null) throw Exception("Refresh failed");
// تولید CancelToken جدید برای درخواست‌های بعدی
ApiHandler.reset();
final opts = err.requestOptions;
@@ -34,8 +36,9 @@ class AppInterceptor extends Interceptor {
if (!ApiHandler.isRedirecting) {
ApiHandler.isRedirecting = true;
ApiHandler.cancelAllRequests("Cancel All Requests - Unauthorized");
// TODO: Navigate to login
Get.offAllNamed('/login');
if (Get.currentRoute != '/Auth') {
Get.offAllNamed('/Auth');
}
}
handler.reject(err);
} finally {

View File

@@ -11,12 +11,11 @@ class ApiHandler {
globalCancelToken = CancelToken();
}
// متد جدید برای کنسل کردن همه درخواست‌ها
static void cancelAllRequests(String reason) {
if (!globalCancelToken.isCancelled) {
globalCancelToken.cancel(reason);
}
// CancelToken جدید بساز برای درخواست‌های بعدی
globalCancelToken = CancelToken();
}