[WIKI-419] chore: new asset duplicate endpoint added (#7172)

* chore: new asset duplicate endpoint added

* chore: change the type in url

* chore: added rate limiting for image duplication endpoint

* chore: added rate limiting per asset id

* chore: added throttle class

* chore: added validations for entity

* chore: added extra validations

* chore: removed the comment

* chore: reverted the frontend code

* chore: added the response key

* feat: handle image duplication for web

* feat: custom image duplication update

* fix: remove paste logic for image

* fix : remove entity validation

* refactor: remove entity id for duplication

* feat: handle duplication in utils

* feat: add asset duplication registry

* chore: update the set attribute method

* fix: add ref for api check

* chore :remove logs

* chore : add entity types types

* refactor: rename duplication success status value

* chore: update attribute to enums

* chore: update variable name

* chore: set uploading state

* chore : update enum name

* chore : update replace command

* chore: fix retry UI

* chore: remove default logic

* refactor: optimize imports in custom image extension files and improve error handling in image duplication

* fix:type error

* Update packages/editor/src/core/extensions/custom-image/components/node-view.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: enhance asset duplication handler to ignore HTTP sources

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>
Co-authored-by: VipinDevelops <vipinchaudhary1809@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
Aaryan Khandelwal 2025-11-20 15:05:01 +05:30 committed by GitHub
parent d462546055
commit 83679806fd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
33 changed files with 581 additions and 55 deletions

View file

@ -3,7 +3,7 @@ import { action, computed, makeObservable, observable, runInAction } from "mobx"
import { computedFn } from "mobx-utils";
import { v4 as uuidv4 } from "uuid";
// plane types
import type { TFileEntityInfo, TFileSignedURLResponse } from "@plane/types";
import type { EFileAssetType, TFileEntityInfo, TFileSignedURLResponse } from "@plane/types";
// services
import { FileService } from "@/services/file.service";
import type { TAttachmentUploadStatus } from "../issue/issue-details/attachment.store";
@ -27,6 +27,19 @@ export interface IEditorAssetStore {
projectId?: string;
workspaceSlug: string;
}) => Promise<TFileSignedURLResponse>;
duplicateEditorAsset: ({
assetId,
entityId,
entityType,
projectId,
workspaceSlug,
}: {
assetId: string;
entityId?: string;
entityType: EFileAssetType;
projectId?: string;
workspaceSlug: string;
}) => Promise<{ asset_id: string }>;
}
export class EditorAssetStore implements IEditorAssetStore {
@ -117,4 +130,13 @@ export class EditorAssetStore implements IEditorAssetStore {
});
}
};
duplicateEditorAsset: IEditorAssetStore["duplicateEditorAsset"] = async (args) => {
const { assetId, entityId, entityType, projectId, workspaceSlug } = args;
const { asset_id } = await this.fileService.duplicateAsset(workspaceSlug, assetId, {
entity_id: entityId,
entity_type: entityType,
project_id: projectId,
});
return { asset_id };
};
}