mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
feat: sharing permissions
This commit is contained in:
@@ -555,6 +555,14 @@ export type MapMarkerResponseDto = {
|
||||
/** State/Province name */
|
||||
state: string | null;
|
||||
};
|
||||
export type SharingOptionsResponseDto = {
|
||||
inTimeline: boolean;
|
||||
permissions: SharingPermission[];
|
||||
};
|
||||
export type UpdateSharingOptionsDto = {
|
||||
inTimeline: boolean;
|
||||
permissions: SharingPermission[];
|
||||
};
|
||||
export type UpdateAlbumUserDto = {
|
||||
role: AlbumUserRole;
|
||||
};
|
||||
@@ -792,6 +800,8 @@ export type PersonResponseDto = {
|
||||
birthDate: string | null;
|
||||
/** Person color (hex) */
|
||||
color?: string;
|
||||
/** Face cluster ID */
|
||||
faceClusterId: string | null;
|
||||
/** Person ID */
|
||||
id: string;
|
||||
/** Is favorite */
|
||||
@@ -875,6 +885,7 @@ export type AssetResponseDto = {
|
||||
/** Owner user ID */
|
||||
ownerId: string;
|
||||
people?: PersonResponseDto[];
|
||||
permissions: SharingPermission[];
|
||||
/** Is resized */
|
||||
resized?: boolean;
|
||||
stack?: (AssetStackResponseDto) | null;
|
||||
@@ -1460,8 +1471,8 @@ export type PersonUpdateDto = {
|
||||
/** Person name */
|
||||
name?: string;
|
||||
};
|
||||
export type MergePersonDto = {
|
||||
/** Person IDs to merge */
|
||||
export type MergeFaceClusterDto = {
|
||||
/** Face cluster IDs to merge */
|
||||
ids: string[];
|
||||
};
|
||||
export type AssetFaceUpdateItem = {
|
||||
@@ -2973,6 +2984,8 @@ export type SyncAssetFaceV2 = {
|
||||
boundingBoxY2: number;
|
||||
/** Face deleted at */
|
||||
deletedAt: string | null;
|
||||
/** Person ID */
|
||||
faceClusterId: string | null;
|
||||
/** Asset face ID */
|
||||
id: string;
|
||||
/** Image height */
|
||||
@@ -2981,8 +2994,6 @@ export type SyncAssetFaceV2 = {
|
||||
imageWidth: number;
|
||||
/** Is the face visible in the asset */
|
||||
isVisible: boolean;
|
||||
/** Person ID */
|
||||
personId: string | null;
|
||||
/** Source type */
|
||||
sourceType: string;
|
||||
};
|
||||
@@ -3778,6 +3789,32 @@ export function getAlbumMapMarkers({ id, key, slug }: {
|
||||
...opts
|
||||
}));
|
||||
}
|
||||
/**
|
||||
* Get own sharing permissions
|
||||
*/
|
||||
export function getOwnAlbumUser({ id }: {
|
||||
id: string;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchJson<{
|
||||
status: 200;
|
||||
data: SharingOptionsResponseDto;
|
||||
}>(`/albums/${encodeURIComponent(id)}/user/self`, {
|
||||
...opts
|
||||
}));
|
||||
}
|
||||
/**
|
||||
* Update own sharing permissions
|
||||
*/
|
||||
export function updateOwnAlbumUser({ id, updateSharingOptionsDto }: {
|
||||
id: string;
|
||||
updateSharingOptionsDto: UpdateSharingOptionsDto;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchText(`/albums/${encodeURIComponent(id)}/user/self`, oazapfts.json({
|
||||
...opts,
|
||||
method: "PUT",
|
||||
body: updateSharingOptionsDto
|
||||
})));
|
||||
}
|
||||
/**
|
||||
* Remove user from album
|
||||
*/
|
||||
@@ -5182,9 +5219,9 @@ export function updatePerson({ id, personUpdateDto }: {
|
||||
/**
|
||||
* Merge people
|
||||
*/
|
||||
export function mergePerson({ id, mergePersonDto }: {
|
||||
export function mergePerson({ id, mergeFaceClusterDto }: {
|
||||
id: string;
|
||||
mergePersonDto: MergePersonDto;
|
||||
mergeFaceClusterDto: MergeFaceClusterDto;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchJson<{
|
||||
status: 200;
|
||||
@@ -5192,7 +5229,7 @@ export function mergePerson({ id, mergePersonDto }: {
|
||||
}>(`/people/${encodeURIComponent(id)}/merge`, oazapfts.json({
|
||||
...opts,
|
||||
method: "POST",
|
||||
body: mergePersonDto
|
||||
body: mergeFaceClusterDto
|
||||
})));
|
||||
}
|
||||
/**
|
||||
@@ -6769,6 +6806,19 @@ export enum BulkIdErrorReason {
|
||||
Unknown = "unknown",
|
||||
Validation = "validation"
|
||||
}
|
||||
export enum SharingPermission {
|
||||
All = "all",
|
||||
AssetRead = "asset.read",
|
||||
AssetUpdate = "asset.update",
|
||||
AssetEdit = "asset.edit",
|
||||
AssetDelete = "asset.delete",
|
||||
AssetShare = "asset.share",
|
||||
ExifRead = "exif.read",
|
||||
PersonRead = "person.read",
|
||||
PersonUpdate = "person.update",
|
||||
PersonMerge = "person.merge",
|
||||
PersonDelete = "person.delete"
|
||||
}
|
||||
export enum Permission {
|
||||
All = "all",
|
||||
ActivityCreate = "activity.create",
|
||||
@@ -6976,7 +7026,8 @@ export enum ManualJobName {
|
||||
UserCleanup = "user-cleanup",
|
||||
MemoryCleanup = "memory-cleanup",
|
||||
MemoryCreate = "memory-create",
|
||||
BackupDatabase = "backup-database"
|
||||
BackupDatabase = "backup-database",
|
||||
PersonGroupMerge = "person-group-merge"
|
||||
}
|
||||
export enum QueueName {
|
||||
ThumbnailGeneration = "thumbnailGeneration",
|
||||
@@ -7063,6 +7114,7 @@ export enum JobName {
|
||||
DatabaseBackup = "DatabaseBackup",
|
||||
FacialRecognitionQueueAll = "FacialRecognitionQueueAll",
|
||||
FacialRecognition = "FacialRecognition",
|
||||
FacialRecognitionMerge = "FacialRecognitionMerge",
|
||||
FileDelete = "FileDelete",
|
||||
FileMigrationQueueAll = "FileMigrationQueueAll",
|
||||
LibraryDeleteCheck = "LibraryDeleteCheck",
|
||||
|
||||
Reference in New Issue
Block a user