Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,6 @@
"recoil": "^0.7.7",
"recoil-persist": "^5.1.0",
"typescript": "5.1.6"
}
},
"packageManager": "yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72"
}
47 changes: 22 additions & 25 deletions pages/party/[id].tsx
Original file line number Diff line number Diff line change
@@ -1,33 +1,30 @@
import styled from "@emotion/styled";
import { DefaultHeader } from "@components/common/DefaultHeader";
import { HeaderBackButton } from "@components/common/HeaderBackButton";
import { useScroll } from "react-use";
import { useRef } from "react";
import PartyDetailContent from "@components/partydetail/PartyDetailContent";
import QuerySuspenseErrorBoundary from "@components/hoc/QuerySuspenseErrorBoundary";
import styled from '@emotion/styled';
import { DefaultHeader } from '@components/common/DefaultHeader';
import { HeaderBackButton } from '@components/common/HeaderBackButton';
import { useScroll } from 'react-use';
import { useRef } from 'react';
import PartyDetailContent from '@components/partydetail/PartyDetailContent';
import QuerySuspenseErrorBoundary from '@components/hoc/QuerySuspenseErrorBoundary';

const Container = styled.div`
display: flex;
flex-direction: column;
align-items: center;
margin: 0 auto;
height: 100%;
width: 100%;
max-width: 768px;
overflow-y: scroll;
display: flex;
flex-direction: column;
align-items: center;
margin: 0 auto;
height: 100%;
width: 100%;
max-width: 768px;
`;

const PartyDetail = () => {
const scrollRef = useRef(null);
const { y } = useScroll(scrollRef);
return (
<Container ref={scrollRef}>
<DefaultHeader leftArea={<HeaderBackButton />} />
<QuerySuspenseErrorBoundary>
<PartyDetailContent y={y} />
</QuerySuspenseErrorBoundary>
</Container>
);
return (
<Container>
<DefaultHeader leftArea={<HeaderBackButton />} />
<QuerySuspenseErrorBoundary>
<PartyDetailContent />
</QuerySuspenseErrorBoundary>
</Container>
);
};

export default PartyDetail;
32 changes: 29 additions & 3 deletions pages/profile/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import BackgroundImage from '@components/common/BackgroundImage';
import { DefaultButton } from '@components/common/DefaultButton';
import { DefaultHeader } from '@components/common/DefaultHeader';
import { HeaderBackButton } from '@components/common/HeaderBackButton';
import QuerySuspenseErrorBoundary from '@components/hoc/QuerySuspenseErrorBoundary';
Expand All @@ -10,6 +11,7 @@ import ProfileTab from '@components/profile/ProfileTab';
import styled from '@emotion/styled';
import { GetServerSideProps } from 'next';
import Link from 'next/link';
import { useRouter } from 'next/router';
import { useRef } from 'react';
import { useScroll } from 'react-use';

