import 'dart:async'; import 'package:image_picker/image_picker.dart'; import 'package:immich_mobile/domain/models/album/shared_album.model.dart'; import 'package:immich_mobile/repositories/asset_api.repository.dart'; import 'package:immich_mobile/repositories/drift_album_api_repository.dart'; class RemoteSharedAlbumService { final DriftAlbumApiRepository _albumApiRepository; final AssetApiRepository _assetApiRepository; const RemoteSharedAlbumService(this._albumApiRepository, this._assetApiRepository); Future getSharedAlbum(String albumId) { return _albumApiRepository.getShared(albumId); } Future uploadAssets(String albumId, List files) async { // Start all uploads concurrently final uploadFutures = files.map((file) => _assetApiRepository.uploadAsset(file)).toList(); // Wait for all uploads to complete final assetIds = await Future.wait(uploadFutures); // Filter out null assetIds final completedUploads = assetIds.whereType().toList(); if (completedUploads.isNotEmpty) { await _albumApiRepository.addAssets(albumId, completedUploads); } return completedUploads.length; } }