mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-11-04 07:13:28 +01:00 
			
		
		
		
	Bugfix: Infinite load on corrupt App JSON (#378)
This commit is contained in:
		@@ -21,7 +21,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart';
 | 
				
			|||||||
// ignore: implementation_imports
 | 
					// ignore: implementation_imports
 | 
				
			||||||
import 'package:easy_localization/src/localization.dart';
 | 
					import 'package:easy_localization/src/localization.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const String currentVersion = '0.11.12';
 | 
					const String currentVersion = '0.11.13';
 | 
				
			||||||
const String currentReleaseTag =
 | 
					const String currentReleaseTag =
 | 
				
			||||||
    'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
 | 
					    'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -571,7 +571,21 @@ class AppsProvider with ChangeNotifier {
 | 
				
			|||||||
    List<App> newApps = (await getAppsDir())
 | 
					    List<App> newApps = (await getAppsDir())
 | 
				
			||||||
        .listSync()
 | 
					        .listSync()
 | 
				
			||||||
        .where((item) => item.path.toLowerCase().endsWith('.json'))
 | 
					        .where((item) => item.path.toLowerCase().endsWith('.json'))
 | 
				
			||||||
        .map((e) => App.fromJson(jsonDecode(File(e.path).readAsStringSync())))
 | 
					        .map((e) {
 | 
				
			||||||
 | 
					          try {
 | 
				
			||||||
 | 
					            return App.fromJson(jsonDecode(File(e.path).readAsStringSync()));
 | 
				
			||||||
 | 
					          } catch (err) {
 | 
				
			||||||
 | 
					            if (err is FormatException) {
 | 
				
			||||||
 | 
					              logs.add('Corrupt JSON when loading App (will be ignored): $e');
 | 
				
			||||||
 | 
					              e.renameSync('${e.path}.corrupt');
 | 
				
			||||||
 | 
					              return App(
 | 
				
			||||||
 | 
					                  '', '', '', '', '', '', [], 0, {}, DateTime.now(), false);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					              rethrow;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        .where((element) => element.id.isNotEmpty)
 | 
				
			||||||
        .toList();
 | 
					        .toList();
 | 
				
			||||||
    var idsToDelete = apps.values
 | 
					    var idsToDelete = apps.values
 | 
				
			||||||
        .map((e) => e.app.id)
 | 
					        .map((e) => e.app.id)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 | 
				
			|||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
 | 
					# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
 | 
				
			||||||
# In Windows, build-name is used as the major, minor, and patch parts
 | 
					# In Windows, build-name is used as the major, minor, and patch parts
 | 
				
			||||||
# of the product and file versions while build-number is used as the build suffix.
 | 
					# of the product and file versions while build-number is used as the build suffix.
 | 
				
			||||||
version: 0.11.12+133 # When changing this, update the tag in main() accordingly
 | 
					version: 0.11.13+134 # When changing this, update the tag in main() accordingly
 | 
				
			||||||
 | 
					
 | 
				
			||||||
environment:
 | 
					environment:
 | 
				
			||||||
  sdk: '>=2.18.2 <3.0.0'
 | 
					  sdk: '>=2.18.2 <3.0.0'
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user