Files
flutter_server_box/lib/data/model/app/update.dart
2023-04-18 22:37:19 +08:00

127 lines
2.9 KiB
Dart

/*
{
"changelog": {
"mac": "xxx",
"ios": "xxx",
"android": ""
},
"build": {
"min": {
"mac": 1,
"ios": 1,
"android": 1
},
"last": {
"mac": 1,
"ios": 1,
"android": 1
}
},
"url": {
"mac": "https://apps.apple.com/app/id1586449703",
"ios": "https://apps.apple.com/app/id1586449703",
"android": "https://cdn3.cust.app/uploads/ServerBox_262_Arm64.apk"
}
}
*/
import 'dart:convert';
import '/core/utils/platform.dart';
class AppUpdate {
AppUpdate({
required this.changelog,
required this.build,
required this.url,
});
final AppUpdatePlatformSpecific<String> changelog;
final Build build;
final AppUpdatePlatformSpecific<String> url;
factory AppUpdate.fromRawJson(String str) =>
AppUpdate.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
factory AppUpdate.fromJson(Map<String, dynamic> json) => AppUpdate(
changelog: AppUpdatePlatformSpecific.fromJson(json["changelog"]),
build: Build.fromJson(json["build"]),
url: AppUpdatePlatformSpecific.fromJson(json["url"]),
);
Map<String, dynamic> toJson() => {
"changelog": changelog.toJson(),
"build": build.toJson(),
"url": url.toJson(),
};
}
class Build {
Build({
required this.min,
required this.last,
});
final AppUpdatePlatformSpecific<int> min;
final AppUpdatePlatformSpecific<int> last;
factory Build.fromRawJson(String str) => Build.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
factory Build.fromJson(Map<String, dynamic> json) => Build(
min: AppUpdatePlatformSpecific.fromJson(json["min"]),
last: AppUpdatePlatformSpecific.fromJson(json["last"]),
);
Map<String, dynamic> toJson() => {
"min": min.toJson(),
"last": last.toJson(),
};
}
class AppUpdatePlatformSpecific<T> {
AppUpdatePlatformSpecific({
required this.mac,
required this.ios,
required this.android,
});
final T mac;
final T ios;
final T android;
factory AppUpdatePlatformSpecific.fromRawJson(String str) =>
AppUpdatePlatformSpecific.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
factory AppUpdatePlatformSpecific.fromJson(Map<String, dynamic> json) =>
AppUpdatePlatformSpecific(
mac: json["mac"],
ios: json["ios"],
android: json["android"],
);
Map<String, dynamic> toJson() => {
"mac": mac,
"ios": ios,
"android": android,
};
T? get current {
switch (platform) {
case PlatformType.macos:
return mac;
case PlatformType.ios:
return ios;
case PlatformType.android:
return android;
default:
return null;
}
}
}