diff --git a/mobile/lib/domain/models/asset/asset_metadata.model.dart b/mobile/lib/domain/models/asset/asset_metadata.model.dart index fc29da3db0..ad326da249 100644 --- a/mobile/lib/domain/models/asset/asset_metadata.model.dart +++ b/mobile/lib/domain/models/asset/asset_metadata.model.dart @@ -1,3 +1,7 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'asset_metadata.model.freezed.dart'; + enum RemoteAssetMetadataKey { mobileApp("mobile-app"); @@ -23,40 +27,24 @@ class RemoteAssetMetadataItem { } } -class RemoteAssetMobileAppMetadata extends RemoteAssetMetadataValue { - final String? cloudId; - final String? createdAt; - final String? adjustmentTime; - final String? latitude; - final String? longitude; +@freezed +abstract class RemoteAssetMobileAppMetadata extends RemoteAssetMetadataValue with _$RemoteAssetMobileAppMetadata { + const factory RemoteAssetMobileAppMetadata({ + String? cloudId, + String? createdAt, + String? adjustmentTime, + String? latitude, + String? longitude, + }) = _RemoteAssetMobileAppMetadata; - const RemoteAssetMobileAppMetadata({ - this.cloudId, - this.createdAt, - this.adjustmentTime, - this.latitude, - this.longitude, - }); + const RemoteAssetMobileAppMetadata._(); @override - Map toJson() { - final map = {}; - if (cloudId != null) { - map["iCloudId"] = cloudId; - } - if (createdAt != null) { - map["createdAt"] = createdAt; - } - if (adjustmentTime != null) { - map["adjustmentTime"] = adjustmentTime; - } - if (latitude != null) { - map["latitude"] = latitude; - } - if (longitude != null) { - map["longitude"] = longitude; - } - - return map; - } + Map toJson() => { + 'iCloudId': ?cloudId, + 'createdAt': ?createdAt, + 'adjustmentTime': ?adjustmentTime, + 'latitude': ?latitude, + 'longitude': ?longitude, + }; } diff --git a/mobile/lib/domain/utils/migrate_cloud_ids.dart b/mobile/lib/domain/utils/migrate_cloud_ids.dart index af7e4666be..074fd95e74 100644 --- a/mobile/lib/domain/utils/migrate_cloud_ids.dart +++ b/mobile/lib/domain/utils/migrate_cloud_ids.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'dart:math' as math; +import 'package:collection/collection.dart'; import 'package:drift/drift.dart'; import 'package:flutter/foundation.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -115,12 +115,12 @@ Future _processCloudIdMappingsInBatches( if (items.isNotEmpty) { if (canBulkUpdate) { - for (int i = 0; i < items.length; i += _kUploadBatchSize) { + for (final batch in items.slices(_kUploadBatchSize)) { if (cancellation.isCompleted) { break; } - final end = math.min(i + _kUploadBatchSize, items.length); - await _bulkUpdate(assetsApi, items.sublist(i, end), cancellation.future); + + await _bulkUpdate(assetsApi, batch, cancellation.future); } } else { await _sequentialUpdate(assetsApi, items, cancellation);