mirror of
https://github.com/immich-app/immich.git
synced 2025-12-17 09:13:17 +03:00
re-sync updated eTags
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.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/asset_metadata.model.dart';
|
||||||
import 'package:immich_mobile/domain/models/asset/base_asset.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/entities/local_asset.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/local_album.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});
|
typedef _CloudIdMapping = ({String remoteAssetId, LocalAsset localAsset});
|
||||||
|
|
||||||
Future<List<_CloudIdMapping>> _fetchCloudIdMappings(Drift drift, String userId) async {
|
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 =
|
final query =
|
||||||
drift.remoteAssetEntity.select().join([
|
drift.remoteAssetEntity.select().join([
|
||||||
leftOuterJoin(
|
leftOuterJoin(
|
||||||
@@ -71,7 +87,7 @@ Future<List<_CloudIdMapping>> _fetchCloudIdMappings(Drift drift, String userId)
|
|||||||
drift.localAssetEntity.id.isNotNull() &
|
drift.localAssetEntity.id.isNotNull() &
|
||||||
drift.localAssetEntity.iCloudId.isNotNull() &
|
drift.localAssetEntity.iCloudId.isNotNull() &
|
||||||
drift.remoteAssetEntity.ownerId.equals(userId) &
|
drift.remoteAssetEntity.ownerId.equals(userId) &
|
||||||
drift.remoteAssetCloudIdEntity.cloudId.isNull(),
|
(drift.remoteAssetCloudIdEntity.cloudId.isNull() | drift.remoteAssetCloudIdEntity.eTag.isNotExp(eTag)),
|
||||||
);
|
);
|
||||||
return query.map((row) {
|
return query.map((row) {
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user