From 5c43550a22fcedd9e47fa06c9714459c5ffe30e9 Mon Sep 17 00:00:00 2001 From: "focp212@naver.com" Date: Tue, 30 Sep 2025 16:42:09 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/home/home-page.tsx | 142 +-------------------------- src/widgets/navigation/header.tsx | 18 +++- src/widgets/sub-layout/index.tsx | 156 +++++++++++++++++++++++++++--- 3 files changed, 164 insertions(+), 152 deletions(-) diff --git a/src/pages/home/home-page.tsx b/src/pages/home/home-page.tsx index 8880f9d..8e294b0 100644 --- a/src/pages/home/home-page.tsx +++ b/src/pages/home/home-page.tsx @@ -1,14 +1,13 @@ import moment from 'moment'; -import { useCallback, useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { useUserInfo } from '@/entities/user/lib/use-user-info'; import { FavoriteWrapper } from '@/entities/home/ui/favorite-wrapper'; import { DayStatusBox } from '@/entities/home/ui/day-status-box'; import { HomeBottomBanner } from '@/entities/home/ui/home-bottom-banner'; import { AuthRegister } from '@/entities/home/ui/auth-reguster'; import { FooterItemActiveKey } from '@/entities/common/model/types'; -import { useStore } from '@/shared/model/store'; import { StorageKeys } from '@/shared/constants/local-storage'; -import { setLocalStorage, getLocalStorage } from '@/shared/lib/web-view-bridge'; +import { getLocalStorage } from '@/shared/lib/web-view-bridge'; import { useAppBridge } from '@/hooks/useAppBridge'; import { HeaderType } from '@/entities/common/model/types'; import { @@ -19,8 +18,6 @@ import { useSetFavoriteEdit, useSetMenuOn } from '@/widgets/sub-layout/use-sub-layout'; -import { useHomeGroupsMutation } from '@/entities/home/api/use-home-groups-mutation'; -import { HomeGroupsParams, HomeGroupsResponse } from '@/entities/home/model/types'; export const HomePage = () => { const { callLogin } = useUserInfo(); @@ -42,124 +39,9 @@ export const HomePage = () => { const [bottomBannerOn, setBottomBannerOn] = useState(false); const [authRegisterOn, setAuthRegisterOn] = useState(false); - const [loginSuccess, setLoginSuccess] = useState(false); - - const { mutateAsync: homeGroups } = useHomeGroupsMutation(); - - const callHomeGroups = () => { - let userInfo = useStore.getState().UserStore.userInfo; - let params: HomeGroupsParams = { - userid: userInfo.usrid - }; - homeGroups(params).then((rs: HomeGroupsResponse) => { - useStore.getState().UserStore.setUserMids(rs.mids); - let options: Array> = rs.mids.map((value, index) => { - return { - name: value, - value: value - }; - }); - useStore.getState().UserStore.setSelectOptionsMids(options); - }); - }; - /* - const userParmas = { - id: 'thenaun12', - password: 'answjddl1!' - }; - */ - const userParmas = { - id: 'nictest00', - password: 'nictest00' - }; - - const handleRequestToken = useCallback(async () =>{ - console.log('handleRequestToken'); - alert('handleRequestToken'); - requestToken() - .then((token) => { - if (!token) { - // 토큰이 null인 경우 로그아웃 처리 - console.error('Token is null, performing logout'); - useStore.getState().UserStore.resetUserInfo(); - setLoginSuccess(false); - logout(); - return; - } - console.log('token', token); - - setLocalStorage(StorageKeys.Usrid, token.usrid); - setLocalStorage(StorageKeys.TokenType, token.tokenType); - setLocalStorage(StorageKeys.AccessToken, token.accessToken); - setLocalStorage(StorageKeys.RefreshToken, token.refreshToken); - setLocalStorage(StorageKeys.AccessTokenExpiresIn, token.accessTokenExpiresIn); - setLocalStorage(StorageKeys.RefreshTokenExpiresIn, token.refreshTokenExpiresIn); - setLocalStorage(StorageKeys.MenuGrants, token.menuGrants); - setLocalStorage(StorageKeys.ClientAddressIP, token.clientAddressIP); - setLocalStorage(StorageKeys.Requires2FA, token.requires2FA); - - useStore.getState().UserStore.setUserInfo({ - usrid: userParmas.id, - tokenType: token.tokenType, - accessToken: token.accessToken, - refreshToken: token.refreshToken, - accessTokenExpiresIn: token.accessTokenExpiresIn, - refreshTokenExpiresIn: token.refreshTokenExpiresIn, - menuGrants: token.menuGrants, - clientAddressIP: token.clientAddressIP, - requires2FA: token.requires2FA, - }); - - setLoginSuccess(true); - }) - .catch((error) => { - // 토큰 요청 실패 시 로그아웃 처리 - console.error('Failed to request token:', error); - useStore.getState().UserStore.resetUserInfo(); - setLoginSuccess(false); - logout(); - }); - - }, []); - - - - const handleLogin = useCallback(async () =>{ - //let appStart = getLocalStorage(StorageKeys.AppStart); - //if(!!appStart){ - if(false){ - useStore.getState().UserStore.resetUserInfo(); - let tokenType = getLocalStorage(StorageKeys.TokenType); - let accessToken = getLocalStorage(StorageKeys.AccessToken); - let refreshToken = getLocalStorage(StorageKeys.RefreshToken); - let accessTokenExpiresIn = getLocalStorage(StorageKeys.AccessTokenExpiresIn); - let refreshTokenExpiresIn = getLocalStorage(StorageKeys.RefreshTokenExpiresIn); - let menuGrants = getLocalStorage(StorageKeys.TokenType); - // let usrid = getLocalStorage(StorageKeys.Usrid); - - useStore.getState().UserStore.setUserInfo({ - tokenType: tokenType, - accessToken: accessToken, - refreshToken: refreshToken, - accessTokenExpiresIn: accessTokenExpiresIn, - refreshTokenExpiresIn: refreshTokenExpiresIn, - menuGrants: menuGrants, - // usrid: usrid - }); - setLoginSuccess(true); - callHomeGroups(); - } - else{ - callLogin(userParmas).then(() => { - setLoginSuccess(true); - callHomeGroups(); - }); - } - - }, []); + const [loginSuccess, setLoginSuccess] = useState(true); const checkBottomBannerOpen = () => { - console.log('checkBottomBannerOpen'); if(!!bannerToday){ bannerToday = bannerToday.toString(); } @@ -176,23 +58,14 @@ export const HomePage = () => { }).finally(() => { console.log('finally') - // setAuthRegisterOn(true); + setAuthRegisterOn(true); }); }; useEffect(() => { - // handleRequestToken(); - if (isNativeEnvironment) { - handleRequestToken(); - } else { - handleLogin(); - } - checkBottomBannerOpen(); checkAuthRegisterOpen(); - - }, []); const setBottomBannerEffect = (mode: boolean) => { @@ -207,12 +80,7 @@ export const HomePage = () => { } }; - /*useLoginMutation - const [userInfo] = useStore( - useShallow((state) => [state.userSlice.userInfo]), - ); - - */ + // useRefreshUserInfo(); return ( <> diff --git a/src/widgets/navigation/header.tsx b/src/widgets/navigation/header.tsx index 0ca9f27..5cd0fdd 100644 --- a/src/widgets/navigation/header.tsx +++ b/src/widgets/navigation/header.tsx @@ -6,6 +6,8 @@ import { HeaderType, HeaderNavigationProps } from '@/entities/common/model/types'; +import { useStore } from '@/shared/model/store'; +import { useEffect, useState } from 'react'; export const HeaderNavigation = ({ onBack, @@ -15,6 +17,9 @@ export const HeaderNavigation = ({ setMenuOn, favoriteEdit }: HeaderNavigationProps) => { + + let [selectOptions, setSelectOptions] = useState>>([]); + const { navigate, navigateBack @@ -39,6 +44,11 @@ export const HeaderNavigation = ({ const onClickToGoToAlarm = () => { navigate(PATHS.alarm.list); }; + + useEffect(() => { + let mids = useStore.getState().UserStore.selectOptionsMids; + setSelectOptions(mids); + }); return ( <> @@ -64,9 +74,11 @@ export const HeaderNavigation = ({

나이스가맹점관리자

diff --git a/src/widgets/sub-layout/index.tsx b/src/widgets/sub-layout/index.tsx index c34cfbe..326c145 100644 --- a/src/widgets/sub-layout/index.tsx +++ b/src/widgets/sub-layout/index.tsx @@ -1,5 +1,7 @@ import { Fragment, + useCallback, + useEffect, useState } from 'react'; import { Outlet } from 'react-router-dom'; @@ -9,6 +11,13 @@ import { PullToRefresh } from '@/widgets/pull-to-refresh/pull-to-refresh'; import { useNavigate } from '@/shared/lib/hooks'; import { useScrollToTop } from '@/shared/lib/hooks/use-scroll-to-top'; import { HeaderType } from '@/entities/common/model/types'; +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 { getLocalStorage, setLocalStorage } from '@/shared/lib'; +import { StorageKeys } from '@/shared/constants/local-storage'; +import { HomeGroupsParams, HomeGroupsResponse } from '@/entities/home/model/types'; export interface ContextType { setOnBack: (onBack: () => void) => void; @@ -33,7 +42,128 @@ export const SubLayout = () => { const [footerCurrentPage, setFooterCurrentPage] = useState(undefined); const [favoriteEdit, setFavoriteEdit] = useState(false); + const { callLogin } = useUserInfo(); + const { + isNativeEnvironment, + openBiometricRegistrationPopup, + requestToken, + logout + } = useAppBridge(); + const { mutateAsync: homeGroups } = useHomeGroupsMutation(); + const [loginSuccess, setLoginSuccess] = useState(false); + const wrapperClassName = 'wrapper'; + const userParmas = { + id: 'nictest00', + password: 'nictest00' + }; + const handleRequestToken = useCallback(async () =>{ + console.log('handleRequestToken'); + alert('handleRequestToken'); + requestToken().then((token) => { + if(!token) { + // 토큰이 null인 경우 로그아웃 처리 + console.error('Token is null, performing logout'); + useStore.getState().UserStore.resetUserInfo(); + setLoginSuccess(false); + logout(); + return; + } + console.log('token', token); + + setLocalStorage(StorageKeys.Usrid, token.usrid); + setLocalStorage(StorageKeys.TokenType, token.tokenType); + setLocalStorage(StorageKeys.AccessToken, token.accessToken); + setLocalStorage(StorageKeys.RefreshToken, token.refreshToken); + setLocalStorage(StorageKeys.AccessTokenExpiresIn, token.accessTokenExpiresIn); + setLocalStorage(StorageKeys.RefreshTokenExpiresIn, token.refreshTokenExpiresIn); + setLocalStorage(StorageKeys.MenuGrants, token.menuGrants); + setLocalStorage(StorageKeys.ClientAddressIP, token.clientAddressIP); + setLocalStorage(StorageKeys.Requires2FA, token.requires2FA); + + useStore.getState().UserStore.setUserInfo({ + usrid: userParmas.id, + tokenType: token.tokenType, + accessToken: token.accessToken, + refreshToken: token.refreshToken, + accessTokenExpiresIn: token.accessTokenExpiresIn, + refreshTokenExpiresIn: token.refreshTokenExpiresIn, + menuGrants: token.menuGrants, + clientAddressIP: token.clientAddressIP, + requires2FA: token.requires2FA, + }); + + setLoginSuccess(true); + }).catch((error) => { + // 토큰 요청 실패 시 로그아웃 처리 + console.error('Failed to request token:', error); + useStore.getState().UserStore.resetUserInfo(); + setLoginSuccess(false); + logout(); + }); + + }, []); + + const callHomeGroups = () => { + let userInfo = useStore.getState().UserStore.userInfo; + let params: HomeGroupsParams = { + userid: userInfo.usrid + }; + homeGroups(params).then((rs: HomeGroupsResponse) => { + useStore.getState().UserStore.setUserMids(rs.mids); + let options: Array> = rs.mids.map((value, index) => { + return { + name: value, + value: value + }; + }); + useStore.getState().UserStore.setSelectOptionsMids(options); + }); + }; + + + const handleLogin = useCallback(async () =>{ + //let appStart = getLocalStorage(StorageKeys.AppStart); + //if(!!appStart){ + if(false){ + useStore.getState().UserStore.resetUserInfo(); + let tokenType = getLocalStorage(StorageKeys.TokenType); + let accessToken = getLocalStorage(StorageKeys.AccessToken); + let refreshToken = getLocalStorage(StorageKeys.RefreshToken); + let accessTokenExpiresIn = getLocalStorage(StorageKeys.AccessTokenExpiresIn); + let refreshTokenExpiresIn = getLocalStorage(StorageKeys.RefreshTokenExpiresIn); + let menuGrants = getLocalStorage(StorageKeys.TokenType); + // let usrid = getLocalStorage(StorageKeys.Usrid); + + useStore.getState().UserStore.setUserInfo({ + tokenType: tokenType, + accessToken: accessToken, + refreshToken: refreshToken, + accessTokenExpiresIn: accessTokenExpiresIn, + refreshTokenExpiresIn: refreshTokenExpiresIn, + menuGrants: menuGrants, + // usrid: usrid + }); + setLoginSuccess(true); + callHomeGroups(); + } + else{ + callLogin(userParmas).then(() => { + setLoginSuccess(true); + callHomeGroups(); + }); + } + + }, []); + + useEffect(() => { + // handleRequestToken(); + if (isNativeEnvironment) { + handleRequestToken(); + } else { + handleLogin(); + } + }, []); return ( { headerType={ headerType } favoriteEdit={ favoriteEdit } /> - + { loginSuccess && + + } { footerMode &&