Skip to content
Merged
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
19 changes: 1 addition & 18 deletions app/(service)/(nav)/study/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,7 @@
import {
HydrationBoundary,
dehydrate,
QueryClient,
} from '@tanstack/react-query';

import { prefetchGroupStudyDetail } from '@/features/study/group/model/use-study-query';

import StudyDetailPage from '@/features/study/group/ui/group-study-detail-page';

export default async function Page({ params }: { params: { id: string } }) {
const id = Number(params.id);

const qc = new QueryClient();

// 서버에서 미리 패치 (API 호출이 서버에서 실행됨)
await prefetchGroupStudyDetail(qc, id);

return (
<HydrationBoundary state={dehydrate(qc)}>
<StudyDetailPage id={id} />
</HydrationBoundary>
);
return <StudyDetailPage id={id} />;
}
2 changes: 1 addition & 1 deletion src/features/my-page/ui/applicant-list.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use client';
import React from 'react';

import { useApplicantsByStatusQuery } from '@/features/application/model/use-applicant-qeury';
import { useApplicantsByStatusQuery } from '@/features/study/group/application/model/use-applicant-qeury';
import ProfileCard from './profile-card';

export default function ApplicantList() {
Expand Down
2 changes: 1 addition & 1 deletion src/features/my-page/ui/profile-card.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import dayjs from 'dayjs';
import Image from 'next/image';
import React from 'react';
import { GroupStudyApply } from '@/features/study/group/application/api/type';
import { getSincerityPresetByLevelName } from '@/shared/config/sincerity-temp-presets';
import { cn } from '@/shared/shadcn/lib/utils';
import Button from '@/shared/ui/button';
import { GroupStudyApply } from '@/features/application/api/type';

export default function ProfileCard(props: { data: GroupStudyApply }) {
const { data: applicant } = props;
Expand Down
9 changes: 4 additions & 5 deletions src/features/study/group/api/get-gruoup-study-detail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,16 @@ export const getGroupStudyDetail = async (
): Promise<GroupStudyDetailResponse> => {
const { groupStudyId } = params;

console.log('groupStudyId', groupStudyId);

try {
const { data } = await axiosInstance.get(`/group-studies/${groupStudyId}`);

if (data.statusCode !== 200) {
throw new Error('Failed to fetch group study list');
}

console.log('data', data);

return data.content;
} catch (err) {}
} catch (err) {
console.error('Error in getGroupStudyDetail:', err);
throw err;
}
};
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { axiosInstance } from '@/shared/tanstack-query/axios';
import {
getApplicantsByStatusRequest,
getApplicantsByStatusResponse,
GetApplicantsByStatusRequest,
GetApplicantsByStatusResponse,
} from './type';

// 상태별 스터디 신청자 조회
export const getApplicantsByStatus = async (
params: getApplicantsByStatusRequest,
): Promise<getApplicantsByStatusResponse> => {
params: GetApplicantsByStatusRequest,
): Promise<GetApplicantsByStatusResponse> => {
const { page, size, status, groupStudyId } = params;

const { data } = await axiosInstance.get(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,14 @@ export interface ImageSizeType {
}

// api DTO
export interface getApplicantsByStatusRequest {
export interface GetApplicantsByStatusRequest {
groupStudyId: number;
page: number;
size: number;
status: ApplyStatus;
}

export interface getApplicantsByStatusResponse {
export interface GetApplicantsByStatusResponse {
content: GroupStudyApply[];
page: number;
size: number;
Expand All @@ -71,7 +71,7 @@ export interface getApplicantsByStatusResponse {
hasPrevious: boolean;
}

export interface updateApplicantByStatusRequest {
export interface UpdateApplicantByStatusRequest {
applyId: number;
groupStudyId: number;
status?: ApplyStatus;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { axiosInstance } from '@/shared/tanstack-query/axios';
import { updateApplicantByStatusRequest } from './type';
import { UpdateApplicantByStatusRequest } from './type';

// 스터디 신청자 상태 변경
export const updateApplicantByStatus = async (
params: updateApplicantByStatusRequest,
params: UpdateApplicantByStatusRequest,
) => {
const { status, groupStudyId, applyId } = params;

Expand Down
19 changes: 1 addition & 18 deletions src/features/study/group/model/use-study-query.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,7 @@
import { QueryClient, useQuery } from '@tanstack/react-query';
import axios from 'axios';
import { useQuery } from '@tanstack/react-query';
import { getGroupStudyDetail } from '../api/get-gruoup-study-detail';

// study-detail
export const getGroupStudyDetailQueryKey = (id: number) =>
['groupStudyDetail', id] as const;

export const fetchGroupStudyDetail = async (id: number) => {
const { data } = await axios.get(`/api/v1/group-studies/${id}`);

return data;
};

export const prefetchGroupStudyDetail = (qc: QueryClient, id: number) =>
qc.prefetchQuery({
queryKey: getGroupStudyDetailQueryKey(id),
queryFn: () => fetchGroupStudyDetail(id),
staleTime: 1000 * 60 * 5,
});

export const useGroupStudyDetailQuery = (groupStudyId: number) => {
return useQuery({
queryKey: ['groupStudyDetail', groupStudyId],
Expand Down
Loading