149 lines
3.9 KiB
Dart
149 lines
3.9 KiB
Dart
import 'package:fl_clash/common/common.dart';
|
|
import 'package:fl_clash/models/models.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
|
|
part 'generated/config.g.dart';
|
|
|
|
@riverpod
|
|
class AppSetting extends _$AppSetting with AutoDisposeNotifierMixin {
|
|
@override
|
|
AppSettingProps build() {
|
|
return AppSettingProps();
|
|
}
|
|
}
|
|
|
|
@Riverpod(keepAlive: true)
|
|
class WindowSetting extends _$WindowSetting with AutoDisposeNotifierMixin {
|
|
@override
|
|
WindowProps build() {
|
|
return WindowProps();
|
|
}
|
|
|
|
void hello() {}
|
|
}
|
|
|
|
@riverpod
|
|
class VpnSetting extends _$VpnSetting with AutoDisposeNotifierMixin {
|
|
@override
|
|
VpnProps build() {
|
|
return VpnProps();
|
|
}
|
|
}
|
|
|
|
@riverpod
|
|
class NetworkSetting extends _$NetworkSetting with AutoDisposeNotifierMixin {
|
|
@override
|
|
NetworkProps build() {
|
|
return NetworkProps();
|
|
}
|
|
}
|
|
|
|
@riverpod
|
|
class ThemeSetting extends _$ThemeSetting with AutoDisposeNotifierMixin {
|
|
@override
|
|
ThemeProps build() {
|
|
return ThemeProps();
|
|
}
|
|
}
|
|
|
|
@riverpod
|
|
class CurrentProfileId extends _$CurrentProfileId
|
|
with AutoDisposeNotifierMixin {
|
|
@override
|
|
int? build() {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@riverpod
|
|
class DavSetting extends _$DavSetting with AutoDisposeNotifierMixin {
|
|
@override
|
|
DAVProps? build() {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@riverpod
|
|
class OverrideDns extends _$OverrideDns with AutoDisposeNotifierMixin {
|
|
@override
|
|
bool build() {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@riverpod
|
|
class HotKeyActions extends _$HotKeyActions with AutoDisposeNotifierMixin {
|
|
@override
|
|
List<HotKeyAction> build() {
|
|
return [];
|
|
}
|
|
}
|
|
|
|
@riverpod
|
|
class ProxiesStyleSetting extends _$ProxiesStyleSetting
|
|
with AutoDisposeNotifierMixin {
|
|
@override
|
|
ProxiesStyleProps build() {
|
|
return ProxiesStyleProps();
|
|
}
|
|
}
|
|
|
|
@Riverpod(name: 'patchClashConfigProvider')
|
|
class _PatchClashConfig extends _$PatchClashConfig
|
|
with AutoDisposeNotifierMixin {
|
|
@override
|
|
PatchClashConfig build() {
|
|
return PatchClashConfig();
|
|
}
|
|
}
|
|
|
|
@Riverpod(name: 'configProvider')
|
|
Config _config(Ref ref) {
|
|
final appSettingProps = ref.watch(appSettingProvider);
|
|
final windowProps = ref.watch(windowSettingProvider);
|
|
final vpnProps = ref.watch(vpnSettingProvider);
|
|
final networkProps = ref.watch(networkSettingProvider);
|
|
final themeProps = ref.watch(themeSettingProvider);
|
|
final currentProfileId = ref.watch(currentProfileIdProvider);
|
|
final davProps = ref.watch(davSettingProvider);
|
|
final overrideDns = ref.watch(overrideDnsProvider);
|
|
final hotKeyActions = ref.watch(hotKeyActionsProvider);
|
|
final proxiesStyleProps = ref.watch(proxiesStyleSettingProvider);
|
|
final patchClashConfig = ref.watch(patchClashConfigProvider);
|
|
return Config(
|
|
appSettingProps: appSettingProps,
|
|
windowProps: windowProps,
|
|
vpnProps: vpnProps,
|
|
networkProps: networkProps,
|
|
themeProps: themeProps,
|
|
currentProfileId: currentProfileId,
|
|
davProps: davProps,
|
|
overrideDns: overrideDns,
|
|
hotKeyActions: hotKeyActions,
|
|
proxiesStyleProps: proxiesStyleProps,
|
|
patchClashConfig: patchClashConfig,
|
|
);
|
|
}
|
|
|
|
List<Override> buildConfigOverrides(Config config) {
|
|
return [
|
|
appSettingProvider.overrideWithBuild((_, _) => config.appSettingProps),
|
|
windowSettingProvider.overrideWithBuild((_, _) => config.windowProps),
|
|
vpnSettingProvider.overrideWithBuild((_, _) => config.vpnProps),
|
|
networkSettingProvider.overrideWithBuild((_, _) => config.networkProps),
|
|
themeSettingProvider.overrideWithBuild((_, _) => config.themeProps),
|
|
currentProfileIdProvider.overrideWithBuild(
|
|
(_, _) => config.currentProfileId,
|
|
),
|
|
davSettingProvider.overrideWithBuild((_, _) => config.davProps),
|
|
overrideDnsProvider.overrideWithBuild((_, _) => config.overrideDns),
|
|
hotKeyActionsProvider.overrideWithBuild((_, _) => config.hotKeyActions),
|
|
proxiesStyleSettingProvider.overrideWithBuild(
|
|
(_, _) => config.proxiesStyleProps,
|
|
),
|
|
patchClashConfigProvider.overrideWithBuild(
|
|
(_, _) => config.patchClashConfig,
|
|
),
|
|
];
|
|
}
|