Support core status check and force restart Optimize proxies page and access page Update flutter and pub dependencies Optimize more details
199 lines
5.9 KiB
Dart
199 lines
5.9 KiB
Dart
import 'package:fl_clash/enum/enum.dart';
|
|
import 'package:fl_clash/models/models.dart';
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'generated/core.freezed.dart';
|
|
part 'generated/core.g.dart';
|
|
|
|
@freezed
|
|
abstract class SetupParams with _$SetupParams {
|
|
const factory SetupParams({
|
|
@JsonKey(name: 'selected-map') required Map<String, String> selectedMap,
|
|
@JsonKey(name: 'test-url') required String testUrl,
|
|
}) = _SetupParams;
|
|
|
|
factory SetupParams.fromJson(Map<String, dynamic> json) =>
|
|
_$SetupParamsFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class UpdateParams with _$UpdateParams {
|
|
const factory UpdateParams({
|
|
required Tun tun,
|
|
@JsonKey(name: 'mixed-port') required int mixedPort,
|
|
@JsonKey(name: 'allow-lan') required bool allowLan,
|
|
@JsonKey(name: 'find-process-mode')
|
|
required FindProcessMode findProcessMode,
|
|
required Mode mode,
|
|
@JsonKey(name: 'log-level') required LogLevel logLevel,
|
|
required bool ipv6,
|
|
@JsonKey(name: 'tcp-concurrent') required bool tcpConcurrent,
|
|
@JsonKey(name: 'external-controller')
|
|
required ExternalControllerStatus externalController,
|
|
@JsonKey(name: 'unified-delay') required bool unifiedDelay,
|
|
}) = _UpdateParams;
|
|
|
|
factory UpdateParams.fromJson(Map<String, dynamic> json) =>
|
|
_$UpdateParamsFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class VpnOptions with _$VpnOptions {
|
|
const factory VpnOptions({
|
|
required bool enable,
|
|
required int port,
|
|
required bool ipv6,
|
|
required bool dnsHijacking,
|
|
required AccessControl accessControl,
|
|
required bool allowBypass,
|
|
required bool systemProxy,
|
|
required List<String> bypassDomain,
|
|
required String stack,
|
|
@Default([]) List<String> routeAddress,
|
|
}) = _VpnOptions;
|
|
|
|
factory VpnOptions.fromJson(Map<String, Object?> json) =>
|
|
_$VpnOptionsFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class InitParams with _$InitParams {
|
|
const factory InitParams({
|
|
@JsonKey(name: 'home-dir') required String homeDir,
|
|
required int version,
|
|
}) = _InitParams;
|
|
|
|
factory InitParams.fromJson(Map<String, Object?> json) =>
|
|
_$InitParamsFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class ChangeProxyParams with _$ChangeProxyParams {
|
|
const factory ChangeProxyParams({
|
|
@JsonKey(name: 'group-name') required String groupName,
|
|
@JsonKey(name: 'proxy-name') required String proxyName,
|
|
}) = _ChangeProxyParams;
|
|
|
|
factory ChangeProxyParams.fromJson(Map<String, Object?> json) =>
|
|
_$ChangeProxyParamsFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class UpdateGeoDataParams with _$UpdateGeoDataParams {
|
|
const factory UpdateGeoDataParams({
|
|
@JsonKey(name: 'geo-type') required String geoType,
|
|
@JsonKey(name: 'geo-name') required String geoName,
|
|
}) = _UpdateGeoDataParams;
|
|
|
|
factory UpdateGeoDataParams.fromJson(Map<String, Object?> json) =>
|
|
_$UpdateGeoDataParamsFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class CoreEvent with _$CoreEvent {
|
|
const factory CoreEvent({required CoreEventType type, dynamic data}) =
|
|
_CoreEvent;
|
|
|
|
factory CoreEvent.fromJson(Map<String, Object?> json) =>
|
|
_$CoreEventFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class InvokeMessage with _$InvokeMessage {
|
|
const factory InvokeMessage({required InvokeMessageType type, dynamic data}) =
|
|
_InvokeMessage;
|
|
|
|
factory InvokeMessage.fromJson(Map<String, Object?> json) =>
|
|
_$InvokeMessageFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class Delay with _$Delay {
|
|
const factory Delay({required String name, required String url, int? value}) =
|
|
_Delay;
|
|
|
|
factory Delay.fromJson(Map<String, Object?> json) => _$DelayFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class Now with _$Now {
|
|
const factory Now({required String name, required String value}) = _Now;
|
|
|
|
factory Now.fromJson(Map<String, Object?> json) => _$NowFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class ProviderSubscriptionInfo with _$ProviderSubscriptionInfo {
|
|
const factory ProviderSubscriptionInfo({
|
|
@JsonKey(name: 'UPLOAD') @Default(0) int upload,
|
|
@JsonKey(name: 'DOWNLOAD') @Default(0) int download,
|
|
@JsonKey(name: 'TOTAL') @Default(0) int total,
|
|
@JsonKey(name: 'EXPIRE') @Default(0) int expire,
|
|
}) = _ProviderSubscriptionInfo;
|
|
|
|
factory ProviderSubscriptionInfo.fromJson(Map<String, Object?> json) =>
|
|
_$ProviderSubscriptionInfoFromJson(json);
|
|
}
|
|
|
|
SubscriptionInfo? subscriptionInfoFormCore(Map<String, Object?>? json) {
|
|
if (json == null) return null;
|
|
return SubscriptionInfo(
|
|
upload: (json['Upload'] as num?)?.toInt() ?? 0,
|
|
download: (json['Download'] as num?)?.toInt() ?? 0,
|
|
total: (json['Total'] as num?)?.toInt() ?? 0,
|
|
expire: (json['Expire'] as num?)?.toInt() ?? 0,
|
|
);
|
|
}
|
|
|
|
@freezed
|
|
abstract class ExternalProvider with _$ExternalProvider {
|
|
const factory ExternalProvider({
|
|
required String name,
|
|
required String type,
|
|
String? path,
|
|
required int count,
|
|
@JsonKey(name: 'subscription-info', fromJson: subscriptionInfoFormCore)
|
|
SubscriptionInfo? subscriptionInfo,
|
|
@Default(false) bool isUpdating,
|
|
@JsonKey(name: 'vehicle-type') required String vehicleType,
|
|
@JsonKey(name: 'update-at') required DateTime updateAt,
|
|
}) = _ExternalProvider;
|
|
|
|
factory ExternalProvider.fromJson(Map<String, Object?> json) =>
|
|
_$ExternalProviderFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class Action with _$Action {
|
|
const factory Action({
|
|
required ActionMethod method,
|
|
required dynamic data,
|
|
required String id,
|
|
}) = _Action;
|
|
|
|
factory Action.fromJson(Map<String, Object?> json) => _$ActionFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class ActionResult with _$ActionResult {
|
|
const factory ActionResult({
|
|
required ActionMethod method,
|
|
required dynamic data,
|
|
String? id,
|
|
@Default(ResultType.success) ResultType code,
|
|
}) = _ActionResult;
|
|
|
|
factory ActionResult.fromJson(Map<String, Object?> json) =>
|
|
_$ActionResultFromJson(json);
|
|
}
|
|
|
|
extension ActionResultExt on ActionResult {
|
|
Result get toResult {
|
|
if (code == ResultType.success) {
|
|
return Result.success(data);
|
|
} else {
|
|
return Result.error(data);
|
|
}
|
|
}
|
|
}
|