import 'package:immich_mobile/interfaces/activity_api.interface.dart'; import 'package:immich_mobile/mixins/error_logger.mixin.dart'; import 'package:immich_mobile/models/activities/activity.model.dart'; import 'package:logging/logging.dart'; class ActivityService with ErrorLoggerMixin { final IActivityApiRepository _activityApiRepository; @override final Logger logger = Logger("ActivityService"); ActivityService(this._activityApiRepository); Future> getAllActivities( String albumId, { String? assetId, }) async { return logError( () => _activityApiRepository.getAll(albumId, assetId: assetId), defaultValue: [], errorMessage: "Failed to get all activities for album $albumId", ); } Future getStatistics(String albumId, {String? assetId}) async { return logError( () => _activityApiRepository.getStats(albumId, assetId: assetId), defaultValue: const ActivityStats(comments: 0), errorMessage: "Failed to statistics for album $albumId", ); } Future removeActivity(String id) async { return logError( () async { await _activityApiRepository.delete(id); return true; }, defaultValue: false, errorMessage: "Failed to delete activity", ); } AsyncFuture addActivity( String albumId, ActivityType type, { String? assetId, String? comment, }) async { return guardError( () => _activityApiRepository.create( albumId, type, assetId: assetId, comment: comment, ), errorMessage: "Failed to create $type for album $albumId", ); } }