diff --git a/src/entities/settlement/ui/list-wrap.tsx b/src/entities/settlement/ui/list-wrap.tsx index ccf17c6..642abcc 100644 --- a/src/entities/settlement/ui/list-wrap.tsx +++ b/src/entities/settlement/ui/list-wrap.tsx @@ -38,7 +38,7 @@ import { checkGrant } from '@/shared/lib/check-grant'; import { snackBar } from '@/shared/lib'; import { useSettlementsHistoryExcelMutation } from '../api/use-settlements-history-excel-mutation'; import { VatReturnDownloadExcelResponse } from '@/entities/vat-return/model/types'; -import { useStore } from '@/shared/model/store'; +import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store'; export interface ListWrapProps { startDateFromCalendar?: string; @@ -67,7 +67,7 @@ export const ListWrap = ({ const [sortType, setSortType] = useState(SortTypeKeys.LATEST); const [settlementDateListItems, setSettlementDateListItems] = useState>([]); const [transactionDatelistItems, setTransactionDateListItems] = useState>([]); - const [filterOn, setFilterOn] = useState(false); + const { filterOn, setFilterOn } = useFilterlOnStore(); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [mid, setMid] = useState(userMid); const [periodType, setPeriodType] = useState(defaultParams.periodType); @@ -88,7 +88,7 @@ export const ListWrap = ({ const [preSettlementCancelOffset, setPreSettlementCancelOffset] = useState(); const [isOpenSummary, setIsOpenSummary] = useState(false); - const [detailOn, setDetailOn] = useState(false); + const { detailOn, setDetailOn } = useDetailOnStore(); const [detailSettlementId, setDetailSettlementId] = useState(''); const [detailTid, setDetailTid] = useState(''); diff --git a/src/entities/transaction/ui/all-transaction-cancel.tsx b/src/entities/transaction/ui/all-transaction-cancel.tsx index a28878f..0d42b3b 100644 --- a/src/entities/transaction/ui/all-transaction-cancel.tsx +++ b/src/entities/transaction/ui/all-transaction-cancel.tsx @@ -9,7 +9,7 @@ import { useEffect, useState } from 'react'; import { useAllTransactioCancleMutation } from '../api/use-all-transaction-cancel-mutation'; import { useAllTransactioCancleInfoMutation } from '../api/use-all-transaction-cancel-info-mutation'; import { snackBar } from '@/shared/lib'; -import { useStore } from '@/shared/model/store'; +import { useStore, useTransactionCancelPreventBondOnStore } from '@/shared/model/store'; export interface AllTransactionCancelProps { cancelOn: boolean; @@ -55,7 +55,7 @@ export const AllTransactionCancel = ({ const [accountNo, setAccountNo] = useState(''); const [accountHolder, setAccountHolder] = useState(''); - const [cancelPreventBondOn, setCancelPreventBondOn] = useState(false); + const {cancelPreventBondOn, setCancelPreventBondOn} = useTransactionCancelPreventBondOnStore(); const { mutateAsync: transactionCancel } = useAllTransactioCancleMutation(); const { mutateAsync: allTransactionCancelInfo } = useAllTransactioCancleInfoMutation(); diff --git a/src/entities/transaction/ui/detail/all-transaction-detail.tsx b/src/entities/transaction/ui/detail/all-transaction-detail.tsx index f9394c5..38065b5 100644 --- a/src/entities/transaction/ui/detail/all-transaction-detail.tsx +++ b/src/entities/transaction/ui/detail/all-transaction-detail.tsx @@ -34,6 +34,7 @@ import { checkGrant } from '@/shared/lib/check-grant'; import { showAlert } from '@/widgets/show-alert'; import { snackBar } from '@/shared/lib'; import { AllTransactionCancel } from '../all-transaction-cancel'; +import { useTransactionCancelOnStore } from '@/shared/model/store'; export interface AllTransactionDetailProps { detailOn: boolean; @@ -65,7 +66,7 @@ export const AllTransactionDetail = ({ const [showSettlementInfo, setShowSettlementInfo] = useState(false); const [showPartCancelInfo, setShowPartCancelInfo] = useState(false); - const [cancelOn, setCancelOn] = useState(false); + const { transactionCancelOn, setTransactionCancelOn } = useTransactionCancelOnStore(); const { mutateAsync: allTransactionDetail } = useAllTransactionDetailMutation(); const callDetail = () => { @@ -88,7 +89,7 @@ export const AllTransactionDetail = ({ }); }; const onClickToMoveCancel = () => { - setCancelOn(true); + setTransactionCancelOn(true); }; useEffect(() => { if(!!detailOn && serviceCode && tid){ @@ -240,10 +241,10 @@ export const AllTransactionDetail = ({ >{t('transaction.cancelTransaction')} - { !!cancelOn && + { !!transactionCancelOn && diff --git a/src/entities/vat-return/ui/list-wrap.tsx b/src/entities/vat-return/ui/list-wrap.tsx index 4cdc524..80389b6 100644 --- a/src/entities/vat-return/ui/list-wrap.tsx +++ b/src/entities/vat-return/ui/list-wrap.tsx @@ -18,7 +18,7 @@ import { } from '../model/types'; import { useVatReturnListMutation } from '../api/use-vat-return-list-mutation'; import { ListDateGroup } from './list-date-group'; -import { useStore } from '@/shared/model/store'; +import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store'; import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/download-bottom-sheet'; import useIntersectionObserver from '@/widgets/intersection-observer'; import { TaxInvoiceDetail } from './detail/tax-invoice-detail'; @@ -40,7 +40,7 @@ export const ListWrap = () => { const userMid = useStore.getState().UserStore.mid; const [onActionIntersect, setOnActionIntersect] = useState(false); - const [filterOn, setFilterOn] = useState(false); + const { filterOn, setFilterOn } = useFilterlOnStore(); const [sortType, setSortType] = useState(SortTypeKeys.LATEST); const [listItems, setListItems] = useState>([]); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); @@ -52,7 +52,7 @@ export const ListWrap = () => { const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState(false); - const [detailOn, setDetailOn] = useState(false); + const { detailOn, setDetailOn } = useDetailOnStore(); const [detailTaxInvoiceNumber, setDetailTaxInvoiceNumber] = useState(''); const [groupDate, setGroupDate] = useState(''); diff --git a/src/pages/transaction/all-transaction/list-page.tsx b/src/pages/transaction/all-transaction/list-page.tsx index e915cb0..59effac 100644 --- a/src/pages/transaction/all-transaction/list-page.tsx +++ b/src/pages/transaction/all-transaction/list-page.tsx @@ -1,5 +1,5 @@ import moment from 'moment'; -import { useDetailOnStore, useStore } from '@/shared/model/store'; +import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store'; import { ChangeEvent, useEffect, useState } from 'react'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { PATHS } from '@/shared/constants/paths'; @@ -66,7 +66,7 @@ export const AllTransactionListPage = () => { const [onActionIntersect, setOnActionIntersect] = useState(false); const [sortType, setSortType] = useState(SortTypeKeys.LATEST); const [listItems, setListItems] = useState>([]); - const [filterOn, setFilterOn] = useState(false); + const { filterOn, setFilterOn } = useFilterlOnStore(); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [mid, setMid] = useState(userMid); const [moid, setMoid] = useState(defaultParams.moid); diff --git a/src/pages/transaction/billing/list-page.tsx b/src/pages/transaction/billing/list-page.tsx index bfaa29c..01a41d2 100644 --- a/src/pages/transaction/billing/list-page.tsx +++ b/src/pages/transaction/billing/list-page.tsx @@ -1,7 +1,7 @@ import moment from 'moment'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { useDetailOnStore, useStore } from '@/shared/model/store'; +import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; @@ -59,7 +59,7 @@ export const BillingListPage = () => { const [onActionIntersect, setOnActionIntersect] = useState(false); const [sortType, setSortType] = useState(SortTypeKeys.LATEST); const [listItems, setListItems] = useState>([]); - const [filterOn, setFilterOn] = useState(false); + const { filterOn, setFilterOn } = useFilterlOnStore(); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [mid, setMid] = useState(userMid); const [searchType, setSearchType] = useState(defaultParams.searchType); diff --git a/src/pages/transaction/cash-receipt/list-page.tsx b/src/pages/transaction/cash-receipt/list-page.tsx index f384dec..ded8b3a 100644 --- a/src/pages/transaction/cash-receipt/list-page.tsx +++ b/src/pages/transaction/cash-receipt/list-page.tsx @@ -33,7 +33,7 @@ import { useSetFooterMode } from '@/widgets/sub-layout/use-sub-layout'; import { getCashReceiptTransactionTypeBtnGroup } from '@/entities/transaction/model/contant'; -import { useDetailOnStore, useStore } from '@/shared/model/store'; +import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store'; import { useCashReceiptSummaryMutation } from '@/entities/transaction/api/use-cash-receipt-summary-mutation'; import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/download-bottom-sheet'; import useIntersectionObserver from '@/widgets/intersection-observer'; @@ -62,7 +62,7 @@ export const CashReceiptListPage = () => { const [onActionIntersect, setOnActionIntersect] = useState(false); const [sortType, setSortType] = useState(SortTypeKeys.LATEST); const [listItems, setListItems] = useState>([]); - const [filterOn, setFilterOn] = useState(false); + const { filterOn, setFilterOn } = useFilterlOnStore(); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [mid, setMid] = useState(userMid); const [startDate, setStartDate] = useState(moment().format('YYYYMMDD')); diff --git a/src/pages/transaction/escrow/list-page.tsx b/src/pages/transaction/escrow/list-page.tsx index 5799dc1..de51b61 100644 --- a/src/pages/transaction/escrow/list-page.tsx +++ b/src/pages/transaction/escrow/list-page.tsx @@ -1,7 +1,7 @@ import moment from 'moment'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { useDetailOnStore, useStore } from '@/shared/model/store'; +import { useDetailOnStore, useFilterlOnStore, useStore } from '@/shared/model/store'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; @@ -59,7 +59,7 @@ export const EscrowListPage = () => { const [onActionIntersect, setOnActionIntersect] = useState(false); const [sortType, setSortType] = useState(SortTypeKeys.LATEST); const [listItems, setListItems] = useState>([]); - const [filterOn, setFilterOn] = useState(false); + const { filterOn, setFilterOn } = useFilterlOnStore(); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [mid, setMid] = useState(userMid); const [searchType, setSearchType] = useState(EscrowSearchType.ALL); diff --git a/src/shared/model/store.ts b/src/shared/model/store.ts index 8b3034e..d41129e 100644 --- a/src/shared/model/store.ts +++ b/src/shared/model/store.ts @@ -6,9 +6,18 @@ 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 FilterOnStore { + filterOn: boolean; + setFilterOn: (filterOn: boolean) => void; +}; + +export interface TransactionCancelPreventBondOnStore { + cancelPreventBondOn: boolean; + setCancelPreventBondOn: (cancelPreventBondOn: boolean) => void; +}; +export interface TransactionCancelOnStore { + transactionCancelOn: boolean; + setTransactionCancelOn: (modalOn: boolean) => void; }; export interface DetailOnStore { detailOn: boolean; @@ -29,11 +38,27 @@ 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 useFilterlOnStore = create((set) => ({ + filterOn: false, + setFilterOn: (filterOn: boolean) => { + set((state: {filterOn: boolean}) => ({ + filterOn: (state.filterOn = filterOn) + })); + } +})); +export const useTransactionCancelPreventBondOnStore = create((set) => ({ + cancelPreventBondOn: false, + setCancelPreventBondOn: (cancelPreventBondOn: boolean) => { + set((state: {cancelPreventBondOn: boolean}) => ({ + cancelPreventBondOn: (state.cancelPreventBondOn = cancelPreventBondOn) + })); + } +})); +export const useTransactionCancelOnStore = create((set) => ({ + transactionCancelOn: false, + setTransactionCancelOn: (transactionCancelOn: boolean) => { + set((state: {transactionCancelOn: boolean}) => ({ + transactionCancelOn: (state.transactionCancelOn = transactionCancelOn) })); } })); diff --git a/src/widgets/sub-layout/index.tsx b/src/widgets/sub-layout/index.tsx index 73f81e2..c18ba41 100644 --- a/src/widgets/sub-layout/index.tsx +++ b/src/widgets/sub-layout/index.tsx @@ -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 { useDetailOnStore, useFavoriteEditOnStore, useMenuOnStore, useStore } from '@/shared/model/store'; +import { useDetailOnStore, useFavoriteEditOnStore, useFilterlOnStore, useMenuOnStore, useStore, useTransactionCancelOnStore, useTransactionCancelPreventBondOnStore } from '@/shared/model/store'; import { HomeGroupsParams, HomeGroupsResponse } from '@/entities/home/model/types'; import { BusinessPropertyParams, @@ -68,9 +68,13 @@ export const SubLayout = () => { } = useUserInfo(); const { reload, navigateBack } = useNavigate(); + const { menuOn, setMenuOn } = useMenuOnStore(); const { favoriteEditOn, setFavoriteEditOn } = useFavoriteEditOnStore(); const { detailOn, setDetailOn } = useDetailOnStore(); + const { transactionCancelOn, setTransactionCancelOn } = useTransactionCancelOnStore(); + const { cancelPreventBondOn, setCancelPreventBondOn } = useTransactionCancelPreventBondOnStore(); + const { filterOn, setFilterOn } = useFilterlOnStore(); const location = useLocation(); console.log(location) @@ -405,16 +409,31 @@ export const SubLayout = () => { const pressBackKey = () => { let pathname = location.pathname; console.log('pathname = [' + pathname + ']'); - if(menuOn){ - setMenuOn(false); - setFavoriteEditOn(false); - } - else if(detailOn){ - setDetailOn(false); + if(pathname === '/home'){ + } else{ - navigateBack(); + if(menuOn){ + setMenuOn(false); + setFavoriteEditOn(false); + } + else if(cancelPreventBondOn){ + setCancelPreventBondOn(false); + } + else if(transactionCancelOn){ + setTransactionCancelOn(false); + } + else if(detailOn){ + setDetailOn(false); + } + else if(filterOn){ + setFilterOn(false); + } + else{ + navigateBack(); + } } + }; window.saveToken = saveToken;