1import 'package:dio/dio.dart';
2import 'package:flutter_bloc/flutter_bloc.dart';
3import 'package:go_router/go_router.dart';
5import '../../features/auth/presentation/bloc/authentication_bloc/authentication_bloc.dart';
6import '../../features/auth/presentation/widgets/fast_sign_in_bottom_sheet.dart';
7import '../constants/strings.dart';
8import '../router/router.dart';
9import '../router/routes.dart';
10import '../services/auth_service.dart';
11import '../services/fast_sign_in_service.dart';
12import '../services/secure_storage_service.dart';
13import '../ui/theme/color_palette.dart';
14import '../ui/widgets/custom_snackbar.dart';
15import 'api_endpoints.dart';
28 RequestOptions options,
29 RequestInterceptorHandler handler,
33 options.headers[
'Authorization'] =
'Bearer $token';
36 return handler.next(options);
42 ResponseInterceptorHandler handler,
45 final currentRoute = currentContext != null
46 ? GoRouter.of(currentContext).state.matchedLocation
48 final isLoginRoute = currentRoute ==
Routes.signInScreen.route;
49 final isSplashRoute = currentRoute ==
Routes.splashScreen.route;
51 final requestUrl = response.requestOptions.uri.toString();
52 final isGeoLocationUrl = requestUrl == ApiEndpoints.sendGeoLocation;
54 if ((response.statusCode == 401 || !isTokenValid) &&
60 return handler.next(response);
65 if (context == null)
return;
66 final authBloc = BlocProvider.of<AuthenticationBloc>(context);
67 authBloc.add(LoadEmailEvent());
70 await
for (
final state in authBloc.stream) {
71 if (state is EmailLoadedState) {
80 FastSignInBottomSheet.show(
85 authBloc.add(LoadSessionEvent());
89 "Successfully logged in",
102 if (result == null || result ==
false) {
static ScaffoldFeatureController< SnackBar, SnackBarClosedReason > display(final BuildContext context, final Color color, final String message,)
AuthInterceptor({required this.dio})
final _tokenSecureStorage
final FastSignInService _fastSignInService
override void onResponse(Response response, ResponseInterceptorHandler handler,) async
final AuthService _authService
Future< void > _handleTokenExpiration() async
override void onRequest(RequestOptions options, RequestInterceptorHandler handler,) async
static const String tokenKey