cleanupInvalidResumeStates static method
Clean up invalid resume states for a model
spec
- The model specification to clean
Returns the number of cleaned up files
Implementation
static Future<int> cleanupInvalidResumeStates(ModelSpec spec) async {
debugPrint('ResumeChecker: Cleaning up invalid resume states for ${spec.name}');
final statuses = await checkModelResume(spec);
int cleanedCount = 0;
for (final entry in statuses.entries) {
final filename = entry.key;
final status = entry.value;
switch (status) {
case ResumeStatus.cannotResume:
case ResumeStatus.error:
// Delete partial file (FileDownloader manages its own task records)
try {
await ModelFileSystemManager.deleteModelFile(filename);
cleanedCount++;
debugPrint('ResumeChecker: Cleaned up invalid resume state for $filename');
} catch (e) {
debugPrint('ResumeChecker: Failed to cleanup $filename: $e');
}
break;
case ResumeStatus.noTask:
// File exists but no task - check if it's partial
try {
final filePath = await ModelFileSystemManager.getModelFilePath(filename);
final isValid = await ModelFileSystemManager.isFileValid(filePath);
if (!isValid) {
// Partial file without task - delete it
await ModelFileSystemManager.deleteModelFile(filename);
cleanedCount++;
debugPrint('ResumeChecker: Removed orphaned partial file: $filename');
}
} catch (e) {
debugPrint('ResumeChecker: Error checking orphaned file $filename: $e');
}
break;
default:
// Other statuses don't need cleanup
break;
}
}
debugPrint('ResumeChecker: Cleaned up $cleanedCount files for model ${spec.name}');
return cleanedCount;
}