Added migration code for additionalData (NOTHING TESTED)

This commit is contained in:
Imran Remtulla
2022-12-19 20:14:54 -05:00
parent 0c2654a226
commit 9a129d41df

View File

@@ -69,30 +69,51 @@ class App {
return 'ID: $id URL: $url INSTALLED: $installedVersion LATEST: $latestVersion APK: $apkUrls PREFERREDAPK: $preferredApkIndex ADDITIONALDATA: ${additionalData.toString()} LASTCHECK: ${lastUpdateCheck.toString()} PINNED $pinned'; return 'ID: $id URL: $url INSTALLED: $installedVersion LATEST: $latestVersion APK: $apkUrls PREFERREDAPK: $preferredApkIndex ADDITIONALDATA: ${additionalData.toString()} LASTCHECK: ${lastUpdateCheck.toString()} PINNED $pinned';
} }
factory App.fromJson(Map<String, dynamic> json) => App( factory App.fromJson(Map<String, dynamic> json) {
json['id'] as String, var formItems = SourceProvider()
json['url'] as String, .getSource(json['url'])
json['author'] as String, .additionalSourceAppSpecificFormItems
json['name'] as String, .reduce((value, element) => [...value, ...element]);
json['installedVersion'] == null Map<String, String> additionalData =
? null getDefaultValuesFromFormItems([formItems]);
: json['installedVersion'] as String, if (json['additionalData'] != null) {
json['latestVersion'] as String, try {
json['apkUrls'] == null additionalData =
? [] Map<String, String>.from(jsonDecode(json['additionalData']));
: List<String>.from(jsonDecode(json['apkUrls'])), } catch (e) {
json['preferredApkIndex'] == null ? 0 : json['preferredApkIndex'] as int, // Migrate old-style additionalData List to new-style Map
json['additionalData'] == null List<String> temp =
? getDefaultValuesFromFormItems(SourceProvider() List<String>.from(jsonDecode(json['additionalData']));
.getSource(json['url']) temp.asMap().forEach((i, value) {
.additionalSourceAppSpecificFormItems) if (i < formItems.length) {
: Map<String, String>.from(jsonDecode(json['additionalData'])), additionalData[formItems[i].key] = value;
json['lastUpdateCheck'] == null }
? null });
: DateTime.fromMicrosecondsSinceEpoch(json['lastUpdateCheck']), }
json['pinned'] ?? false, }
json['trackOnly'] ?? false, return App(
noVersionDetection: json['noVersionDetection'] ?? false); json['id'] as String,
json['url'] as String,
json['author'] as String,
json['name'] as String,
json['installedVersion'] == null
? null
: json['installedVersion'] as String,
json['latestVersion'] as String,
json['apkUrls'] == null
? []
: List<String>.from(jsonDecode(json['apkUrls'])),
json['preferredApkIndex'] == null
? 0
: json['preferredApkIndex'] as int,
additionalData,
json['lastUpdateCheck'] == null
? null
: DateTime.fromMicrosecondsSinceEpoch(json['lastUpdateCheck']),
json['pinned'] ?? false,
json['trackOnly'] ?? false,
noVersionDetection: json['noVersionDetection'] ?? false);
}
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {
'id': id, 'id': id,