60 lines
1.6 KiB
Dart
60 lines
1.6 KiB
Dart
import 'package:cookie_jar/cookie_jar.dart';
|
|
import 'package:dio/dio.dart';
|
|
import 'package:get_it/get_it.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import 'src/network/dio_client.dart';
|
|
import 'src/network/treezor_token_interceptor.dart';
|
|
import 'src/env/env_contract.dart';
|
|
import 'src/api/questia_api.dart';
|
|
import 'src/repositories/questia_repository_impl.dart';
|
|
import 'src/repositories/questia_repository.dart';
|
|
|
|
export 'src/repositories/questia_repository.dart';
|
|
|
|
final getIt = GetIt.instance;
|
|
|
|
Future<void> configureDependencies(
|
|
EnvConfig env, {
|
|
bool log = false,
|
|
void Function()? onTokenExpired,
|
|
void Function()? onUnauthorized,
|
|
}) async {
|
|
final cookieJar = await buildPersistCookieJar();
|
|
|
|
final dio = await buildDioClient(
|
|
baseUrl: env.apiBaseUrl,
|
|
origin: env.apiOrigin,
|
|
log: log,
|
|
cookieJar: cookieJar,
|
|
);
|
|
|
|
if (onUnauthorized != null) {
|
|
dio.interceptors.add(
|
|
TreezorTokenInterceptor(
|
|
onUnauthorized: onUnauthorized,
|
|
onTokenExpired: onTokenExpired,
|
|
),
|
|
);
|
|
}
|
|
|
|
getIt.registerLazySingleton<CookieJar>(() => cookieJar);
|
|
getIt.registerLazySingleton<Dio>(() => dio);
|
|
getIt.registerLazySingleton<QuestiaApi>(() => QuestiaApi(getIt<Dio>()));
|
|
getIt.registerLazySingleton<QuestiaRepository>(
|
|
() => QuestiaRepositoryImpl(getIt<QuestiaApi>()),
|
|
);
|
|
}
|
|
|
|
void Function()? onBeforeSessionCleared;
|
|
|
|
Future<void> clearSessionData() async {
|
|
onBeforeSessionCleared?.call();
|
|
|
|
final cookieJar = getIt<CookieJar>();
|
|
await cookieJar.deleteAll();
|
|
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.clear();
|
|
}
|