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
6 changes: 3 additions & 3 deletions src/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ api.interceptors.response.use(
return response;
},
async (error) => {
if (notFoundGroupDetail(error)) {
return (window.location.href = '/not-found');
}
// if (notFoundGroupDetail(error)) {
// return (window.location.href = '/not-found');
// }

const { config, response } = error;
if (response?.status === 401) {
Expand Down
41 changes: 32 additions & 9 deletions src/components/Alarm/AlarmDetail/AlarmInfo/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import theme from '@/styles/Theme';
import { SelectedEventInfo, Situation } from '@/types/event';

import { useEffect, useState } from 'react';
import { useRecoilState } from 'recoil';
import { useRecoilState, useResetRecoilState } from 'recoil';
import * as Style from './styles';
import { SituationStatus } from '@/types/notification';
import { useGroupDetail } from '@/queries/Group';
import { useNavigate } from 'react-router-dom';
import { useNavigate, useSearchParams } from 'react-router-dom';
import { isMobile } from 'react-device-detect';
import { useUpdateDetailStatus } from '@/queries/Detail';
import { Tooltip } from '@/components/@common/Tooltip';
Expand All @@ -32,12 +32,17 @@ const filterDisabledList = (dataList: SelectedEventInfo[] | undefined, disabledE
dataList?.filter((item) => !disabledEventIdList?.includes(item.eventId)).map((item) => item.eventId) || [];

const AlarmInfo = ({}) => {
const [{ alarmEventIdList, nickname, groupId, afterSituation, beforeSituation }, setAlarmIdList] = useRecoilState(alarmInfoState);
const [alr, setAlarmIdList] = useRecoilState(alarmInfoState);

const { alarmEventIdList, nickname, groupId, afterSituation, beforeSituation } = alr;
console.log(alr);

const [situationToChange, setSituationToChange] = useState<Situation>('์™„๋‚ฉ');

const navigate = useNavigate();

const [searchParam, _] = useSearchParams();

const { data: groupAdmin } = useGroupDetail(Number(groupId));

const isAdmin = groupAdmin?.content.isAdmin;
Expand All @@ -51,7 +56,7 @@ const AlarmInfo = ({}) => {
isAdmin && setSituationToChange('์™„๋‚ฉ');
}, [isAdmin]);

const { data, isLoading, disabledEventIdList, isDisabledItem } = useDisabledList(groupId!, alarmEventIdList, SITUATION_FORMAT_STYLE[afterSituation!]);
const { data, isLoading, isSuccess, disabledEventIdList, isDisabledItem } = useDisabledList(groupId, alarmEventIdList, SITUATION_FORMAT_STYLE[afterSituation!]);

const stringToNumber_Date = (date: string) => +date?.replace(/\-/g, '');

Expand All @@ -71,6 +76,12 @@ const AlarmInfo = ({}) => {
}));
}, [data]);

useEffect(() => {
return () => {
console.log('alarmInfo');
};
}, []);

useEffect(() => {
setCheckedEventId([...filterDisabledList(data?.content.eventList, disabledEventIdList)]);
}, [disabledEventIdList]);
Expand All @@ -94,31 +105,43 @@ const AlarmInfo = ({}) => {
};

const settingAlarmInfoNickname = () => {
data && setAlarmIdList((prev) => ({ ...prev, nickname: data?.content.eventList[0].nickname }));
isSuccess && data && setAlarmIdList((prev) => ({ ...prev, nickname: data?.content.eventList[0].nickname }));
};

useEffect(() => {
console.log('data');
settingAlarmInfoNickname();
}, [data]);

useEffect(() => {
console.log('alarmNickname');
}, [nickname]);

const resetList = useResetRecoilState(alarmInfoState);

const mobileOnSuccess = () => {
console.log('onSuccess');
setIsOpen(true);
navigate(`/m-group/${groupId}/book`);
setAlarmIdList(initAlarmInfoState);

navigate(`/m-group/${groupId}/book`); // ์—…๋ฐ์ดํŠธ ์™„๋ฃŒ ํ›„์— navigate ์‹คํ–‰
};

console.log(isOpen);
const onSuccess = () => {
setAlarmIdList(initAlarmInfoState);
isMobile && mobileOnSuccess();
mobileOnSuccess();
navigate(`/m-group/${groupId}/book`);
};

const { mutate: mutateDetailStatus } = useUpdateDetailStatus(onSuccess);

