From ba9db3a4aeaa4ae124fb4f90dd8cd586b3231d32 Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Thu, 27 Nov 2025 18:29:58 +0530 Subject: [PATCH] refactor: remove unused project cover image endpoint and update cover image handling - Removed the ProjectPublicCoverImagesEndpoint and its associated URL from the project. - Updated the cover image handling in the cover-image helper to utilize imported assets instead of static paths. - Cleaned up the ProjectFavoritesViewSet and FileService by removing the now obsolete getProjectCoverImages method. This update streamlines the cover image management and eliminates unnecessary code, enhancing overall maintainability. --- apps/api/plane/app/urls/project.py | 5 - apps/api/plane/app/views/project/base.py | 43 --------- .../assets/cover-images}/image_1.jpg | Bin .../assets/cover-images}/image_10.jpg | Bin .../assets/cover-images}/image_11.jpg | Bin .../assets/cover-images}/image_12.jpg | Bin .../assets/cover-images}/image_13.jpg | Bin .../assets/cover-images}/image_14.jpg | Bin .../assets/cover-images}/image_15.jpg | Bin .../assets/cover-images}/image_16.jpg | Bin .../assets/cover-images}/image_17.jpg | Bin .../assets/cover-images}/image_18.jpg | Bin .../assets/cover-images}/image_19.jpg | Bin .../assets/cover-images}/image_2.jpg | Bin .../assets/cover-images}/image_20.jpg | Bin .../assets/cover-images}/image_21.jpg | Bin .../assets/cover-images}/image_22.jpg | Bin .../assets/cover-images}/image_23.jpg | Bin .../assets/cover-images}/image_24.jpg | Bin .../assets/cover-images}/image_25.jpg | Bin .../assets/cover-images}/image_26.jpg | Bin .../assets/cover-images}/image_27.jpg | Bin .../assets/cover-images}/image_28.jpg | Bin .../assets/cover-images}/image_29.jpg | Bin .../assets/cover-images}/image_3.jpg | Bin .../assets/cover-images}/image_4.jpg | Bin .../assets/cover-images}/image_5.jpg | Bin .../assets/cover-images}/image_6.jpg | Bin .../assets/cover-images}/image_7.jpg | Bin .../assets/cover-images}/image_8.jpg | Bin .../assets/cover-images}/image_9.jpg | Bin apps/web/core/components/project/form.tsx | 2 +- apps/web/core/services/file.service.ts | 7 -- apps/web/helpers/cover-image.helper.ts | 91 ++++++++++++------ 34 files changed, 62 insertions(+), 86 deletions(-) rename apps/web/{public/images => app/assets/cover-images}/image_1.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_10.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_11.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_12.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_13.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_14.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_15.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_16.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_17.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_18.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_19.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_2.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_20.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_21.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_22.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_23.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_24.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_25.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_26.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_27.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_28.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_29.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_3.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_4.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_5.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_6.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_7.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_8.jpg (100%) rename apps/web/{public/images => app/assets/cover-images}/image_9.jpg (100%) diff --git a/apps/api/plane/app/urls/project.py b/apps/api/plane/app/urls/project.py index 61d30f9166..02412580b7 100644 --- a/apps/api/plane/app/urls/project.py +++ b/apps/api/plane/app/urls/project.py @@ -105,11 +105,6 @@ urlpatterns = [ ProjectFavoritesViewSet.as_view({"delete": "destroy"}), name="project-favorite", ), - path( - "project-covers/", - ProjectPublicCoverImagesEndpoint.as_view(), - name="project-covers", - ), path( "workspaces//projects//project-deploy-boards/", DeployBoardViewSet.as_view({"get": "list", "post": "create"}), diff --git a/apps/api/plane/app/views/project/base.py b/apps/api/plane/app/views/project/base.py index 84b2a5629a..78583ab2de 100644 --- a/apps/api/plane/app/views/project/base.py +++ b/apps/api/plane/app/views/project/base.py @@ -553,49 +553,6 @@ class ProjectFavoritesViewSet(BaseViewSet): return Response(status=status.HTTP_204_NO_CONTENT) -class ProjectPublicCoverImagesEndpoint(BaseAPIView): - permission_classes = [AllowAny] - - # Cache the below api for 24 hours - @cache_response(60 * 60 * 24, user=False) - def get(self, request): - files = [] - if settings.USE_MINIO: - s3 = boto3.client( - "s3", - endpoint_url=settings.AWS_S3_ENDPOINT_URL, - aws_access_key_id=settings.AWS_ACCESS_KEY_ID, - aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY, - ) - else: - s3 = boto3.client( - "s3", - aws_access_key_id=settings.AWS_ACCESS_KEY_ID, - aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY, - ) - params = { - "Bucket": settings.AWS_STORAGE_BUCKET_NAME, - "Prefix": "static/project-cover/", - } - - try: - response = s3.list_objects_v2(**params) - # Extracting file keys from the response - if "Contents" in response: - for content in response["Contents"]: - if not content["Key"].endswith( - "/" - ): # This line ensures we're only getting files, not "sub-folders" - files.append( - f"https://{settings.AWS_STORAGE_BUCKET_NAME}.s3.{settings.AWS_REGION}.amazonaws.com/{content['Key']}" - ) - - return Response(files, status=status.HTTP_200_OK) - except Exception as e: - log_exception(e) - return Response([], status=status.HTTP_200_OK) - - class DeployBoardViewSet(BaseViewSet): permission_classes = [ProjectMemberPermission] serializer_class = DeployBoardSerializer diff --git a/apps/web/public/images/image_1.jpg b/apps/web/app/assets/cover-images/image_1.jpg similarity index 100% rename from apps/web/public/images/image_1.jpg rename to apps/web/app/assets/cover-images/image_1.jpg diff --git a/apps/web/public/images/image_10.jpg b/apps/web/app/assets/cover-images/image_10.jpg similarity index 100% rename from apps/web/public/images/image_10.jpg rename to apps/web/app/assets/cover-images/image_10.jpg diff --git a/apps/web/public/images/image_11.jpg b/apps/web/app/assets/cover-images/image_11.jpg similarity index 100% rename from apps/web/public/images/image_11.jpg rename to apps/web/app/assets/cover-images/image_11.jpg diff --git a/apps/web/public/images/image_12.jpg b/apps/web/app/assets/cover-images/image_12.jpg similarity index 100% rename from apps/web/public/images/image_12.jpg rename to apps/web/app/assets/cover-images/image_12.jpg diff --git a/apps/web/public/images/image_13.jpg b/apps/web/app/assets/cover-images/image_13.jpg similarity index 100% rename from apps/web/public/images/image_13.jpg rename to apps/web/app/assets/cover-images/image_13.jpg diff --git a/apps/web/public/images/image_14.jpg b/apps/web/app/assets/cover-images/image_14.jpg similarity index 100% rename from apps/web/public/images/image_14.jpg rename to apps/web/app/assets/cover-images/image_14.jpg diff --git a/apps/web/public/images/image_15.jpg b/apps/web/app/assets/cover-images/image_15.jpg similarity index 100% rename from apps/web/public/images/image_15.jpg rename to apps/web/app/assets/cover-images/image_15.jpg diff --git a/apps/web/public/images/image_16.jpg b/apps/web/app/assets/cover-images/image_16.jpg similarity index 100% rename from apps/web/public/images/image_16.jpg rename to apps/web/app/assets/cover-images/image_16.jpg diff --git a/apps/web/public/images/image_17.jpg b/apps/web/app/assets/cover-images/image_17.jpg similarity index 100% rename from apps/web/public/images/image_17.jpg rename to apps/web/app/assets/cover-images/image_17.jpg diff --git a/apps/web/public/images/image_18.jpg b/apps/web/app/assets/cover-images/image_18.jpg similarity index 100% rename from apps/web/public/images/image_18.jpg rename to apps/web/app/assets/cover-images/image_18.jpg diff --git a/apps/web/public/images/image_19.jpg b/apps/web/app/assets/cover-images/image_19.jpg similarity index 100% rename from apps/web/public/images/image_19.jpg rename to apps/web/app/assets/cover-images/image_19.jpg diff --git a/apps/web/public/images/image_2.jpg b/apps/web/app/assets/cover-images/image_2.jpg similarity index 100% rename from apps/web/public/images/image_2.jpg rename to apps/web/app/assets/cover-images/image_2.jpg diff --git a/apps/web/public/images/image_20.jpg b/apps/web/app/assets/cover-images/image_20.jpg similarity index 100% rename from apps/web/public/images/image_20.jpg rename to apps/web/app/assets/cover-images/image_20.jpg diff --git a/apps/web/public/images/image_21.jpg b/apps/web/app/assets/cover-images/image_21.jpg similarity index 100% rename from apps/web/public/images/image_21.jpg rename to apps/web/app/assets/cover-images/image_21.jpg diff --git a/apps/web/public/images/image_22.jpg b/apps/web/app/assets/cover-images/image_22.jpg similarity index 100% rename from apps/web/public/images/image_22.jpg rename to apps/web/app/assets/cover-images/image_22.jpg diff --git a/apps/web/public/images/image_23.jpg b/apps/web/app/assets/cover-images/image_23.jpg similarity index 100% rename from apps/web/public/images/image_23.jpg rename to apps/web/app/assets/cover-images/image_23.jpg diff --git a/apps/web/public/images/image_24.jpg b/apps/web/app/assets/cover-images/image_24.jpg similarity index 100% rename from apps/web/public/images/image_24.jpg rename to apps/web/app/assets/cover-images/image_24.jpg diff --git a/apps/web/public/images/image_25.jpg b/apps/web/app/assets/cover-images/image_25.jpg similarity index 100% rename from apps/web/public/images/image_25.jpg rename to apps/web/app/assets/cover-images/image_25.jpg diff --git a/apps/web/public/images/image_26.jpg b/apps/web/app/assets/cover-images/image_26.jpg similarity index 100% rename from apps/web/public/images/image_26.jpg rename to apps/web/app/assets/cover-images/image_26.jpg diff --git a/apps/web/public/images/image_27.jpg b/apps/web/app/assets/cover-images/image_27.jpg similarity index 100% rename from apps/web/public/images/image_27.jpg rename to apps/web/app/assets/cover-images/image_27.jpg diff --git a/apps/web/public/images/image_28.jpg b/apps/web/app/assets/cover-images/image_28.jpg similarity index 100% rename from apps/web/public/images/image_28.jpg rename to apps/web/app/assets/cover-images/image_28.jpg diff --git a/apps/web/public/images/image_29.jpg b/apps/web/app/assets/cover-images/image_29.jpg similarity index 100% rename from apps/web/public/images/image_29.jpg rename to apps/web/app/assets/cover-images/image_29.jpg diff --git a/apps/web/public/images/image_3.jpg b/apps/web/app/assets/cover-images/image_3.jpg similarity index 100% rename from apps/web/public/images/image_3.jpg rename to apps/web/app/assets/cover-images/image_3.jpg diff --git a/apps/web/public/images/image_4.jpg b/apps/web/app/assets/cover-images/image_4.jpg similarity index 100% rename from apps/web/public/images/image_4.jpg rename to apps/web/app/assets/cover-images/image_4.jpg diff --git a/apps/web/public/images/image_5.jpg b/apps/web/app/assets/cover-images/image_5.jpg similarity index 100% rename from apps/web/public/images/image_5.jpg rename to apps/web/app/assets/cover-images/image_5.jpg diff --git a/apps/web/public/images/image_6.jpg b/apps/web/app/assets/cover-images/image_6.jpg similarity index 100% rename from apps/web/public/images/image_6.jpg rename to apps/web/app/assets/cover-images/image_6.jpg diff --git a/apps/web/public/images/image_7.jpg b/apps/web/app/assets/cover-images/image_7.jpg similarity index 100% rename from apps/web/public/images/image_7.jpg rename to apps/web/app/assets/cover-images/image_7.jpg diff --git a/apps/web/public/images/image_8.jpg b/apps/web/app/assets/cover-images/image_8.jpg similarity index 100% rename from apps/web/public/images/image_8.jpg rename to apps/web/app/assets/cover-images/image_8.jpg diff --git a/apps/web/public/images/image_9.jpg b/apps/web/app/assets/cover-images/image_9.jpg similarity index 100% rename from apps/web/public/images/image_9.jpg rename to apps/web/app/assets/cover-images/image_9.jpg diff --git a/apps/web/core/components/project/form.tsx b/apps/web/core/components/project/form.tsx index ae9c5d7bcf..6161f4b699 100644 --- a/apps/web/core/components/project/form.tsx +++ b/apps/web/core/components/project/form.tsx @@ -201,7 +201,7 @@ export function ProjectDetailsForm(props: IProjectDetailsForm) {
Project cover image diff --git a/apps/web/core/services/file.service.ts b/apps/web/core/services/file.service.ts index 0d2551fb9c..cfa367376a 100644 --- a/apps/web/core/services/file.service.ts +++ b/apps/web/core/services/file.service.ts @@ -274,13 +274,6 @@ export class FileService extends APIService { throw err?.response?.data; }); } - async getProjectCoverImages(): Promise { - return this.get(`/api/project-covers/`) - .then((res) => res?.data) - .catch((err) => { - throw err?.response?.data; - }); - } async duplicateAsset( workspaceSlug: string, diff --git a/apps/web/helpers/cover-image.helper.ts b/apps/web/helpers/cover-image.helper.ts index 355bc893e7..7197cffd8a 100644 --- a/apps/web/helpers/cover-image.helper.ts +++ b/apps/web/helpers/cover-image.helper.ts @@ -1,43 +1,74 @@ import type { EFileAssetType } from "@plane/types"; import { getFileURL } from "@plane/utils"; + +import CoverImage1 from "@/assets/images/cover-image-1.jpg"; +import CoverImage10 from "@/assets/images/cover-image-10.jpg"; +import CoverImage11 from "@/assets/images/cover-image-11.jpg"; +import CoverImage12 from "@/assets/images/cover-image-12.jpg"; +import CoverImage13 from "@/assets/images/cover-image-13.jpg"; +import CoverImage14 from "@/assets/images/cover-image-14.jpg"; +import CoverImage15 from "@/assets/images/cover-image-15.jpg"; +import CoverImage16 from "@/assets/images/cover-image-16.jpg"; +import CoverImage17 from "@/assets/images/cover-image-17.jpg"; +import CoverImage18 from "@/assets/images/cover-image-18.jpg"; +import CoverImage19 from "@/assets/images/cover-image-19.jpg"; +import CoverImage2 from "@/assets/images/cover-image-2.jpg"; +import CoverImage20 from "@/assets/images/cover-image-20.jpg"; +import CoverImage21 from "@/assets/images/cover-image-21.jpg"; +import CoverImage22 from "@/assets/images/cover-image-22.jpg"; +import CoverImage23 from "@/assets/images/cover-image-23.jpg"; +import CoverImage24 from "@/assets/images/cover-image-24.jpg"; +import CoverImage25 from "@/assets/images/cover-image-25.jpg"; +import CoverImage26 from "@/assets/images/cover-image-26.jpg"; +import CoverImage27 from "@/assets/images/cover-image-27.jpg"; +import CoverImage28 from "@/assets/images/cover-image-28.jpg"; +import CoverImage29 from "@/assets/images/cover-image-29.jpg"; +import CoverImage3 from "@/assets/images/cover-image-3.jpg"; +import CoverImage4 from "@/assets/images/cover-image-4.jpg"; +import CoverImage5 from "@/assets/images/cover-image-5.jpg"; +import CoverImage6 from "@/assets/images/cover-image-6.jpg"; +import CoverImage7 from "@/assets/images/cover-image-7.jpg"; +import CoverImage8 from "@/assets/images/cover-image-8.jpg"; +import CoverImage9 from "@/assets/images/cover-image-9.jpg"; + import { FileService } from "@/services/file.service"; const fileService = new FileService(); /** * Map of all available static cover images - * These are pre-loaded images available in the public/images folder + * These are pre-loaded images available in the assets/cover-images folder */ export const STATIC_COVER_IMAGES = { - IMAGE_1: "/images/image_1.jpg", - IMAGE_2: "/images/image_2.jpg", - IMAGE_3: "/images/image_3.jpg", - IMAGE_4: "/images/image_4.jpg", - IMAGE_5: "/images/image_5.jpg", - IMAGE_6: "/images/image_6.jpg", - IMAGE_7: "/images/image_7.jpg", - IMAGE_8: "/images/image_8.jpg", - IMAGE_9: "/images/image_9.jpg", - IMAGE_10: "/images/image_10.jpg", - IMAGE_11: "/images/image_11.jpg", - IMAGE_12: "/images/image_12.jpg", - IMAGE_13: "/images/image_13.jpg", - IMAGE_14: "/images/image_14.jpg", - IMAGE_15: "/images/image_15.jpg", - IMAGE_16: "/images/image_16.jpg", - IMAGE_17: "/images/image_17.jpg", - IMAGE_18: "/images/image_18.jpg", - IMAGE_19: "/images/image_19.jpg", - IMAGE_20: "/images/image_20.jpg", - IMAGE_21: "/images/image_21.jpg", - IMAGE_22: "/images/image_22.jpg", - IMAGE_23: "/images/image_23.jpg", - IMAGE_24: "/images/image_24.jpg", - IMAGE_25: "/images/image_25.jpg", - IMAGE_26: "/images/image_26.jpg", - IMAGE_27: "/images/image_27.jpg", - IMAGE_28: "/images/image_28.jpg", - IMAGE_29: "/images/image_29.jpg", + IMAGE_1: CoverImage1, + IMAGE_2: CoverImage2, + IMAGE_3: CoverImage3, + IMAGE_4: CoverImage4, + IMAGE_5: CoverImage5, + IMAGE_6: CoverImage6, + IMAGE_7: CoverImage7, + IMAGE_8: CoverImage8, + IMAGE_9: CoverImage9, + IMAGE_10: CoverImage10, + IMAGE_11: CoverImage11, + IMAGE_12: CoverImage12, + IMAGE_13: CoverImage13, + IMAGE_14: CoverImage14, + IMAGE_15: CoverImage15, + IMAGE_16: CoverImage16, + IMAGE_17: CoverImage17, + IMAGE_18: CoverImage18, + IMAGE_19: CoverImage19, + IMAGE_20: CoverImage20, + IMAGE_21: CoverImage21, + IMAGE_22: CoverImage22, + IMAGE_23: CoverImage23, + IMAGE_24: CoverImage24, + IMAGE_25: CoverImage25, + IMAGE_26: CoverImage26, + IMAGE_27: CoverImage27, + IMAGE_28: CoverImage28, + IMAGE_29: CoverImage29, } as const; export const DEFAULT_COVER_IMAGE_URL = STATIC_COVER_IMAGES.IMAGE_1;