Skip to content

Commit 4446e3f

Browse files
authored
Merge pull request #148 from ASAP-Lettering/feat/#141
[Feat] 홈(메인) 행성 고정 기능
2 parents 6c41c34 + c91cd7f commit 4446e3f

File tree

8 files changed

+98
-80
lines changed

8 files changed

+98
-80
lines changed

src/api/planet/space/space.tsx

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { authClient } from "@/api/client";
1+
import { authClient } from '@/api/client';
22

33
// 메인 스페이스 아이디 조회
44
export const getMainId = async () => {
@@ -7,6 +7,13 @@ export const getMainId = async () => {
77
return response;
88
};
99

10+
// 메인 스페이스 변경
11+
export const putMainSpace = async (spaceId: string) => {
12+
const response = await authClient.put(`/api/v1/spaces/${spaceId}/main`);
13+
14+
return response;
15+
};
16+
1017
// 특정 스페이스 조회
1118
export const getSpaceInfo = async (spaceId: string) => {
1219
const response = await authClient.get(`/api/v1/spaces/${spaceId}`);
@@ -21,14 +28,14 @@ export const getSpaceList = async () => {
2128
// 스페이스 생성
2229
export const postNewSpace = async ({
2330
spaceName,
24-
templateType,
31+
templateType
2532
}: {
2633
spaceName: string;
2734
templateType: number;
2835
}) => {
2936
return await authClient.post(`/api/v1/spaces`, {
3037
spaceName: spaceName,
31-
templateType: templateType,
38+
templateType: templateType
3239
});
3340
};
3441

@@ -40,30 +47,30 @@ export const deleteSpace = async ({ spaceId }: { spaceId: string }) => {
4047
// 여러 스페이스 삭제
4148
export const deleteSpaces = async ({ spaceIds }: { spaceIds: string[] }) => {
4249
return await authClient.delete(`/api/v1/spaces`, {
43-
data: { spaceIds },
50+
data: { spaceIds }
4451
});
4552
};
4653

4754
// 스페이스 이름 수정
4855
export const putSpace = async ({
4956
spaceId,
50-
spaceName,
57+
spaceName
5158
}: {
5259
spaceId: string;
5360
spaceName: string;
5461
}) => {
5562
return await authClient.put(`/api/v1/spaces/${spaceId}/name`, {
56-
spaceName,
63+
spaceName
5764
});
5865
};
5966

6067
// 스페이스 순서 변경
6168
export const putSpacesOrder = async ({
62-
orders,
69+
orders
6370
}: {
6471
orders: { spaceId: string; index: number }[];
6572
}) => {
6673
return await authClient.put(`/api/v1/spaces/order`, {
67-
orders,
74+
orders
6875
});
6976
};

src/app/mypage/send/page.tsx

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
"use client";
1+
'use client';
22

33
import {
44
deleteSentLetter,
55
deleteSentLetters,
6-
getSentLetter,
7-
} from "@/api/mypage/user";
8-
import Button from "@/components/common/Button";
9-
import ConfirmModal from "@/components/common/ConfirmModal";
10-
import Loader, { LoaderContainer } from "@/components/common/Loader";
11-
import NavigatorBar from "@/components/common/NavigatorBar";
12-
import LetterTag from "@/components/mypage/LetterTag";
13-
import { useToast } from "@/hooks/useToast";
14-
import { SentLetterListType } from "@/types/letter";
15-
import { useRouter } from "next/navigation";
16-
import { Suspense, useEffect, useState } from "react";
17-
import styled from "styled-components";
6+
getSentLetter
7+
} from '@/api/mypage/user';
8+
import Button from '@/components/common/Button';
9+
import ConfirmModal from '@/components/common/ConfirmModal';
10+
import Loader, { LoaderContainer } from '@/components/common/Loader';
11+
import NavigatorBar from '@/components/common/NavigatorBar';
12+
import LetterTag from '@/components/mypage/LetterTag';
13+
import { useToast } from '@/hooks/useToast';
14+
import { SentLetterListType } from '@/types/letter';
15+
import { useRouter } from 'next/navigation';
16+
import { Suspense, useEffect, useState } from 'react';
17+
import styled from 'styled-components';
1818

1919
const SendedLetter = () => {
2020
const [isSelecting, setIsSelecting] = useState(false); // 항목을 선택중인지
@@ -49,7 +49,7 @@ const SendedLetter = () => {
4949
await fetchDeleteLetter(selectedId);
5050
setIsSelecting(false);
5151
setSelectedId([]);
52-
console.log("Deleted IDs:", selectedId);
52+
console.log('Deleted IDs:', selectedId);
5353
fetchLetterList();
5454
}
5555
};
@@ -69,7 +69,7 @@ const SendedLetter = () => {
6969
const fetchLetterList = async () => {
7070
try {
7171
const response = await getSentLetter();
72-
setSenderArray(response.data.content);
72+
setSenderArray(response.data.content.reverse());
7373
} catch (error) {
7474
console.log(error);
7575
}
@@ -78,22 +78,22 @@ const SendedLetter = () => {
7878
const fetchDeleteLetter = async (letterIds: string[]) => {
7979
if (letterIds.length === 1) {
8080
try {
81-
const response = await deleteSentLetter(letterIds[0]);
81+
await deleteSentLetter(letterIds[0]);
8282
showToast(`1개의 편지가 삭제되었어요`, {
8383
icon: false,
8484
close: true,
85-
bottom: "50px",
85+
bottom: '50px'
8686
});
8787
} catch (error) {
8888
console.log(error);
8989
}
9090
} else if (letterIds.length > 1) {
9191
try {
92-
const response = await deleteSentLetters(letterIds);
92+
await deleteSentLetters(letterIds);
9393
showToast(`${letterIds.length}개의 편지가 삭제되었어요`, {
9494
icon: false,
9595
close: true,
96-
bottom: "50px",
96+
bottom: '50px'
9797
});
9898
} catch (error) {
9999
console.log(error);
@@ -105,7 +105,7 @@ const SendedLetter = () => {
105105
<Container $isSelecting={isSelecting}>
106106
{isPopup && (
107107
<ConfirmModal
108-
title={selectedId.length + "개의 편지를 정말 삭제할까요?"}
108+
title={selectedId.length + '개의 편지를 정말 삭제할까요?'}
109109
sub="삭제된 편지는 복구되지 않아요."
110110
onConfirm={discardItems}
111111
onCancel={cancelItems}
@@ -118,7 +118,7 @@ const SendedLetter = () => {
118118
<Header>
119119
{!isSelecting ? (
120120
<>
121-
{" "}
121+
{' '}
122122
<SelectText onClick={() => setIsSelecting(!isSelecting)}>
123123
삭제
124124
</SelectText>
@@ -191,10 +191,10 @@ const Container = styled.div<{
191191
max-height: 100%;
192192
justify-content: space-between;
193193
/* ${({ $isSelecting }) =>
194-
$isSelecting ? "justify-content: space-between" : ""}; */
194+
$isSelecting ? 'justify-content: space-between' : ''}; */
195195
color: white;
196196
background: ${(props) => props.theme.colors.bg};
197-
background-image: url("/assets/mypage/img_background.png");
197+
background-image: url('/assets/mypage/img_background.png');
198198
background-size: cover;
199199
background-position: center;
200200
background-repeat: no-repeat;

src/app/planet/manage/page.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
1111
import {
1212
deleteSpaces,
1313
getSpaceList,
14+
putMainSpace,
1415
putSpacesOrder
1516
} from '@/api/planet/space/space';
1617
import { useToast } from '@/hooks/useToast';
@@ -104,13 +105,19 @@ const PlanetManagePage = () => {
104105
};
105106

106107
/* 홈(메인) 행성 고정 */
107-
const handleFixMainPlanet = () => {
108+
const handleFixMainPlanet = async () => {
108109
const selectedPlanet = planets?.filter((planet) =>
109110
selectedId.includes(planet.spaceId)
110111
);
111-
112-
/* TODO: 선택 행성 (selectedId) 메인 행성으로 변경 API 연동 */
113-
112+
await putMainSpace(selectedId);
113+
setPlanets(
114+
planets.map((planet) =>
115+
planet.spaceId === selectedId
116+
? { ...planet, isMainSpace: true }
117+
: { ...planet, isMainSpace: false }
118+
)
119+
);
120+
setViewSpaceId(null);
114121
setIsBottomUp(false);
115122
showToast(`${selectedPlanet[0]?.spaceName} 행성을 홈으로 고정했어요`, {
116123
icon: false,

src/app/signup/complete/page.tsx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
"use client";
1+
'use client';
22

3-
import Button from "@/components/common/Button";
4-
import Loader, { LoaderContainer } from "@/components/common/Loader";
5-
import NavigatorBar from "@/components/common/NavigatorBar";
6-
import { useRouter, useSearchParams } from "next/navigation";
7-
import { Suspense } from "react";
8-
import styled from "styled-components";
3+
import Button from '@/components/common/Button';
4+
import Loader, { LoaderContainer } from '@/components/common/Loader';
5+
import NavigatorBar from '@/components/common/NavigatorBar';
6+
import { useRouter, useSearchParams } from 'next/navigation';
7+
import { Suspense } from 'react';
8+
import styled from 'styled-components';
99

1010
const Signup = () => {
1111
const router = useRouter();
1212
const searchParams = useSearchParams();
13-
const url = searchParams.get("url");
13+
const url = searchParams.get('url');
1414

1515
const handleButtonClick = () => {
1616
if (url) {
1717
router.push(`/verify/letter?url=${url}`);
1818
} else {
19-
router.push("/onboarding");
19+
router.push('/onboarding');
2020
}
2121
};
2222
return (
@@ -29,7 +29,7 @@ const Signup = () => {
2929
<br /> 레터링에 오신 걸 환영해요
3030
</HeaderTitle>
3131
<HeaderSubTitle>
32-
편지에 담긴 진심으로 나만의 우주를 채워보세요!
32+
편지에 담긴 진심으로 나의 스페이스를 채워보세요!
3333
</HeaderSubTitle>
3434
</Header>
3535
<ImageWrapper>
@@ -39,7 +39,7 @@ const Signup = () => {
3939
<Wrapper>
4040
<Button
4141
buttonType="primary"
42-
text={url ? "나에게 온 편지 열기" : "나의 스페이스에 접속하기"}
42+
text={url ? '나에게 온 편지 열기' : '나의 스페이스에 접속하기'}
4343
onClick={handleButtonClick}
4444
></Button>
4545
</Wrapper>
@@ -72,7 +72,7 @@ const Container = styled.div`
7272
flex-direction: column;
7373
//overflow: scroll;
7474
justify-content: space-between;
75-
background-image: url("/assets/signup/signup_bg.png");
75+
background-image: url('/assets/signup/signup_bg.png');
7676
background-size: cover;
7777
background-position: center;
7878
background-repeat: no-repeat;

src/app/signup/page.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use client';
22

3+
import { theme } from '@/styles/theme';
34
import styled from 'styled-components';
45

56
export default function Signup() {
@@ -10,6 +11,6 @@ const Container = styled.div`
1011
display: flex;
1112
min-height: 100%;
1213
padding: 20px;
13-
color: white;
14-
background: #060812;
14+
color: ${theme.colors.white};
15+
background: ${theme.colors.bg};
1516
`;

0 commit comments

Comments
 (0)