import 'package:immich_mobile/constants/errors.dart'; import 'package:immich_mobile/mixins/error_logger.mixin.dart'; import 'package:immich_mobile/modules/activities/models/activity.model.dart'; import 'package:immich_mobile/shared/services/api.service.dart'; import 'package:logging/logging.dart'; import 'package:openapi/api.dart'; class ActivityService with ErrorLoggerMixin { final ApiService _apiService; @override final Logger logger = Logger("ActivityService"); ActivityService(this._apiService); Future> getAllActivities( String albumId, { String? assetId, }) async { return logError( () async { final list = await _apiService.activityApi .getActivities(albumId, assetId: assetId); return list != null ? list.map(Activity.fromDto).toList() : []; }, defaultValue: [], ); } Future getStatistics(String albumId, {String? assetId}) async { return logError( () async { final dto = await _apiService.activityApi .getActivityStatistics(albumId, assetId: assetId); return dto?.comments ?? 0; }, defaultValue: 0, ); } Future removeActivity(String id) async { return logError( () async { await _apiService.activityApi.deleteActivity(id); return true; }, defaultValue: false, ); } AsyncFuture addActivity( String albumId, ActivityType type, { String? assetId, String? comment, }) async { return guardError(() async { final dto = await _apiService.activityApi.createActivity( ActivityCreateDto( albumId: albumId, type: type == ActivityType.comment ? ReactionType.comment : ReactionType.like, assetId: assetId, comment: comment, ), ); if (dto != null) { return Activity.fromDto(dto); } throw NoResponseDtoError(); }); } }