iykyk_msn/mobile/lib/core/api_client.dart

32 lines
871 B
Dart

import 'package:dio/dio.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'api_config.dart';
import 'token_storage.dart';
final tokenStorageProvider = Provider<TokenStorage>((ref) => TokenStorage());
final dioProvider = Provider<Dio>((ref) {
final storage = ref.watch(tokenStorageProvider);
final dio = Dio(
BaseOptions(
baseUrl: ApiConfig.baseUrl,
connectTimeout: const Duration(seconds: 15),
receiveTimeout: const Duration(seconds: 30),
headers: {'Content-Type': 'application/json'},
),
);
dio.interceptors.add(
InterceptorsWrapper(
onRequest: (options, handler) async {
final t = await storage.readToken();
if (t != null && t.isNotEmpty) {
options.headers['Authorization'] = 'Bearer $t';
}
handler.next(options);
},
),
);
return dio;
});