Files
Prisma/lib/backend/di/backend_providers.dart
T

127 lines
4.0 KiB
Dart

import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../core/cache/cache_service.dart';
import '../../core/cache/image_cache_service.dart';
import '../../core/database/app_database.dart';
import '../../core/database/database_service.dart';
import '../../core/http/network_info.dart';
import '../providers/provider_factory.dart';
import '../providers/provider_manager.dart';
import '../repositories/collection_repository.dart';
import '../repositories/favorite_repository.dart';
import '../repositories/post_repository.dart';
import '../repositories/provider_repository.dart';
import '../repositories/search_repository.dart';
import '../services/collection_service.dart';
import '../services/download_service.dart';
import '../services/favorite_service.dart';
import '../services/feed_service.dart';
import '../services/provider_check_service.dart';
import '../services/search_service.dart';
import '../services/settings_service.dart';
final appDatabaseProvider = FutureProvider<AppDatabase>((ref) async {
final database = await AppDatabase.open();
ref.onDispose(database.close);
return database;
});
final databaseServiceProvider = Provider<DatabaseService>((ref) {
final database = ref.watch(appDatabaseProvider).requireValue;
return DatabaseService(database);
});
final connectivityProvider = Provider<Connectivity>((ref) => Connectivity());
final networkInfoProvider = Provider<NetworkInfo>((ref) {
return NetworkInfo(ref.watch(connectivityProvider));
});
final providerFactoryProvider = Provider<ProviderFactory>((ref) {
return ProviderFactory();
});
final postRepositoryProvider = Provider<PostRepository>((ref) {
return PostRepository(ref.watch(databaseServiceProvider));
});
final providerRepositoryProvider = Provider<ProviderRepository>((ref) {
return ProviderRepository(ref.watch(databaseServiceProvider));
});
final searchRepositoryProvider = Provider<SearchRepository>((ref) {
return SearchRepository(ref.watch(databaseServiceProvider));
});
final favoriteRepositoryProvider = Provider<FavoriteRepository>((ref) {
return FavoriteRepository(
ref.watch(databaseServiceProvider),
ref.watch(postRepositoryProvider),
);
});
final collectionRepositoryProvider = Provider<CollectionRepository>((ref) {
return CollectionRepository(
ref.watch(databaseServiceProvider),
ref.watch(postRepositoryProvider),
);
});
final cacheServiceProvider = Provider<CacheService>((ref) {
return CacheService(ref.watch(databaseServiceProvider));
});
final imageCacheServiceProvider = Provider<ImageCacheService>((ref) {
return ImageCacheService();
});
final providerManagerProvider = Provider<ProviderManager>((ref) {
return ProviderManager(
ref.watch(providerRepositoryProvider),
ref.watch(providerFactoryProvider),
);
});
final feedServiceProvider = Provider<FeedService>((ref) {
return FeedService(
ref.watch(providerManagerProvider),
ref.watch(cacheServiceProvider),
ref.watch(settingsServiceProvider),
);
});
final searchServiceProvider = Provider<SearchService>((ref) {
return SearchService(ref.watch(searchRepositoryProvider));
});
final providerCheckServiceProvider = Provider<ProviderCheckService>((ref) {
return ProviderCheckService(
ref.watch(providerRepositoryProvider),
ref.watch(providerFactoryProvider),
ref.watch(providerManagerProvider),
);
});
final favoriteServiceProvider = Provider<FavoriteService>((ref) {
return FavoriteService(
ref.watch(favoriteRepositoryProvider),
ref.watch(postRepositoryProvider),
);
});
final collectionServiceProvider = Provider<CollectionService>((ref) {
return CollectionService(ref.watch(collectionRepositoryProvider));
});
final settingsServiceProvider = Provider<SettingsService>((ref) {
return SettingsService(
ref.watch(databaseServiceProvider),
providerRepository: ref.watch(providerRepositoryProvider),
);
});
final downloadServiceProvider = Provider<DownloadService>((ref) {
return DownloadService();
});