diff --git a/mobile/lib/infrastructure/repositories/sync_stream.repository.dart b/mobile/lib/infrastructure/repositories/sync_stream.repository.dart index 804f66c5b..7aa8fc6ef 100644 --- a/mobile/lib/infrastructure/repositories/sync_stream.repository.dart +++ b/mobile/lib/infrastructure/repositories/sync_stream.repository.dart @@ -7,6 +7,7 @@ import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.drift. import 'package:immich_mobile/infrastructure/entities/user.entity.drift.dart'; import 'package:immich_mobile/infrastructure/repositories/db.repository.dart'; import 'package:logging/logging.dart'; +import 'package:openapi/api.dart' as api show AssetVisibility; import 'package:openapi/api.dart' hide AssetVisibility; class DriftSyncStreamRepository extends DriftDatabaseRepository @@ -231,22 +232,22 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository }); } -extension on SyncAssetV1TypeEnum { +extension on AssetTypeEnum { AssetType toAssetType() => switch (this) { - SyncAssetV1TypeEnum.IMAGE => AssetType.image, - SyncAssetV1TypeEnum.VIDEO => AssetType.video, - SyncAssetV1TypeEnum.AUDIO => AssetType.audio, - SyncAssetV1TypeEnum.OTHER => AssetType.other, - _ => throw Exception('Unknown SyncAssetV1TypeEnum value: $this'), + AssetTypeEnum.IMAGE => AssetType.image, + AssetTypeEnum.VIDEO => AssetType.video, + AssetTypeEnum.AUDIO => AssetType.audio, + AssetTypeEnum.OTHER => AssetType.other, + _ => throw Exception('Unknown AssetType value: $this'), }; } -extension on SyncAssetV1VisibilityEnum { +extension on api.AssetVisibility { AssetVisibility toAssetVisibility() => switch (this) { - SyncAssetV1VisibilityEnum.timeline => AssetVisibility.timeline, - SyncAssetV1VisibilityEnum.hidden => AssetVisibility.hidden, - SyncAssetV1VisibilityEnum.archive => AssetVisibility.archive, - SyncAssetV1VisibilityEnum.locked => AssetVisibility.locked, - _ => throw Exception('Unknown SyncAssetV1VisibilityEnum value: $this'), + api.AssetVisibility.timeline => AssetVisibility.timeline, + api.AssetVisibility.hidden => AssetVisibility.hidden, + api.AssetVisibility.archive => AssetVisibility.archive, + api.AssetVisibility.locked => AssetVisibility.locked, + _ => throw Exception('Unknown AssetVisibility value: $this'), }; } diff --git a/mobile/openapi/lib/model/sync_album_user_v1.dart b/mobile/openapi/lib/model/sync_album_user_v1.dart index c2b8ed7f4..0b4968b34 100644 Binary files a/mobile/openapi/lib/model/sync_album_user_v1.dart and b/mobile/openapi/lib/model/sync_album_user_v1.dart differ diff --git a/mobile/openapi/lib/model/sync_asset_v1.dart b/mobile/openapi/lib/model/sync_asset_v1.dart index a3aa7365a..27042325e 100644 Binary files a/mobile/openapi/lib/model/sync_asset_v1.dart and b/mobile/openapi/lib/model/sync_asset_v1.dart differ diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index de01d7e06..04cdf4f70 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -12988,11 +12988,11 @@ "type": "string" }, "role": { - "enum": [ - "editor", - "viewer" - ], - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/AlbumUserRole" + } + ] }, "userId": { "type": "string" @@ -13241,22 +13241,18 @@ "type": "string" }, "type": { - "enum": [ - "IMAGE", - "VIDEO", - "AUDIO", - "OTHER" - ], - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypeEnum" + } + ] }, "visibility": { - "enum": [ - "archive", - "timeline", - "hidden", - "locked" - ], - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/AssetVisibility" + } + ] } }, "required": [ diff --git a/server/src/dtos/sync.dto.ts b/server/src/dtos/sync.dto.ts index 3e50762c8..3088392c6 100644 --- a/server/src/dtos/sync.dto.ts +++ b/server/src/dtos/sync.dto.ts @@ -65,9 +65,11 @@ export class SyncAssetV1 { fileCreatedAt!: Date | null; fileModifiedAt!: Date | null; localDateTime!: Date | null; + @ApiProperty({ enumName: 'AssetTypeEnum', enum: AssetType }) type!: AssetType; deletedAt!: Date | null; isFavorite!: boolean; + @ApiProperty({ enumName: 'AssetVisibility', enum: AssetVisibility }) visibility!: AssetVisibility; } @@ -125,6 +127,7 @@ export class SyncAlbumUserDeleteV1 { export class SyncAlbumUserV1 { albumId!: string; userId!: string; + @ApiProperty({ enumName: 'AlbumUserRole', enum: AlbumUserRole }) role!: AlbumUserRole; }