mirror of
https://github.com/immich-app/immich.git
synced 2025-12-17 17:23:20 +03:00
re-sync updated eTags
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/constants/constants.dart';
|
||||
import 'package:immich_mobile/domain/models/asset/asset_metadata.model.dart';
|
||||
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
||||
import 'package:immich_mobile/extensions/drift_extensions.dart';
|
||||
import 'package:immich_mobile/infrastructure/entities/local_asset.entity.dart';
|
||||
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
|
||||
import 'package:immich_mobile/infrastructure/repositories/local_album.repository.dart';
|
||||
@@ -56,6 +58,20 @@ Future<void> _populateCloudIds(Drift drift) async {
|
||||
typedef _CloudIdMapping = ({String remoteAssetId, LocalAsset localAsset});
|
||||
|
||||
Future<List<_CloudIdMapping>> _fetchCloudIdMappings(Drift drift, String userId) async {
|
||||
final createdAt = drift.localAssetEntity.createdAt.strftime('%s');
|
||||
final adjustmentTime = coalesce([drift.localAssetEntity.adjustmentTime.strftime('%s'), const Constant('0')]);
|
||||
final latitude = coalesce([
|
||||
drift.localAssetEntity.latitude,
|
||||
const Constant(0.0),
|
||||
]).truncateTo(2).cast(DriftSqlType.string);
|
||||
final longitude = coalesce([
|
||||
drift.localAssetEntity.longitude,
|
||||
const Constant(0.0),
|
||||
]).truncateTo(2).cast(DriftSqlType.string);
|
||||
|
||||
final delimiter = const Constant(kUploadETagDelimiter);
|
||||
final eTag = createdAt + delimiter + adjustmentTime + delimiter + latitude + delimiter + longitude;
|
||||
|
||||
final query =
|
||||
drift.remoteAssetEntity.select().join([
|
||||
leftOuterJoin(
|
||||
@@ -71,7 +87,7 @@ Future<List<_CloudIdMapping>> _fetchCloudIdMappings(Drift drift, String userId)
|
||||
drift.localAssetEntity.id.isNotNull() &
|
||||
drift.localAssetEntity.iCloudId.isNotNull() &
|
||||
drift.remoteAssetEntity.ownerId.equals(userId) &
|
||||
drift.remoteAssetCloudIdEntity.cloudId.isNull(),
|
||||
(drift.remoteAssetCloudIdEntity.cloudId.isNull() | drift.remoteAssetCloudIdEntity.eTag.isNotExp(eTag)),
|
||||
);
|
||||
return query.map((row) {
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user