const updateSituation = () => {
mutateDetailStatus({ situation: situationToChange, eventIdList: checkedEventId });
mutateDetailStatus({ situation: situationToChange, eventIdList: checkedEventId }, { onSuccess: () => setIsOpen(true) });
};

useEffect(() => {
return () => {
console.log('unmount');
setAlarmIdList((prev) => ({ ...prev, alarmEventIdList: [] }));
};
}, []);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ const AlarmCard = ({ notificationInfo }: Props) => {
const goToAlarmInfo = (eventIdList: number[]) => {
handleReadNotification();
setAlarmEventIdList({ alarmEventIdList: [...eventIdList], nickname, beforeSituation, afterSituation, groupId });
isMobile ? navigate(`/m-notification/info`) : settingCalendarDate();
isMobile ? navigate(`/m-notification/info?groupId=${groupId}`) : settingCalendarDate();
};

const goToGroupMember = () => {
Expand Down
2 changes: 1 addition & 1 deletion src/components/Alarm/AlarmDetail/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const AlarmDetail = ({ headerHeight, setShowAlarmDetail }: Props) => {

<Style.Main>
{!alarmIdList.alarmEventIdList.length && <AlarmList />}
{(alarmIdList.alarmEventIdList.length || null) && <AlarmInfo />}
{alarmIdList.alarmEventIdList.length && <AlarmInfo />}
</Style.Main>
</Style.AlarmDetailFrame>
);
Expand Down
13 changes: 8 additions & 5 deletions src/components/Alarm/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ALARM } from '@/assets/icons/Alarm';
import useCheckListState from '@/hooks/useCheckListState';
import { useGetAlarmListCount } from '@/queries/Notification/useGetAlarmListCount';
import { alarmInfoState } from '@/store/alarmInfoState';
import { notificationModalState } from '@/store/notificationModalState';
import styled from '@emotion/styled';
import { useEffect, useState } from 'react';
import { isMobile } from 'react-device-detect';
Expand All @@ -16,7 +17,9 @@ type Props = {
};

const AlarmComponent = ({ headerHeight }: Props) => {
const [showAlarmDetail, setShowAlarmDetail] = useState(false);
// const [showAlarmDetail, setShowAlarmDetail] = useState(false);
const [showNotification, setShowNotification] = useRecoilState(notificationModalState);
// ๊ธฐ์กด ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€ state์˜€๋Š”๋ฐ ์•Œ๋žŒ On/off์‹œ ๋‚ฉ๋ถ€์—ฌ๋ถ€ ๋ณ€๊ฒฝ ๋ฐ ์š”์ฒญ ํŽ˜์ด์ง€ , ์ƒ์„ธ๋ฆฌ์ŠคํŠธ๋””ํ…Œ์ผ ํŽ˜์ด์ง€๊ฐ€ ๋‹ซํ˜€์•ผํ•ด์„œ ์ „์—ญ์œผ๋กœ ๋ณ€๊ฒฝ

const navigate = useNavigate();

Expand All @@ -33,10 +36,10 @@ const AlarmComponent = ({ headerHeight }: Props) => {

useEffect(() => {
if (alarmIdList.groupId) {
setShowAlarmDetail(true);
setShowNotification(true);
}
return () => {
setShowAlarmDetail(false);
setShowNotification(false);
};
}, [location]);

Expand All @@ -49,7 +52,7 @@ const AlarmComponent = ({ headerHeight }: Props) => {
};

const handleToggleNotificationModal = () => {
setShowAlarmDetail((prev) => !prev);
setShowNotification((prev) => !prev);
setInitCheckDetailFine();
};

Expand All @@ -62,7 +65,7 @@ const AlarmComponent = ({ headerHeight }: Props) => {
>
{ALARM.ALARM}
</Style.AlarmIconWrapper>
{showAlarmDetail && !isMobile && <AlarmDetail headerHeight={headerHeight} setShowAlarmDetail={setShowAlarmDetail} />}
{showNotification && !isMobile && <AlarmDetail headerHeight={headerHeight} setShowAlarmDetail={setShowNotification} />}
{/* !isMobile์„ ์•ˆ๋„ฃ์–ด์คฌ์„ ๋•Œ AlarmDetail์ด Mobileํ™”๋ฉด์—์„œ ์ถœ๋ ฅ์ด ๋˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค... ?(why.. isMobile์— ๋”ฐ๋ผ ๋ฒ„ํŠผ ํŠธ๋ฆฌ๊ฑฐ๋„ ๋‹ค๋ฅธ๋ฐ) */}
</>
);
Expand Down
9 changes: 8 additions & 1 deletion src/components/DetailFine/DetailList/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ import { DetailFilter } from '@/store/detailFilter';
import { useRecoilState } from 'recoil';
import { dateState } from '@/store/dateState';
import { SelectedEventInfo } from '@/types/event';
import { useSelectedContext } from '@/contexts/SelectedFineContext';
import { useSelectedContext, initialSelectData } from '@/contexts/SelectedFineContext';
import CheckboxContainer from '../../@common/Checkbox';
import { CheckDetailFine, SetCheckDetailFine } from '@/components/DetailFine/AlarmRequest_PaymentUpdate/hooks/useCheckDetailFine';
import DetailListCheckBox from '../checkbox';
import useCheckListState from '@/hooks/useCheckListState';
import { covertDateForView } from '@/utils/convertFormat';
import { notificationModalState } from '@/store/notificationModalState';

type Props = {
details?: SelectedEventInfo[];
Expand All @@ -21,6 +22,8 @@ type Props = {
const DetailList = ({ detailFilter, details }: Props) => {
const [calendarState, setCalendarState] = useRecoilState(dateState);

const [showNotification, setShowNotification] = useRecoilState(notificationModalState);

const [openButtonListId, setOpenButtonListId] = useState(0);

const { selectedFine, setSelectedFine } = useSelectedContext('userDetails');
Expand All @@ -39,6 +42,10 @@ const DetailList = ({ detailFilter, details }: Props) => {
setSelectedFine(detail);
};

useEffect(() => {
setSelectedFine(initialSelectData);
}, [showNotification]);

useEffect(() => {
const closeCircleButtonList = () => {
setOpenButtonListId(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,14 @@ const getGATrigger = (situation: Situation): string => {

const CircleButtonList = ({ setOpenButtonListId, situation, eventId, isAdmin = false }: Props) => {
const onSuccessUpdateStatus = (buttonSituation: Situation) => {
console.log('์„ฑ๊ณต');
cancelUpdateStatus();
pushDataLayerByStatus(isAdmin, buttonSituation);
buttonSituation === '๋ฏธ๋‚ฉ' && pushDataLayer('nonpayment', { route: 'list' });
};

console.log('check');

const { mutate: mutateDetailStatus } = useUpdateDetailStatus(onSuccessUpdateStatus);
const { openConfirmModal, closeConfirmModal } = useConfirmModal();
const { dropdownList, convertTextToSituation } = useSituationList(situation);
Expand Down
2 changes: 1 addition & 1 deletion src/hooks/Group/useValidateSituation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const useValidateSituation = () => {
const { groupId } = useParams();
const { checkDetailFineValues, checkDetailFineKeys } = useCheckListState();

const { refetch: refetchEventListById } = useQuery(['isSameSituationByServerState'], () =>
const { refetch: refetchEventListById } = useQuery(['isSameSituationByServerState', groupId], () =>
getDetailListById({ groupId: Number(groupId), eventIdsList: checkDetailFineKeys.map(Number) }),
);

Expand Down
5 changes: 3 additions & 2 deletions src/hooks/useDisabledList.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { SelectedEventInfo, Situation } from '@/types/event';
import React from 'react';

//disabled ๋˜์–ด์•ผํ•˜๋Š” List๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” hook
const useDisabledList = (groupId: number, checkEventIdList: number[], currentSituation: Situation) => {
const { data, isLoading } = useGetDetailListById(groupId, checkEventIdList);
const useDisabledList = (groupId: number | null, checkEventIdList: number[], currentSituation: Situation) => {
const { data, isLoading, isSuccess } = useGetDetailListById(groupId!, checkEventIdList);

// Id๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋ž‘ ๊ธฐ์กด ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ•ฉ์น˜๋ฉด ๋ฌดํ•œ ์Šคํฌ๋กคํ˜•์‹์˜ size๊ฐ€ ๋“ค์–ด๊ฐ€์„œ ๋ถˆํŽธํ• ๋“ฏ

Expand All @@ -20,6 +20,7 @@ const useDisabledList = (groupId: number, checkEventIdList: number[], currentSit
return {
data,
isLoading,
isSuccess,
disabledEventIdList,
isDisabledItem,
};
Expand Down
32 changes: 31 additions & 1 deletion src/m-components/MobileHome/GroupSection/index.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import { AddCard } from '@/components/Home/Card/AddCard';
import { GroupCard } from '@/components/Home/Card/GroupCard';
import useInfinityGroupList from '@/hooks/Group/useInfinityGroupList';
import React, { useState } from 'react';
import React, { useEffect, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import * as Style from './styles';
import { AuthModal } from '@/components/@common/Modal/LoginModal';
import { Footer } from '../Footer';
import { useRecoilState } from 'recoil';
import { userState } from '@/store/userState';
import { useUpdateDetailStatus } from '@/queries/Detail';
import { alarmInfoState, initAlarmInfoState } from '@/store/alarmInfoState';

const MobileGroupSection = () => {
const { groups, ref, hasNextPage } = useInfinityGroupList();
Expand All @@ -28,12 +30,40 @@ const MobileGroupSection = () => {
handleLoginModal();
return;
}
setT(true);
navigate('/m-home/create-group');
};
console.log('tttttt');

const [test, setT] = useState(false);

useEffect(() => {
console.log('init');
return () => {
console.log('clean');
};
}, [test]);
const [ar, setAr] = useRecoilState(alarmInfoState);

console.log(test);
console.log(ar);
const onSuccess = () => {
console.log('onSuccess');
setT(true);
setAr((prev) => ({ ...prev, afterSituation: 'FULL' }));
navigate(`/not-auth`);
};

const { mutate: mutateDetailStatus } = useUpdateDetailStatus(onSuccess);

// mutateDetailStatus({ situation: situationToChange, eventIdList: checkedEventId }
const onClickTest = () => {
mutateDetailStatus({ situation: '๋ฏธ๋‚ฉ', eventIdList: [48] }, { onSuccess: () => console.log('์„์„น์Šค') });
};
return (
<>
<Style.GroupSection>
<button onClick={onClickTest}>์•ˆ๋…•ํ•˜์„ธ์•ผใ…•</button>
<div>
<div style={{ width: '100%', height: 'auto' }}>
<img src="/public/banner.png" alt="group" style={{ width: '100%', height: '200px', objectFit: 'cover' }} />
Expand Down
1 change: 1 addition & 0 deletions src/m-pages/MobileHome/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import MobileLayout from '@/layouts/Mobile/MobileLayout';
import MobileGroupSection from '@/m-components/MobileHome/GroupSection';
import { useEffect } from 'react';

// ์ด๋ ‡๊ฒŒ ์•ˆ ํ•˜๋‹ˆ๊นŒ height๊ฐ€ ์ด์ƒํ•˜๊ฒŒ ์žกํ˜€์š” ์™œ์ผ๊นŒ์š”...
const MobileHome = () => {
Expand Down
11 changes: 11 additions & 0 deletions src/m-pages/MobileNotificationInfo/index.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,28 @@
import { ARROW } from '@/assets/icons/Arrow';
import AlarmInfo from '@/components/Alarm/AlarmDetail/AlarmInfo';
import ModalPageLayout from '@/layouts/Mobile/ModalPageLayout';
import { alarmInfoState } from '@/store/alarmInfoState';
import { useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import { useRecoilState } from 'recoil';

const MobileNotificationInfo = () => {
const navigate = useNavigate();
const goBack = () => {
navigate(-1);
};

const [{ alarmEventIdList, nickname, afterSituation, beforeSituation }, setAlarmIdList] = useRecoilState(alarmInfoState);

useEffect(() => {
return () => {
console.log('alarmInfoWrapper');
};
}, []);
return (
<ModalPageLayout left={{ icon: ARROW.LEFT, onClick: goBack }} title="">
<AlarmInfo />
{/* Alarminfo mutate Success์‹œ navigate๋กœ ์„ค์ •์„ ํ•ด์ฃผ์—ˆ์Œ์—๋„ AlarmInfo๊ฐ€ unmount๋˜์ง€์•Š๊ณ  ๋ช‡ ์ฐจ๋ก€ ๋‹ค์‹œ ์‹คํ–‰๋˜๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์–ด์„œ ๊ฐ•์ œ๋กœ Trigger๋ฅผ ์ค˜์„œ unmountํ•ด์ฃผ์—ˆ๋‹ค. */}
</ModalPageLayout>
);
};
Expand Down
17 changes: 17 additions & 0 deletions src/store/notificationModalState.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { ConfirmModalType } from '@/constants/Confirm';
import { atom } from 'recoil';

// export interface NotificationModalState {
// isModal: boolean;
// }

type NotificationModalStateType = boolean;

// export const initNotificationModalState = {
// isModal: false,
// };

export const notificationModalState = atom<NotificationModalStateType>({
key: 'notificationModalState',
default: false,
});