Skip to content

Commit 3e65305

Browse files
committed
fix: 사이드바 네비게이션 동작 수정
1 parent 7e8e5ff commit 3e65305

File tree

6 files changed

+68
-7
lines changed

6 files changed

+68
-7
lines changed

src/apis/getAllMemberSchedule.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { getAllGroupMembers } from '@/apis/groupScheduleApis.ts';
2+
import supabase from '@/supabase';
3+
4+
export const getAllMemberSchedule = async (groupId: string) => {
5+
const memberList = await getAllGroupMembers(groupId);
6+
7+
const memberIdList = memberList.map((member) => member.id);
8+
9+
const { data: memberScheduleList } = await supabase
10+
.from('personal_schedules')
11+
.select('*')
12+
.in('user_id', memberIdList);
13+
14+
return memberScheduleList;
15+
};

src/apis/groupScheduleApis.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import supabase from '@/supabase';
22
import { Member } from '@/types/Member';
3+
34
interface addGroupShedule {
45
title: string;
56
description: string;
@@ -73,6 +74,20 @@ interface UpdateGroupScheduleMember {
7374
groupId: string;
7475
}
7576

77+
export const getOneGroup = async (groupId: string) => {
78+
const { data, error } = await supabase.from('groups').select('*').eq('id', +groupId);
79+
80+
if (error) {
81+
throw error;
82+
}
83+
84+
if (!data) {
85+
throw new Error('데이터를 찾을 수 없습니다.');
86+
}
87+
88+
return data[0];
89+
};
90+
7691
export const getOneGroupSchedule = async (scheduleId: string) => {
7792
const { data, error } = await supabase.from('group_schedules').select('*').eq('id', +scheduleId);
7893

src/pages/GroupSchedulePage.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,39 @@ import HamburgerButton from '@/components/common/SideBar/HamburgerButton';
33
import Calendar from '@/components/common/Calendar';
44
import CreateEventDialog from '@/components/MyCalendar/CreateEventButton';
55
import { useParams } from 'react-router-dom';
6-
import { useGetOneGroupSchedule } from '@/react-queries/useGetOneGroupSchedule';
76
import { Loading } from '.';
87
import { DB_Events } from '@/utils';
8+
import { useGetOneGroup } from '@/react-queries/useGetOneGroup.ts';
9+
import { useGetAllMemberSchedule } from '@/react-queries/useGetAllMemberSchedule.ts';
910

1011
const GroupSchedulePage = () => {
1112
// TODO: 캘린더 수정해서 이벤트 리스트를 외부에서 받을 수 있도록 해야함.
1213
// TODO: 그룹 스케줄을 받아오는게 아닌 그룹 정보를 받아와 이름을 표현해줘야 한다.
1314
const params = useParams<{ groupId: string }>();
1415
const groupId = params.groupId!;
1516

16-
const { data, isLoading, isError } = useGetOneGroupSchedule(groupId);
17+
const { data, isLoading, isError } = useGetOneGroup(groupId);
18+
const {
19+
data: memberScheduleList,
20+
isLoading: memberScheduleListLoading,
21+
isError: memberScheduleListError,
22+
} = useGetAllMemberSchedule(groupId);
1723

18-
if (isError) {
24+
if (isError || memberScheduleListError) {
1925
return <div>에러가 발생했습니다.</div>;
2026
}
2127

2228
console.log(data);
2329

2430
const db_events: DB_Events[] = [];
25-
if (data) {
26-
db_events.push({ ...data, start_date: data.start_date, end_date: data.end_date, title: data.title, id: data.id });
31+
if (memberScheduleList) {
32+
const eventList: DB_Events[] = memberScheduleList.map((item) => ({
33+
start_date: item.start_date,
34+
end_date: item.end_date,
35+
title: item.title,
36+
id: item.id,
37+
}));
38+
db_events.push(...eventList);
2739
}
2840

2941
const onDelete = (id: number) => {
@@ -33,8 +45,8 @@ const GroupSchedulePage = () => {
3345

3446
return (
3547
<div className="lg:ml-80">
36-
{isLoading && <Loading size="lg" display="spinner" color="primary" />}
37-
<AppBar backButton={false} IconButton={<HamburgerButton />} calendarName={data?.title ?? ''} />
48+
{(isLoading || memberScheduleListLoading) && <Loading size="lg" display="spinner" color="primary" />}
49+
<AppBar backButton={false} IconButton={<HamburgerButton />} calendarName={data?.name ?? ''} />
3850
<main className="z-1 relative flex-grow">
3951
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
4052
<div className="rounded bg-white p-6 px-4 sm:px-0">

src/react-queries/queryKeys.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const queries = createQueryKeyStore({
1515
},
1616
group: {
1717
getOne: (groupId: string) => [groupId],
18+
getAllMemberSchedule: (groupId: string) => [groupId],
1819
getAll: null,
1920
update: null,
2021
updateMember: null,
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { useQuery } from '@tanstack/react-query';
2+
import { queries } from '@/react-queries/queryKeys.ts';
3+
import { getAllMemberSchedule } from '@/apis/getAllMemberSchedule.ts';
4+
5+
export const useGetAllMemberSchedule = (groupId: string) =>
6+
useQuery({
7+
queryKey: queries.group.getAllMemberSchedule(groupId).queryKey,
8+
queryFn: () => getAllMemberSchedule(groupId),
9+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { useQuery } from '@tanstack/react-query';
2+
import { queries } from '@/react-queries/queryKeys.ts';
3+
import { getOneGroup } from '@/apis/groupScheduleApis.ts';
4+
5+
export const useGetOneGroup = (groupId: string) =>
6+
useQuery({
7+
queryKey: queries.group.getOne(groupId).queryKey,
8+
queryFn: () => getOneGroup(groupId),
9+
});

0 commit comments

Comments
 (0)