import { ChangeEvent, useEffect, useState } from 'react'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { HeaderType } from '@/entities/common/model/types'; import { useSetHeaderTitle, useSetHeaderType, useSetFooterMode, useSetOnBack } from '@/widgets/sub-layout/use-sub-layout'; import { useExtensionListMutation } from '@/entities/additional-service/api/use-extension-list-mutation'; import { ExtensionListParams, ExtensionListResponse, SERVICE_MAP } from '@/entities/additional-service/model/types'; import { useStore } from '@/shared/model/store'; import { Dialog } from '@/shared/ui/dialogs/dialog'; export const ListPage = () => { const { navigate } = useNavigate(); const midOptions = useStore.getState().UserStore.selectOptionsMids; const userMid = useStore.getState().UserStore.mid; const [mid, setMid] = useState(userMid); const [activeServices, setActiveServices] = useState([]); const [availableServices, setAvailableServices] = useState([]); const [dialogOpen, setDialogOpen] = useState(false); const { mutateAsync: extensionList } = useExtensionListMutation(); useSetHeaderTitle('부가서비스 소개'); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { navigate(PATHS.home); }); const callExtensionList = () => { let params: ExtensionListParams = { mid: mid } extensionList(params).then((rs: ExtensionListResponse) => { setActiveServices(rs.activeExtensionList || []); setAvailableServices(rs.availableExtensionList || []); }); }; const getActiveExtensionList = () => { const filteredServices = SERVICE_MAP.filter(service => activeServices.includes(service.code) ); return filteredServices.map((service) => (
service.path && navigate(service.path)} >
{service.serviceName}

{service.serviceDesc}

{service.serviceName}
)); }; const getAvailableExtensionList = () => { const filteredServices = SERVICE_MAP.filter(service => availableServices.includes(service.code) ); return filteredServices.map((service) => (
setDialogOpen(true)} >
{service.serviceName}

{service.serviceDesc}

{service.serviceName}
)); }; useEffect(() => { if (!!mid) { callExtensionList(); } }, [mid]); return ( <>

사용중인 서비스

{getActiveExtensionList()}

신청 가능한 서비스

{getAvailableExtensionList()}
setDialogOpen(false)} message={ <> 이용 중이지 않은 서비스입니다.
가입 문의는 영업 담당자 또는 고객센터로 문의해 주세요. } buttonLabel={['확인']} onConfirmClick={() => setDialogOpen(false)} afterLeave={() => { }} /> ) };