37 lines
1.4 KiB
Dart
37 lines
1.4 KiB
Dart
import 'package:dio/dio.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:relationship_saver/core/auth/secure_token_store.dart';
|
|
import 'package:relationship_saver/core/auth/token_store.dart';
|
|
import 'package:relationship_saver/core/config/app_config.dart';
|
|
import 'package:relationship_saver/core/network/dio_factory.dart';
|
|
import 'package:relationship_saver/integrations/backend/backend_gateway.dart';
|
|
import 'package:relationship_saver/integrations/backend/backend_gateway_fake.dart';
|
|
import 'package:relationship_saver/integrations/backend/backend_gateway_rest.dart';
|
|
|
|
/// Provides token storage implementation.
|
|
final Provider<TokenStore> tokenStoreProvider = Provider<TokenStore>((Ref ref) {
|
|
return SecureTokenStore();
|
|
});
|
|
|
|
/// Provides configured Dio client for backend transport.
|
|
final Provider<Dio> backendDioProvider = Provider<Dio>((Ref ref) {
|
|
final TokenStore tokenStore = ref.watch(tokenStoreProvider);
|
|
return DioFactory.create(
|
|
baseUrl: AppConfig.backendBaseUrl,
|
|
tokenStore: tokenStore,
|
|
);
|
|
});
|
|
|
|
/// Provides backend gateway implementation.
|
|
final Provider<BackendGateway> backendGatewayProvider =
|
|
Provider<BackendGateway>((Ref ref) {
|
|
if (AppConfig.useFakeBackend) {
|
|
return BackendGatewayFake();
|
|
}
|
|
|
|
return BackendGatewayRest(
|
|
dio: ref.watch(backendDioProvider),
|
|
tokenStore: ref.watch(tokenStoreProvider),
|
|
);
|
|
});
|