import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:immich_mobile/constants/enums.dart'; import 'package:immich_mobile/domain/models/asset/base_asset.model.dart'; import 'package:immich_mobile/infrastructure/repositories/remote_asset.repository.dart'; import 'package:immich_mobile/repositories/asset_api.repository.dart'; import 'package:immich_mobile/routing/router.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; final actionServiceProvider = Provider( (ref) => ActionService( ref.watch(assetApiRepositoryProvider), ref.watch(remoteAssetRepositoryProvider), ), ); class ActionService { final AssetApiRepository _assetApiRepository; final RemoteAssetRepository _remoteAssetRepository; const ActionService(this._assetApiRepository, this._remoteAssetRepository); Future shareLink(List remoteIds, BuildContext context) async { context.pushRoute( SharedLinkEditRoute( assetsList: remoteIds, ), ); } Future favorite(List remoteIds) async { await _assetApiRepository.updateFavorite(remoteIds, true); await _remoteAssetRepository.updateFavorite(remoteIds, true); } Future unFavorite(List remoteIds) async { await _assetApiRepository.updateFavorite(remoteIds, false); await _remoteAssetRepository.updateFavorite(remoteIds, false); } Future archive(List remoteIds) async { await _assetApiRepository.updateVisibility( remoteIds, AssetVisibilityEnum.archive, ); await _remoteAssetRepository.updateVisibility( remoteIds, AssetVisibility.archive, ); } Future unArchive(List remoteIds) async { await _assetApiRepository.updateVisibility( remoteIds, AssetVisibilityEnum.timeline, ); await _remoteAssetRepository.updateVisibility( remoteIds, AssetVisibility.timeline, ); } Future moveToLockFolder(List remoteIds) async { await _assetApiRepository.updateVisibility( remoteIds, AssetVisibilityEnum.locked, ); await _remoteAssetRepository.updateVisibility( remoteIds, AssetVisibility.locked, ); } Future removeFromLockFolder(List remoteIds) async { await _assetApiRepository.updateVisibility( remoteIds, AssetVisibilityEnum.timeline, ); await _remoteAssetRepository.updateVisibility( remoteIds, AssetVisibility.timeline, ); } }