Skip to content

Commit 454f917

Browse files
authored
Merge pull request depromeet#596 from depromeet/bugfix/595
fix: 분석 정보 확인 시에 노출되는 스페이스 관리 버튼 이벤트 연결
2 parents 40e97c3 + 2052c2d commit 454f917

4 files changed

Lines changed: 22 additions & 12 deletions

File tree

apps/web/src/app/desktop/component/analysis/AnalysisOverview/AnalysisOverviewHeader.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
import { Icon } from "@/component/common/Icon";
22
import { Typography } from "@/component/common/typography";
3+
import SpaceManageToggleMenu from "@/component/space/edit/SpaceManageToggleMenu";
34
import { currentSpaceState } from "@/store/space/spaceAtom";
45
import { DESIGN_TOKEN_COLOR } from "@/style/designTokens";
6+
import { isSpaceLeader } from "@/utils/userUtil";
57
import { css } from "@emotion/react";
68
import { useAtomValue } from "jotai";
79

810
export default function AnalysisOverviewHeader() {
911
// TODO: 새로고침해도 query를 통해서 데이터를 불러오도록 수정 필요
1012
const currentSelectedSpace = useAtomValue(currentSpaceState);
1113

12-
const { name, introduction, memberCount, formTag } = currentSelectedSpace || {};
14+
const { name, introduction, memberCount, formTag, leader, id: spaceId } = currentSelectedSpace || {};
15+
const isLeader = isSpaceLeader(leader?.id);
1316

1417
return (
1518
<section>
@@ -25,7 +28,7 @@ export default function AnalysisOverviewHeader() {
2528
<Typography variant="heading24Bold" color="gray900">
2629
{name}
2730
</Typography>
28-
<Icon icon="ic_more" size={2.0} color={DESIGN_TOKEN_COLOR.gray900} />
31+
{isLeader && <SpaceManageToggleMenu spaceId={spaceId!} iconSize={2.0} iconColor={"gray900"} />}
2932
</div>
3033

3134
{/* ---------- 스페이스 소개 ---------- */}

apps/web/src/app/desktop/space/modify/ModifySpacePage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ import { ImageUploader } from "@/component/common/ImageUploader";
33
import { Input, InputLabelContainer, Label, TextArea } from "@/component/common/input";
44
import { LoadingModal } from "@/component/common/Modal/LoadingModal";
55
import { Spacing } from "@/component/common/Spacing";
6-
import useModifySpace from "@/hooks/app/space/useModifySpace";
6+
import useModifySpace, { MODIFY_SPACE_ID_QUERY_KEY } from "@/hooks/app/space/useModifySpace";
77
import useDesktopBasicModal from "@/hooks/useDesktopBasicModal";
88
import { css } from "@emotion/react";
99
import { useSearchParams } from "react-router-dom";
1010

1111
// 데스크톱 환경에서는 해당 수정 페이지가 모달 안에 이식되어요
1212
export default function ModifySpacePage() {
1313
const [searchParams] = useSearchParams();
14-
const spaceId = searchParams.get("spaceId") as string;
14+
const spaceId = searchParams.get(MODIFY_SPACE_ID_QUERY_KEY) as string;
1515
const {
1616
data,
1717
isLoading,

apps/web/src/component/space/edit/SpaceManageToggleMenu.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
import ModifySpacePage from "@/app/desktop/space/modify/ModifySpacePage";
22
import { Icon } from "@/component/common/Icon";
33
import { ToggleMenu } from "@/component/common/toggleMenu";
4-
import useModifySpace from "@/hooks/app/space/useModifySpace";
4+
import useModifySpace, { MODIFY_SPACE_METHOD_QUERY_KEY, MODIFY_SPACE_ID_QUERY_KEY } from "@/hooks/app/space/useModifySpace";
55
import useDesktopBasicModal from "@/hooks/useDesktopBasicModal";
66
import { useModal } from "@/hooks/useModal";
77
import useToggleMenu from "@/hooks/useToggleMenu";
88
import { DESIGN_TOKEN_COLOR } from "@/style/designTokens";
99
import { css } from "@emotion/react";
10-
import { useNavigate } from "react-router-dom";
10+
import { useSearchParams } from "react-router-dom";
1111

1212
export default function SpaceManageToggleMenu({
1313
iconSize = 1.8,
1414
iconColor = "gray900",
1515
spaceId,
1616
}: {
1717
spaceId: string;
18-
iconSize?: number;
18+
iconSize?: number | string;
1919
iconColor?: keyof typeof DESIGN_TOKEN_COLOR;
2020
}) {
2121
const { isShowMenu, showMenu, hideMenu } = useToggleMenu();
22-
const navigate = useNavigate();
2322
const { open: openDesktopModal } = useDesktopBasicModal();
2423
const { open: openAlertModal } = useModal();
25-
const { onSubmitDeleteSpace, initializeSearchQuery } = useModifySpace({ id: spaceId });
24+
const { onSubmitDeleteSpace, initializeSearchQuery } = useModifySpace({ id: spaceId.toString() });
25+
const [_, setSearchParams] = useSearchParams();
2626

2727
/**
2828
* @description 토글 메뉴 표시 함수
@@ -37,7 +37,11 @@ export default function SpaceManageToggleMenu({
3737
* @description 스페이스 수정 함수
3838
*/
3939
const handleEditSpace = () => {
40-
navigate(`?spaceId=${spaceId}&method=edit`, { replace: true });
40+
setSearchParams((prev) => ({
41+
...Object.fromEntries(prev.entries()),
42+
[MODIFY_SPACE_ID_QUERY_KEY]: spaceId,
43+
[MODIFY_SPACE_METHOD_QUERY_KEY]: "edit",
44+
}));
4145
openDesktopModal({
4246
title: "스페이스 수정",
4347
contents: <ModifySpacePage />,

apps/web/src/hooks/app/space/useModifySpace.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ interface ModifySpaceProps {
1515
id: string;
1616
}
1717

18+
export const MODIFY_SPACE_ID_QUERY_KEY = "modifyTargetId";
19+
export const MODIFY_SPACE_METHOD_QUERY_KEY = "method";
20+
1821
export default function useModifySpace({ id }: ModifySpaceProps) {
1922
const { data, isLoading } = useApiGetSpace(id);
2023
const setterCurrentSpace = useSetAtom(currentSpaceState);
@@ -29,8 +32,8 @@ export default function useModifySpace({ id }: ModifySpaceProps) {
2932

3033
const initializeSearchQuery = () => {
3134
const searchParams = new URLSearchParams(window.location.search);
32-
searchParams.delete("method");
33-
searchParams.delete("spaceId");
35+
searchParams.delete(MODIFY_SPACE_METHOD_QUERY_KEY);
36+
searchParams.delete(MODIFY_SPACE_ID_QUERY_KEY);
3437
navigate({ search: searchParams.toString() }, { replace: true });
3538
};
3639

0 commit comments

Comments
 (0)