NullSafety: Migrate location updation service

This commit is contained in:
Neeraj Gupta 2022-12-30 14:38:23 +05:30
parent e9572dd908
commit 87e81c30c6
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1

View file

@ -1,5 +1,3 @@
// @dart=2.9
import 'dart:async';
import 'dart:core';
import 'dart:io';
@ -20,15 +18,15 @@ import 'package:shared_preferences/shared_preferences.dart';
// LocalFileUpdateService tracks all the potential local file IDs which have
// changed/modified on the device and needed to be uploaded again.
class LocalFileUpdateService {
FileUpdationDB _fileUpdationDB;
SharedPreferences _prefs;
Logger _logger;
late FileUpdationDB _fileUpdationDB;
late SharedPreferences _prefs;
late Logger _logger;
static const isLocationMigrationComplete = "fm_isLocationMigrationComplete";
static const isLocalImportDone = "fm_IsLocalImportDone";
static const isBadCreationTimeImportDone = 'fm_badCreationTime';
static const isBadCreationTimeMigrationComplete =
'fm_badCreationTimeCompleted';
Completer<void> _existingMigration;
Completer<void>? _existingMigration;
LocalFileUpdateService._privateConstructor() {
_logger = Logger((LocalFileUpdateService).toString());
@ -43,13 +41,13 @@ class LocalFileUpdateService {
LocalFileUpdateService._privateConstructor();
bool isBadCreationMigrationCompleted() {
return _prefs.get(isBadCreationTimeMigrationComplete) ?? false;
return (_prefs.getBool(isBadCreationTimeMigrationComplete) ?? false);
}
Future<void> markUpdatedFilesForReUpload() async {
if (_existingMigration != null) {
_logger.info("migration is already in progress, skipping");
return _existingMigration.future;
return _existingMigration!.future;
}
_existingMigration = Completer<void>();
try {
@ -107,11 +105,10 @@ class LocalFileUpdateService {
MediaUploadData uploadData;
try {
uploadData = await getUploadData(file);
if (uploadData != null &&
uploadData.hashData != null &&
if (uploadData.hashData != null &&
file.hash != null &&
(file.hash == uploadData.hashData.fileHash ||
file.hash == uploadData.hashData.zipHash)) {
(file.hash == uploadData.hashData!.fileHash ||
file.hash == uploadData.hashData!.zipHash)) {
_logger.info("Skip file update as hash matched ${file.tag}");
} else {
_logger.info(
@ -119,15 +116,15 @@ class LocalFileUpdateService {
);
await clearCache(file);
await FilesDB.instance.updateUploadedFile(
file.localID,
file.localID!,
file.title,
file.location,
file.creationTime,
file.modificationTime,
file.creationTime!,
file.modificationTime!,
null,
);
}
processedIDs.add(file.localID);
processedIDs.add(file.localID!);
} catch (e) {
_logger.severe("Failed to get file uploadData", e);
} finally {}
@ -144,10 +141,8 @@ class LocalFileUpdateService {
// delete the file from app's internal cache if it was copied to app
// for upload. Shared Media should only be cleared when the upload
// succeeds.
if (Platform.isIOS &&
mediaUploadData != null &&
mediaUploadData.sourceFile != null) {
await mediaUploadData.sourceFile.delete();
if (Platform.isIOS && mediaUploadData.sourceFile != null) {
await mediaUploadData.sourceFile?.delete();
}
return mediaUploadData;
}
@ -165,8 +160,13 @@ class LocalFileUpdateService {
FileUpdationDB.badCreationTime,
);
if (generatedIDs.isNotEmpty) {
final List<int> genIdIntList =
generatedIDs.map((e) => int.tryParse(e)).toList();
final List<int> genIdIntList = [];
for (String genIdString in generatedIDs) {
final int? genIdInt = int.tryParse(genIdString);
if (genIdInt != null) {
genIdIntList.add(genIdInt);
}
}
final filesWithBadTime =
(await FilesDB.instance.getFilesFromGeneratedIDs(genIdIntList))
@ -196,7 +196,7 @@ class LocalFileUpdateService {
}
_logger.info('_importFilesWithBadCreationTime');
final EnteWatch watch = EnteWatch("_importFilesWithBadCreationTime");
final int ownerID = Configuration.instance.getUserID();
final int ownerID = Configuration.instance.getUserID()!;
final filesGeneratedID = await FilesDB.instance
.getGeneratedIDForFilesOlderThan(jan011981Time, ownerID);
await _fileUpdationDB.insertMultiple(