|
|
|
|
@ -15,10 +15,12 @@ import 'package:immich_mobile/extensions/platform_extensions.dart';
|
|
|
|
|
import 'package:immich_mobile/infrastructure/repositories/backup.repository.dart';
|
|
|
|
|
import 'package:immich_mobile/infrastructure/repositories/local_asset.repository.dart';
|
|
|
|
|
import 'package:immich_mobile/infrastructure/repositories/storage.repository.dart';
|
|
|
|
|
import 'package:immich_mobile/models/server_info/server_info.model.dart';
|
|
|
|
|
import 'package:immich_mobile/providers/app_settings.provider.dart';
|
|
|
|
|
import 'package:immich_mobile/providers/backup/drift_backup.provider.dart';
|
|
|
|
|
import 'package:immich_mobile/providers/infrastructure/asset.provider.dart';
|
|
|
|
|
import 'package:immich_mobile/providers/infrastructure/storage.provider.dart';
|
|
|
|
|
import 'package:immich_mobile/providers/server_info.provider.dart';
|
|
|
|
|
import 'package:immich_mobile/repositories/asset_media.repository.dart';
|
|
|
|
|
import 'package:immich_mobile/repositories/upload.repository.dart';
|
|
|
|
|
import 'package:immich_mobile/services/api.service.dart';
|
|
|
|
|
@ -35,6 +37,7 @@ final uploadServiceProvider = Provider((ref) {
|
|
|
|
|
ref.watch(localAssetRepository),
|
|
|
|
|
ref.watch(appSettingsServiceProvider),
|
|
|
|
|
ref.watch(assetMediaRepositoryProvider),
|
|
|
|
|
ref.watch(serverInfoProvider),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
ref.onDispose(service.dispose);
|
|
|
|
|
@ -49,6 +52,7 @@ class UploadService {
|
|
|
|
|
this._localAssetRepository,
|
|
|
|
|
this._appSettingsService,
|
|
|
|
|
this._assetMediaRepository,
|
|
|
|
|
this._serverInfo,
|
|
|
|
|
) {
|
|
|
|
|
_uploadRepository.onUploadStatus = _onUploadCallback;
|
|
|
|
|
_uploadRepository.onTaskProgress = _onTaskProgressCallback;
|
|
|
|
|
@ -60,6 +64,7 @@ class UploadService {
|
|
|
|
|
final DriftLocalAssetRepository _localAssetRepository;
|
|
|
|
|
final AppSettingsService _appSettingsService;
|
|
|
|
|
final AssetMediaRepository _assetMediaRepository;
|
|
|
|
|
final ServerInfo _serverInfo;
|
|
|
|
|
final Logger _logger = Logger('UploadService');
|
|
|
|
|
|
|
|
|
|
final StreamController<TaskStatusUpdate> _taskStatusController = StreamController<TaskStatusUpdate>.broadcast();
|
|
|
|
|
@ -431,13 +436,18 @@ class UploadService {
|
|
|
|
|
'fileModifiedAt': modifiedAt.toUtc().toIso8601String(),
|
|
|
|
|
'isFavorite': isFavorite?.toString() ?? 'false',
|
|
|
|
|
'duration': '0',
|
|
|
|
|
'metadata': jsonEncode([
|
|
|
|
|
RemoteAssetMetadataItem(
|
|
|
|
|
key: RemoteAssetMetadataKey.mobileApp,
|
|
|
|
|
value: RemoteAssetMobileAppMetadata(cloudId: cloudId, eTag: eTag),
|
|
|
|
|
),
|
|
|
|
|
]),
|
|
|
|
|
if (fields != null) ...fields,
|
|
|
|
|
// Include cloudId and eTag in metadata if available and server version supports it
|
|
|
|
|
if (CurrentPlatform.isIOS &&
|
|
|
|
|
cloudId != null &&
|
|
|
|
|
eTag != null &&
|
|
|
|
|
_serverInfo.serverVersion.isAtLeast(major: 2, minor: 4))
|
|
|
|
|
'metadata': jsonEncode([
|
|
|
|
|
RemoteAssetMetadataItem(
|
|
|
|
|
key: RemoteAssetMetadataKey.mobileApp,
|
|
|
|
|
value: RemoteAssetMobileAppMetadata(cloudId: cloudId, eTag: eTag),
|
|
|
|
|
),
|
|
|
|
|
]),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return UploadTask(
|
|
|
|
|
|