Files
MWClash/lib/models/core.dart

262 lines
7.1 KiB
Dart
Raw Normal View History

2024-04-30 23:38:49 +08:00
// ignore_for_file: invalid_annotation_target
import 'package:fl_clash/enum/enum.dart';
import 'package:fl_clash/models/models.dart';
2024-04-30 23:38:49 +08:00
import 'package:freezed_annotation/freezed_annotation.dart';
part 'generated/core.freezed.dart';
part 'generated/core.g.dart';
abstract mixin class AppMessageListener {
void onLog(Log log) {}
void onDelay(Delay delay) {}
void onRequest(Connection connection) {}
void onLoaded(String providerName) {}
}
abstract mixin class ServiceMessageListener {
onProtect(Fd fd) {}
onProcess(ProcessData process) {}
}
2024-04-30 23:38:49 +08:00
@freezed
class CoreState with _$CoreState {
const factory CoreState({
@JsonKey(name: "vpn-props") required VpnProps vpnProps,
@JsonKey(name: "only-statistics-proxy") required bool onlyStatisticsProxy,
@JsonKey(name: "current-profile-name") required String currentProfileName,
@JsonKey(name: "bypass-domain") @Default([]) List<String> bypassDomain,
}) = _CoreState;
factory CoreState.fromJson(Map<String, Object?> json) =>
_$CoreStateFromJson(json);
}
@freezed
class AndroidVpnOptions with _$AndroidVpnOptions {
const factory AndroidVpnOptions({
required bool enable,
required int port,
required AccessControl? accessControl,
required bool allowBypass,
required bool systemProxy,
required List<String> bypassDomain,
required String ipv4Address,
required String ipv6Address,
@Default([]) List<String> routeAddress,
required String dnsServerAddress,
}) = _AndroidVpnOptions;
factory AndroidVpnOptions.fromJson(Map<String, Object?> json) =>
_$AndroidVpnOptionsFromJson(json);
}
@freezed
class ConfigExtendedParams with _$ConfigExtendedParams {
const factory ConfigExtendedParams({
@JsonKey(name: "is-patch") required bool isPatch,
@JsonKey(name: "selected-map") required SelectedMap selectedMap,
@JsonKey(name: "override-dns") required bool overrideDns,
@JsonKey(name: "override-rule") required bool overrideRule,
@JsonKey(name: "test-url") required String testUrl,
}) = _ConfigExtendedParams;
factory ConfigExtendedParams.fromJson(Map<String, Object?> json) =>
_$ConfigExtendedParamsFromJson(json);
}
2024-04-30 23:38:49 +08:00
@freezed
class UpdateConfigParams with _$UpdateConfigParams {
const factory UpdateConfigParams({
@JsonKey(name: "profile-id") required String profileId,
2024-04-30 23:38:49 +08:00
required ClashConfig config,
required ConfigExtendedParams params,
2024-04-30 23:38:49 +08:00
}) = _UpdateConfigParams;
factory UpdateConfigParams.fromJson(Map<String, Object?> json) =>
_$UpdateConfigParamsFromJson(json);
}
@freezed
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
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);
}
2024-04-30 23:38:49 +08:00
@freezed
2024-07-13 16:36:08 +08:00
class AppMessage with _$AppMessage {
const factory AppMessage({
required AppMessageType type,
2024-04-30 23:38:49 +08:00
dynamic data,
2024-07-13 16:36:08 +08:00
}) = _AppMessage;
2024-04-30 23:38:49 +08:00
2024-07-13 16:36:08 +08:00
factory AppMessage.fromJson(Map<String, Object?> json) =>
_$AppMessageFromJson(json);
}
@freezed
class InvokeMessage with _$InvokeMessage {
const factory InvokeMessage({
required InvokeMessageType type,
2024-07-13 16:36:08 +08:00
dynamic data,
}) = _InvokeMessage;
2024-07-13 16:36:08 +08:00
factory InvokeMessage.fromJson(Map<String, Object?> json) =>
_$InvokeMessageFromJson(json);
2024-04-30 23:38:49 +08:00
}
@freezed
class Delay with _$Delay {
const factory Delay({
required String name,
required String url,
2024-04-30 23:38:49 +08:00
int? value,
}) = _Delay;
factory Delay.fromJson(Map<String, Object?> json) => _$DelayFromJson(json);
}
2024-05-05 21:40:12 +08:00
@freezed
class Now with _$Now {
const factory Now({
required String name,
required String value,
}) = _Now;
factory Now.fromJson(Map<String, Object?> json) => _$NowFromJson(json);
}
2024-04-30 23:38:49 +08:00
@freezed
class ProcessData with _$ProcessData {
const factory ProcessData({
required String id,
required Metadata metadata,
}) = _ProcessData;
2024-04-30 23:38:49 +08:00
factory ProcessData.fromJson(Map<String, Object?> json) =>
_$ProcessDataFromJson(json);
2024-04-30 23:38:49 +08:00
}
@freezed
class Fd with _$Fd {
const factory Fd({
required String id,
required int value,
}) = _Fd;
factory Fd.fromJson(Map<String, Object?> json) => _$FdFromJson(json);
}
@freezed
class ProcessMapItem with _$ProcessMapItem {
const factory ProcessMapItem({
required String id,
2024-06-16 19:04:33 +08:00
required String value,
}) = _ProcessMapItem;
factory ProcessMapItem.fromJson(Map<String, Object?> json) =>
_$ProcessMapItemFromJson(json);
}
@freezed
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
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);
}
2024-07-13 16:36:08 +08:00
@freezed
class TunProps with _$TunProps {
const factory TunProps({
required int fd,
required String gateway,
required String gateway6,
required String portal,
required String portal6,
required String dns,
required String dns6,
}) = _TunProps;
factory TunProps.fromJson(Map<String, Object?> json) =>
_$TunPropsFromJson(json);
}
@freezed
class Action with _$Action {
const factory Action({
required ActionMethod method,
required dynamic data,
@JsonKey(name: "default-value") required dynamic defaultValue,
required String id,
}) = _Action;
2024-07-13 16:36:08 +08:00
factory Action.fromJson(Map<String, Object?> json) => _$ActionFromJson(json);
2024-07-13 16:36:08 +08:00
}
@freezed
class ActionResult with _$ActionResult {
const factory ActionResult({
required ActionMethod method,
required dynamic data,
String? id,
}) = _ActionResult;
factory ActionResult.fromJson(Map<String, Object?> json) =>
_$ActionResultFromJson(json);
2024-07-13 16:36:08 +08:00
}