diff --git a/src/entities/projects/ui/projects-detail/ProjectDescription.tsx b/src/entities/projects/ui/projects-detail/ProjectDescription.tsx index a983be1..98647e8 100644 --- a/src/entities/projects/ui/projects-detail/ProjectDescription.tsx +++ b/src/entities/projects/ui/projects-detail/ProjectDescription.tsx @@ -13,7 +13,9 @@ const ProjectDescription = ({ return ( <> - {description} + + {description} + ); }; diff --git a/src/features/projects/hooks/useApplyForm.ts b/src/features/projects/hooks/useApplyForm.ts index 91adaa7..dffc377 100644 --- a/src/features/projects/hooks/useApplyForm.ts +++ b/src/features/projects/hooks/useApplyForm.ts @@ -6,6 +6,7 @@ import { useCreateProjectApplications } from "@features/projects/queries/useCrea import { useGetProjectApplicationStatus } from "@entities/projects/queries/useGetProjectApplications"; +import { useAuthStore } from "@shared/stores/authStore"; import { useSnackbarStore } from "@shared/stores/snackbarStore"; interface ApplyFormResult { @@ -27,6 +28,7 @@ interface ApplyFormResult { const useApplyForm = (): ApplyFormResult => { const { id: projectId } = useParams(); + const { user } = useAuthStore(); const { showError } = useSnackbarStore(); const { data: isApplied = false, isLoading: dataLoading } = @@ -41,6 +43,10 @@ const useApplyForm = (): ApplyFormResult => { const openForm = (): void => { if (dataLoading) return; + if (!user) { + showError("로그인을 해주세요"); + return; + } setIsFormOpen(true); }; const closeForm = (): void => setIsFormOpen(false); diff --git a/src/features/projects/ui/ProjectLike.tsx b/src/features/projects/ui/ProjectLike.tsx index 098926f..4712a96 100644 --- a/src/features/projects/ui/ProjectLike.tsx +++ b/src/features/projects/ui/ProjectLike.tsx @@ -7,6 +7,7 @@ import { getStatusClassname, shareProjectUrl, } from "@shared/libs/utils/projectDetail"; +import { useSnackbarStore } from "@shared/stores/snackbarStore"; import type { ProjectListRes } from "@shared/types/project"; import { FavoriteBorderIcon, @@ -22,6 +23,13 @@ interface ProjectLikeProps { const ProjectLike = ({ values }: ProjectLikeProps): JSX.Element => { const { isLiked, toggleLike } = useOptimisticProjectLike(); + const { showError, showSuccess } = useSnackbarStore(); + + const sharelink = (): void => { + shareProjectUrl() + .then(() => showSuccess("UPL이 복사되었습니다.")) + .catch(() => showError("복사 실패")); + }; return ( @@ -37,7 +45,7 @@ const ProjectLike = ({ values }: ProjectLikeProps): JSX.Element => { )} - + diff --git a/src/shared/libs/utils/projectDetail.ts b/src/shared/libs/utils/projectDetail.ts index cdb913f..7a30bfb 100644 --- a/src/shared/libs/utils/projectDetail.ts +++ b/src/shared/libs/utils/projectDetail.ts @@ -17,9 +17,6 @@ export const formatDate = (date?: string | Timestamp): string => { return date; }; -export const shareProjectUrl = (): void => { - navigator.clipboard - .writeText(window.location.href) - .then(() => alert("URL이 복사되었습니다.")) - .catch(() => alert("복사 실패")); +export const shareProjectUrl = async (): Promise => { + navigator.clipboard.writeText(window.location.href); }; diff --git a/src/shared/ui/LogoBox.tsx b/src/shared/ui/LogoBox.tsx index 58bbd7f..4a679a8 100644 --- a/src/shared/ui/LogoBox.tsx +++ b/src/shared/ui/LogoBox.tsx @@ -3,6 +3,8 @@ import type { SxProps, Theme } from "@mui/material"; import type { JSX } from "react"; import { useNavigate } from "react-router-dom"; +import Logo from "./icons/logo.svg"; + interface LogoBoxProps { size?: "small" | "medium" | "large"; onClick?: () => void; @@ -40,7 +42,7 @@ const LogoBox = ({ $disableHover={disableHover} sx={sx} > - + {showText && {text}} ); diff --git a/src/app/public/logo.svg b/src/shared/ui/icons/logo.svg similarity index 100% rename from src/app/public/logo.svg rename to src/shared/ui/icons/logo.svg