diff --git a/src/entities/payment/model/types.ts b/src/entities/payment/model/types.ts index 48ce61f..0a3d7ae 100644 --- a/src/entities/payment/model/types.ts +++ b/src/entities/payment/model/types.ts @@ -136,7 +136,7 @@ export interface GeneralTab { items: Array; }; export interface GeneralTabItems { - id: number; + id: number | null; cardCompany: string; feeRate: number; }; diff --git a/src/shared/@types/global.d.ts b/src/shared/@types/global.d.ts index 1eb43c4..cfa93ec 100644 --- a/src/shared/@types/global.d.ts +++ b/src/shared/@types/global.d.ts @@ -45,5 +45,6 @@ declare global { }; saveToken: (token: LoginResponse) => void; alarmLink: (options: AlarmLinkOptions) => void; + onPressBackKey: () => void; } } \ No newline at end of file diff --git a/src/shared/model/store.ts b/src/shared/model/store.ts index 09da1b2..40ab49e 100644 --- a/src/shared/model/store.ts +++ b/src/shared/model/store.ts @@ -6,6 +6,10 @@ import { createUserInfoStore, UserInfoState } from '@/entities/user/model/store' import { createBannerInfoStore, BannerInfoState, createCommonStore, CommonState } from '@/entities/common/model/store'; import { StorageKeys } from '@/shared/constants/local-storage'; +export interface ModalOnStore { + modalOn: boolean; + setModalOn: (modalOn: boolean) => void; +}; export interface MenuOnStore { menuOn: boolean; setMenuOn: (menuOn: boolean) => void; @@ -21,6 +25,14 @@ export interface MenuIdsStore { deleteMenuId: (menuId: number) => void; }; +export const useModalOnStore = create((set) => ({ + modalOn: false, + setModalOn: (modalOn: boolean) => { + set((state: {modalOn: boolean}) => ({ + modalOn: (state.modalOn = modalOn) + })); + } +})); export const useMenuOnStore = create((set) => ({ menuOn: false, setMenuOn: (menuOn: boolean) => { diff --git a/src/widgets/sub-layout/index.tsx b/src/widgets/sub-layout/index.tsx index 3f57a2d..e65ac50 100644 --- a/src/widgets/sub-layout/index.tsx +++ b/src/widgets/sub-layout/index.tsx @@ -5,7 +5,7 @@ import { useEffect, useState } from 'react'; -import { Outlet } from 'react-router-dom'; +import { Outlet, useLocation } from 'react-router-dom'; import { HeaderNavigation } from '@/widgets/navigation/header'; import { FooterNavigation } from '@/widgets/navigation/footer'; import { PullToRefresh } from '@/widgets/pull-to-refresh/pull-to-refresh'; @@ -18,7 +18,7 @@ import { import { useHomeGroupsMutation } from '@/entities/home/api/use-home-groups-mutation'; import { useUserInfo } from '@/entities/user/lib/use-user-info'; import { useAppBridge } from '@/hooks'; -import { useStore } from '@/shared/model/store'; +import { useMenuOnStore, useStore } from '@/shared/model/store'; import { HomeGroupsParams, HomeGroupsResponse } from '@/entities/home/model/types'; import { BusinessPropertyParams, @@ -67,7 +67,10 @@ export const SubLayout = () => { updateUserData } = useUserInfo(); - const { reload } = useNavigate(); + const { reload, navigateBack } = useNavigate(); + const { menuOn, setMenuOn } = useMenuOnStore(); + const location = useLocation(); + console.log(location) const [isPullToRefreshEnabled, setIsPullToRefreshEnabled] = useState(false); const [onBack, setOnBack] = useState(undefined); @@ -396,8 +399,19 @@ export const SubLayout = () => { } }; + const onPressBackKey = () => { + let pathname = location.pathname; + if(menuOn){ + setMenuOn(false); + } + else{ + navigateBack(); + } + }; + window.saveToken = saveToken; window.alarmLink = alarmLink; + window.onPressBackKey = onPressBackKey; useEffect(() => { handleLogin();