Files
umbrix/lib/data/data_providers.dart

66 lines
2.3 KiB
Dart
Raw Normal View History

2023-07-06 17:18:41 +03:30
import 'package:dio/dio.dart';
2023-09-12 15:22:58 +03:30
import 'package:hiddify/core/core_providers.dart';
2023-08-19 22:27:23 +03:30
import 'package:hiddify/data/api/clash_api.dart';
2023-07-06 17:18:41 +03:30
import 'package:hiddify/data/local/dao/dao.dart';
import 'package:hiddify/data/local/database.dart';
2023-09-12 15:22:58 +03:30
import 'package:hiddify/data/repository/app_repository_impl.dart';
2023-09-01 15:00:41 +03:30
import 'package:hiddify/data/repository/config_options_store.dart';
2023-07-06 17:18:41 +03:30
import 'package:hiddify/data/repository/repository.dart';
2023-07-27 18:03:41 +03:30
import 'package:hiddify/domain/app/app.dart';
2023-08-19 22:27:23 +03:30
import 'package:hiddify/domain/constants.dart';
import 'package:hiddify/domain/core_facade.dart';
2023-07-06 17:18:41 +03:30
import 'package:hiddify/domain/profiles/profiles.dart';
import 'package:hiddify/services/service_providers.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:shared_preferences/shared_preferences.dart';
part 'data_providers.g.dart';
@Riverpod(keepAlive: true)
AppDatabase appDatabase(AppDatabaseRef ref) => AppDatabase.connect();
@Riverpod(keepAlive: true)
SharedPreferences sharedPreferences(SharedPreferencesRef ref) =>
throw UnimplementedError('sharedPreferences must be overridden');
@Riverpod(keepAlive: true)
2023-08-25 19:07:03 +03:30
Dio dio(DioRef ref) => Dio(
BaseOptions(
2023-09-22 23:52:20 +03:30
connectTimeout: const Duration(seconds: 15),
sendTimeout: const Duration(seconds: 15),
receiveTimeout: const Duration(seconds: 15),
2023-08-25 19:07:03 +03:30
headers: {
2023-09-12 15:22:58 +03:30
"User-Agent": ref.watch(appInfoProvider).userAgent,
2023-08-25 19:07:03 +03:30
},
),
2023-10-04 18:06:48 +03:30
);
2023-07-06 17:18:41 +03:30
@Riverpod(keepAlive: true)
ProfilesDao profilesDao(ProfilesDaoRef ref) => ProfilesDao(
ref.watch(appDatabaseProvider),
);
@Riverpod(keepAlive: true)
ProfilesRepository profilesRepository(ProfilesRepositoryRef ref) =>
ProfilesRepositoryImpl(
profilesDao: ref.watch(profilesDaoProvider),
filesEditor: ref.watch(filesEditorServiceProvider),
2023-08-19 22:27:23 +03:30
singbox: ref.watch(coreFacadeProvider),
2023-07-06 17:18:41 +03:30
dio: ref.watch(dioProvider),
);
2023-07-27 18:03:41 +03:30
@Riverpod(keepAlive: true)
2023-09-12 15:22:58 +03:30
AppRepository appRepository(AppRepositoryRef ref) =>
AppRepositoryImpl(ref.watch(dioProvider));
2023-08-19 22:27:23 +03:30
@Riverpod(keepAlive: true)
ClashApi clashApi(ClashApiRef ref) => ClashApi(Defaults.clashApiPort);
@Riverpod(keepAlive: true)
CoreFacade coreFacade(CoreFacadeRef ref) => CoreFacadeImpl(
ref.watch(singboxServiceProvider),
ref.watch(filesEditorServiceProvider),
ref.watch(clashApiProvider),
2023-09-01 15:00:41 +03:30
() => ref.read(configOptionsProvider),
2023-08-19 22:27:23 +03:30
);