1- import { createBrowserRouter , type LoaderFunctionArgs } from 'react-router'
1+ import {
2+ createBrowserRouter ,
3+ redirect ,
4+ type LoaderFunctionArgs
5+ } from 'react-router'
26import dayjs from 'dayjs'
37
48// layouts
@@ -33,6 +37,11 @@ import Invitation from '@/features/group/edit/invitation/Invitation'
3337import { StatisticsDetailPage , StatisticsPage } from '@/pages/statistics'
3438import { PlansOverview } from '@/pages/plan/PlansOverview'
3539import EditItem from '@/pages/item/edit/EditItem'
40+ import {
41+ fetchGroupInfo ,
42+ validateGroupMember
43+ } from '@/features/group/service/groupInfo'
44+ import { useUserStore } from '@/shared/stores/useUserStore'
3645
3746const getInitialDateForCalendar = ( dateParam : string | null ) => {
3847 if ( dateParam ) return dayjs ( dateParam ) . startOf ( 'day' ) . toISOString ( )
@@ -44,19 +53,34 @@ const getInitialDateForCalendar = (dateParam: string | null) => {
4453
4554const eventsLoader = async ( { request, params } : LoaderFunctionArgs ) => {
4655 const url = new URL ( request . url )
47-
4856 const dateParam = url . searchParams . get ( 'date' )
4957 const groupId = params . groupId
58+ const user = useUserStore . getState ( ) . user
59+
60+ if ( ! groupId || ! user ?. id ) {
61+ throw redirect ( '/' )
62+ }
63+
64+ const validate = await validateGroupMember ( user . id , groupId )
65+ if ( ! validate ) {
66+ localStorage . removeItem ( 'storageGroup' )
67+ localStorage . removeItem ( 'storageGroupName' )
68+ throw redirect ( '/' )
69+ }
70+
71+ const groupData = await fetchGroupInfo ( groupId )
72+ localStorage . setItem ( 'storageGroup' , groupData . id )
73+ localStorage . setItem ( 'storageGroupName' , groupData . name )
5074
5175 const initialDate = getInitialDateForCalendar ( dateParam )
5276
5377 const events = await fetchByMonth (
5478 dayjs ( initialDate ) . year ( ) ,
5579 dayjs ( initialDate ) . month ( ) ,
56- groupId ?? ''
80+ groupId
5781 )
5882
59- return { initialDate, events }
83+ return { initialDate, events, groupId }
6084}
6185
6286export const router = createBrowserRouter ( [
0 commit comments