Expand All @@ -28,18 +30,27 @@ const Container = styled.div`
const ProfileInfoContainer = styled.div`
display: flex;
flex-direction: column;
height: 200px;
width: 100%;
`;

const RightAreaContainer = styled.div`
display: flex;
height: 100%;
justify-content: flex-end;
padding: 0 8px;
align-items: center;
cursor: pointer;
`;

const ProfileLoginButtonWrapper = styled.div`
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
height: 120px;
padding: 0 30px;
`;

const RightArea = () => {
return (
<Link href={'/setting'}>
Expand All @@ -51,14 +62,29 @@ const RightArea = () => {
const Profile = () => {
const scrollRef = useRef(null);
const { y } = useScroll(scrollRef);
const { push } = useRouter();
const onClickLoginButton = () => {
push('/signin');
};

return (
<Container ref={scrollRef}>
<DefaultHeader leftArea={<HeaderBackButton />} rightArea={<RightArea />} />
<BackgroundImage scrollY={y} src="/images/profile/profilebackground.jpg" height={200} />
<ProfileInfoContainer>
<QuerySuspenseErrorBoundary
errorFallback={ProfileError}
errorFallback={({ error }) => {
if (error?.response?.status === 401) {
return (
<ProfileLoginButtonWrapper>
<DefaultButton
text="로그인 하러 가기"
onClick={onClickLoginButton}
/>
</ProfileLoginButtonWrapper>
);
}
}}
suspenseFallback={<ProfileLoading />}
>
<ProfileInfo />
Expand All @@ -79,7 +105,7 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
return {
redirect: {
permanent: false,
destination: '/profile?category=situation&role=HOST',
destination: '/profile?category=situation&role=VOLUNTEER&status=RECRUIT',
},
};
}
Expand Down
15 changes: 15 additions & 0 deletions src/api/deleteReview.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import defaultRequest from 'src/lib/axios/defaultRequest';

export interface DeleteReviewBody {
reviewId: number;
}

const deleteReview = async (body: DeleteReviewBody) => {
return defaultRequest.delete('/api/review', {
data: {
body,
},
});
};

export default deleteReview;
21 changes: 21 additions & 0 deletions src/api/getHostReviewList.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import variableAssignment from '@utils/variableAssignment';
import defaultRequest from 'src/lib/axios/defaultRequest';
import { InfinitePaginationDataType } from 'types/common/InfinitePaginationDataType';
import { GetReviewListResponse } from 'types/review';

interface GetHostReviewListParameter {
page: number;
size: number;
hostId: number;
}

export const API_GET_HOST_REVIEW_LIST = `/api/review/host`;

export const getHostReviewList = async (params: GetHostReviewListParameter) => {
const { data } = await defaultRequest.get<
InfinitePaginationDataType<'reviewGetResList', GetReviewListResponse>
>(API_GET_HOST_REVIEW_LIST, {
params,
});
return data;
};
25 changes: 25 additions & 0 deletions src/api/getPartyCurrentSituation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import defaultRequest from 'src/lib/axios/defaultRequest';
import { InfinitePaginationDataType } from 'types/common/InfinitePaginationDataType';
import { GetPartyCurrentSituationResponse } from 'types/party';

type GetPartyCurrentSituationRequestRole = 'HOST' | 'VOLUNTEER';
export type GetPartyCurrentSituationRequestStatus = 'RECRUIT' | 'RECRUIT_FINISH' | 'PARTY_FINISH';
interface GetPartyCurrentSituationParameter {
page: number;
size: number;
role: GetPartyCurrentSituationRequestRole;
status: GetPartyCurrentSituationRequestStatus;
}

export const API_GET_PARTY_STATUS_KEY = '/api/party/party-status';

const getPartyStatus = async (params: GetPartyCurrentSituationParameter) => {
const { data } = await defaultRequest.get<
InfinitePaginationDataType<'partyList', GetPartyCurrentSituationResponse>
>(API_GET_PARTY_STATUS_KEY, {
params,
});
return data;
};

export default getPartyStatus;
22 changes: 8 additions & 14 deletions src/api/getPartyDetail.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
import variableAssignMent from "@utils/variableAssignment";
import defaultRequest from "src/lib/axios/defaultRequest";
import { PartyDetailResponse } from "types/party/detail/PartyDetailResponse";
import variableAssignMent from '@utils/variableAssignment';
import defaultRequest from 'src/lib/axios/defaultRequest';
import { PartyDetailResponse } from 'types/party/detail/PartyDetailResponse';

interface GetPartyDetailParameter {
id: string;
userId: string;
id: string;
}

export const API_GET_PARTY_DETAIL_KEY = "/api/party/{{id}}?userId={{userId}}";
export const API_GET_PARTY_DETAIL_KEY = '/api/party/{{id}}';

const getPartyDetail = async ({
id,
userId,
}: GetPartyDetailParameter): Promise<PartyDetailResponse> => {
const { data } = await defaultRequest.get(
variableAssignMent(API_GET_PARTY_DETAIL_KEY, { id, userId })
);
return data;
const getPartyDetail = async ({ id }: GetPartyDetailParameter): Promise<PartyDetailResponse> => {
const { data } = await defaultRequest.get(variableAssignMent(API_GET_PARTY_DETAIL_KEY, { id }));
return data;
};

export default getPartyDetail;
30 changes: 17 additions & 13 deletions src/api/getPartyJoin.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
import variableAssignMent from "@utils/variableAssignment";
import defaultRequest from "src/lib/axios/defaultRequest";
import { PartyJoinResponse } from "types/party/join/PartyJoinResponse";
import variableAssignMent from '@utils/variableAssignment';
import defaultRequest from 'src/lib/axios/defaultRequest';
import { InfinitePaginationDataType } from 'types/common/InfinitePaginationDataType';
import { PartyJoinResponse } from 'types/party/join/PartyJoinResponse';

interface getPartyJoinParameter {
role: string;
type GetPartyJoinRequestRole = 'HOST' | 'VOLUNTEER';
interface GetPartyJoinParameter {
page: number;
size: number;
role: GetPartyJoinRequestRole;
}

export const API_GET_PARTY_JOIN_KEY = "/api/party/party-join?role={{role}}";
export const API_GET_PARTY_JOIN_KEY = '/api/party/party-join';

const getPartyJoin = async ({
role,
}: getPartyJoinParameter): Promise<PartyJoinResponse[]> => {
const { data } = await defaultRequest.get(
variableAssignMent(API_GET_PARTY_JOIN_KEY, { role: role })
);
return data;
const getPartyJoin = async (params: GetPartyJoinParameter) => {
const { data } = await defaultRequest.get<
InfinitePaginationDataType<'partyList', PartyJoinResponse>
>(API_GET_PARTY_JOIN_KEY, {
params,
});
return data;
};

export default getPartyJoin;
34 changes: 15 additions & 19 deletions src/api/getPartyMainPage.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,24 @@
import variableAssignMent from "@utils/variableAssignment";
import defaultRequest from "src/lib/axios/defaultRequest";
import { PartyListResponse } from "types/common/PartyListResponse";
import variableAssignMent from '@utils/variableAssignment';
import defaultRequest from 'src/lib/axios/defaultRequest';
import { InfinitePaginationDataType } from 'types/common/InfinitePaginationDataType';
import { PartyListResponse } from 'types/common/PartyListResponse';

interface GetMainPageParameter {
longitude: number;
latitude: number;
lastPartyId?: number;
size?: number;
longitude: number;
latitude: number;
page?: number;
size?: number;
}

export const API_GET_MAIN_PAGE =
"/api/main";
export const API_GET_MAIN_PAGE = '/api/main';

const getMainPageData = async (params: GetMainPageParameter) => {
const { data } = await defaultRequest.get<
InfinitePaginationDataType<"partyList", PartyListResponse>
>(
API_GET_MAIN_PAGE, {
params:{
...params
}
}
);
return data;
const { data } = await defaultRequest.get<
InfinitePaginationDataType<'partyList', PartyListResponse>
>(API_GET_MAIN_PAGE, {
params,
});
return data;
};

export default getMainPageData;
20 changes: 0 additions & 20 deletions src/api/getPartyStatus.ts

This file was deleted.

21 changes: 0 additions & 21 deletions src/api/getProfileReviewList.ts

This file was deleted.

20 changes: 20 additions & 0 deletions src/api/getReviewDetail.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import variableAssignment from '@utils/variableAssignment';
import defaultRequest from 'src/lib/axios/defaultRequest';
import { GetReviewDetailResponse } from 'types/review';

interface GetReviewDetailParameter {
reviewId: string;
}

export const API_GET_REVIEW_DETAIL = `/api/review/{{reviewId}}`;

const getReviewDetail = async ({ reviewId }: GetReviewDetailParameter) => {
const { data } = await defaultRequest.get<GetReviewDetailResponse>(
variableAssignment(API_GET_REVIEW_DETAIL, {
reviewId,
}),
);
return data;
};

export default getReviewDetail;
Loading