diff --git a/build20240126.zip b/build20240126.zip new file mode 100644 index 0000000..22353ee Binary files /dev/null and b/build20240126.zip differ diff --git a/src/auth/index.js b/src/auth/index.js index 7392f0c..2d7c611 100644 --- a/src/auth/index.js +++ b/src/auth/index.js @@ -26,7 +26,7 @@ export const handleLogin = data => { refreshToken: data['refreshToken'] }) - console.log(data) + // console.log(data) // ** Add to user, accessToken & refreshToken to localStorage localStorage.setItem('userData', JSON.stringify(data)) localStorage.setItem('accessToken', data.accessToken) @@ -160,37 +160,41 @@ export const SetupAxiosInterceptors = () => { throw refreshError; }); } else { - // if (error.response.status === 401) { - // await dispatch(handleLogoutFunction()); - // await navigate('/login'); - // await window.location.reload(); - // } - if (error.response.status === 401) { - if (localStorage.getItem("expiredAlertShown") === null) { - localStorage.setItem("expiredAlertShown", true) - alert("登入驗證已過期,請重新登入。") + if (isUserLoggedIn()){ + if (error.response.status === 401) { + if (localStorage.getItem("expiredAlertShown") === null) { + localStorage.setItem("expiredAlertShown", true) + alert("登入驗證已過期,請重新登入。") + } + } - - } - - // ** if (status === 401) { - if (response.status === 401) { - if (localStorage.getItem("expiredAlertShown") === null) { - localStorage.setItem("expiredAlertShown", true) - alert("登入驗證已過期,請重新登入。") + + // ** if (status === 401) { + if (response.status === 401) { + if (localStorage.getItem("expiredAlertShown") === null) { + localStorage.setItem("expiredAlertShown", true) + alert("登入驗證已過期,請重新登入。") + } } - } - - if (response && response.status === 401) { - if (localStorage.getItem("expiredAlertShown") === null) { - localStorage.setItem("expiredAlertShown", true) - alert("登入驗證已過期,請重新登入。") + + if (response && response.status === 401) { + if (localStorage.getItem("expiredAlertShown") === null) { + localStorage.setItem("expiredAlertShown", true) + alert("登入驗證已過期,請重新登入。") + } + } + + if (localStorage.getItem("expiredAlertShown")) { + await dispatch(handleLogoutFunction()); + await navigate('/login'); + await window.location.reload(); + } + } else { + if (error.response.status === 401) { + await dispatch(handleLogoutFunction()); + await navigate('/login'); + // await window.location.reload(); } - } - - if (localStorage.getItem("expiredAlertShown")) { - dispatch(handleLogoutFunction()); - navigate('/login'); } } diff --git a/src/auth/utils.js b/src/auth/utils.js index 869d555..839444c 100644 --- a/src/auth/utils.js +++ b/src/auth/utils.js @@ -44,7 +44,7 @@ export const getNonce = () => { }; export const getBowserType = () => { - console.log(navigator.userAgent) + // console.log(navigator.userAgent) // const regex = /Mobi|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Mi|huawei|Opera Mini|SAMSUNG|Samsung|SGH-[I|N|T]|GT-[I|N]|SM-[A|N|P|T|Z]|SHV-E|SCH-[I|J|R|S]|SPH-L/i; // if(!regex.test(navigator.userAgent)) if (navigator.userAgent.indexOf("Edg") != -1) { diff --git a/src/components/AutoLogoutProvider.js b/src/components/AutoLogoutProvider.js index b8891c0..27ccd6b 100644 --- a/src/components/AutoLogoutProvider.js +++ b/src/components/AutoLogoutProvider.js @@ -1,7 +1,7 @@ import React, { createContext, useState, useEffect } from 'react'; import {useNavigate} from "react-router-dom"; //import axios from "axios"; -// import {getUserData} from "../auth/utils"; +// import {getUserData} from "auth/utils"; // import {isObjEmpty} from "../utils/Utils"; import {useIdleTimer} from "react-idle-timer"; import { handleLogoutFunction } from 'auth/index'; @@ -51,14 +51,15 @@ const AutoLogoutProvider = ({ children }) => { const lastActiveTab = isLastActiveTab() === null ? 'loading' : isLastActiveTab() //const tabId = getTabId() === null ? 'loading' : getTabId().toString() - useEffect(() => { - // const userData = getUserData(); - if(isUserLoggedIn()){ + const getLogoutInterval = () =>{ + if(isUserLoggedIn()&&logoutInterval===1){ //TODO: get auto logout time here if(isGLDLoggedIn()){ setLogoutInterval(240); + console.log("Set Logout Interval: 240") }else{ setLogoutInterval(60); + console.log("Set Logout Interval: 60") } // axios.get(`${apiPath}${GET_IDLE_LOGOUT_TIME}`, // ) @@ -74,11 +75,17 @@ const AutoLogoutProvider = ({ children }) => { // }); } else{ + if(!isUserLoggedIn()&&logoutInterval>1){ + setLogoutInterval(1); + } //navigate('/login'); } - }, []); + } useEffect(() => { + getLogoutInterval() + // console.log("AutoLogoutProvider Start") + // console.log(logoutInterval) const interval = setInterval(async () => { const currentTime = Date.now(); getRemainingTime(); @@ -91,6 +98,7 @@ const AutoLogoutProvider = ({ children }) => { alert("登入驗證已過期,請重新登入。") dispatch(handleLogoutFunction()); navigate('/login'); + window.location.reload(); } } } diff --git a/src/pages/GFMIS/index.js b/src/pages/GFMIS/index.js index f7aadd7..30a5f20 100644 --- a/src/pages/GFMIS/index.js +++ b/src/pages/GFMIS/index.js @@ -42,7 +42,7 @@ const Index = () => { }, [record]); React.useEffect(() => { - console.log(searchCriteria) + // console.log(searchCriteria) loadGrid(); }, [searchCriteria]); @@ -57,14 +57,14 @@ const Index = () => { } function downloadXML(input) { - console.log(input) + // console.log(input) HttpUtils.get({ url: UrlUtils.GEN_GFMIS_XML + "/today", params:{dateTo: input.dateTo, dateFrom: input.dateFrom, }, onSuccess: (responseData) => { - console.log(responseData) + // console.log(responseData) const parser = new DOMParser(); const xmlDoc = parser.parseFromString(responseData, 'application/xml'); const filename = xmlDoc.querySelector('FileHeader').getAttribute('H_Filename'); diff --git a/src/pages/Organization/DetailPage/index.js b/src/pages/Organization/DetailPage/index.js index c53350d..d92ce33 100644 --- a/src/pages/Organization/DetailPage/index.js +++ b/src/pages/Organization/DetailPage/index.js @@ -54,7 +54,7 @@ const OrganizationDetailPage = () => { const notCreditor = locale === 'en' ?"No":locale === 'zh-HK' ?"否":"否"; React.useEffect(() => { - console.log(formData); + // console.log(formData); if (isINDLoggedIn()||isORGLoggedIn()&&!isPrimaryLoggedIn()){ navigate('/dashboard'); }else{ @@ -70,7 +70,7 @@ const OrganizationDetailPage = () => { HttpUtils.get({ url: UrlUtils.GET_ORG_PATH + "/" + params.id, onSuccess: function (response) { - console.log(response) + // console.log(response) response.data["country"] = getObjectByValue(ComboData.country, "key", response.data.addressTemp?.country); response.data["district"] = getObjectByValue(ComboData.district, "key", response.data.addressTemp?.district); response.data["addressLine1"] = response.data.addressTemp?.addressLine1; @@ -94,7 +94,7 @@ const OrganizationDetailPage = () => { HttpUtils.get({ url: UrlUtils.GET_PUB_ORG_PATH, onSuccess: function (response) { - console.log(response) + // console.log(response) response.data["creditor"] = response.data.creditor!=null?response.data.creditor?isCreditor:notCreditor:notCreditor; response.data["country"] = getObjectByValue(ComboData.country, "key", response.data.addressTemp?.country); response.data["district"] = getObjectByValue(ComboData.district, "key", response.data.addressTemp?.district); diff --git a/src/pages/Organization/DetailPage_FromUser/index.js b/src/pages/Organization/DetailPage_FromUser/index.js index b22849a..32ce97c 100644 --- a/src/pages/Organization/DetailPage_FromUser/index.js +++ b/src/pages/Organization/DetailPage_FromUser/index.js @@ -24,7 +24,7 @@ const OrganizationDetailPage_FromUser = () => { useEffect(()=>{ - console.log(formData); + // console.log(formData); loadData(); },[]); diff --git a/src/pages/Payment/Details_Public/index.js b/src/pages/Payment/Details_Public/index.js index d851721..f6cd8b3 100644 --- a/src/pages/Payment/Details_Public/index.js +++ b/src/pages/Payment/Details_Public/index.js @@ -4,7 +4,7 @@ import { Typography, Stack, Box, - // Button + Button } from '@mui/material'; import * as UrlUtils from "utils/ApiPathConst"; import * as React from "react"; @@ -17,6 +17,7 @@ import Loadable from 'components/Loadable'; const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); const PaymentDetails = Loadable(React.lazy(() => import('./PaymentDetails'))); const DataGrid = Loadable(React.lazy(() => import('./DataGrid'))); +import ForwardIcon from '@mui/icons-material/Forward'; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' import {FormattedMessage} from "react-intl"; const BackgroundHead = { @@ -34,6 +35,7 @@ const BackgroundHead = { const Index = () => { const params = useParams(); const navigate = useNavigate() + const intl = useIntl(); const [record, setRecord] = React.useState(); const [itemList, setItemList] = React.useState([]); @@ -99,6 +101,15 @@ const Index = () => { + + + {/*row 1*/} diff --git a/src/pages/Payment/MultiPaymentWindow.js b/src/pages/Payment/MultiPaymentWindow.js index a962987..30cad6a 100644 --- a/src/pages/Payment/MultiPaymentWindow.js +++ b/src/pages/Payment/MultiPaymentWindow.js @@ -89,7 +89,7 @@ const MultiPaymentWindow = (props) => { // }, [availableMethodData]); useEffect(() => { - console.log(paymentMethod) + // console.log(paymentMethod) // const subtype = (paymentMethod === "Visa" || paymentMethod === "MasterCard" || paymentMethod === "JCB" || paymentMethod === "UnionPay") ? "CreditCard" : paymentMethod; // const filteredPaymentMethod = availableMethodData.filter(obj => obj.subtype === subtype); const filteredPaymentMethod = availableMethodData.filter(obj => { @@ -98,7 +98,7 @@ const MultiPaymentWindow = (props) => { } return obj.subtype === paymentMethod; }); - console.log(filteredPaymentMethod) + // console.log(filteredPaymentMethod) setFilteredPaymentMethod(filteredPaymentMethod); setFpsClass(paymentMethod == "FPS" || paymentMethod == "" ? "" : "grayscale") diff --git a/src/pages/Payment/index.js b/src/pages/Payment/index.js index 9324740..dd2291a 100644 --- a/src/pages/Payment/index.js +++ b/src/pages/Payment/index.js @@ -301,7 +301,7 @@ const Index = () => { } useEffect(() => { - console.log(availableMethods) + // console.log(availableMethods) if (availableMethods.length > 0) { availableMethods.forEach((method) => { if (method.subtype === "FPS") { diff --git a/src/pages/authentication/auth-forms/AuthLoginCustom.js b/src/pages/authentication/auth-forms/AuthLoginCustom.js index 59f85f8..771c143 100644 --- a/src/pages/authentication/auth-forms/AuthLoginCustom.js +++ b/src/pages/authentication/auth-forms/AuthLoginCustom.js @@ -76,7 +76,7 @@ const AuthLoginCustom = () => { useJwt .login({ username: values.username, password: values.password }) .then((response) => { - console.log(response) + // console.log(response) const userData = { id: response.data.id, fullenName: response.data.name, @@ -86,14 +86,24 @@ const AuthLoginCustom = () => { role: response.data.role, abilities: response.data.abilities, creditor: response.data.creditor, + locale: response.data.preferLocale, //avatar: require('src/assets/images/users/avatar-3.png').default, } const data = { ...userData, accessToken: response.data.accessToken, refreshToken: response.data.refreshToken } // setSuccess(true) - console.log(response.data.role); + // console.log(response.data); if(response.data.type === "GLD"){ setLocale("en"); localStorage.setItem('locale','en'); + }else{ + if (response.data.preferLocale ==="zh_HK"){ + setLocale("zh-HK"); + localStorage.setItem('locale','zh-HK'); + } + if (response.data.preferLocale ==="zh-CN"){ + setLocale("zh-CN"); + localStorage.setItem('locale','zh-CN'); + } } dispatch(handleLogin(data)) navigate('/dashboard'); diff --git a/src/pages/authentication/auth-forms/BusCustomFormWizard.js b/src/pages/authentication/auth-forms/BusCustomFormWizard.js index d7f0149..438542b 100644 --- a/src/pages/authentication/auth-forms/BusCustomFormWizard.js +++ b/src/pages/authentication/auth-forms/BusCustomFormWizard.js @@ -220,7 +220,7 @@ const BusCustomFormWizard = (props) => { }; const handleCheckBoxChange = (event) => { - console.log(event.target) + // console.log(event.target) if (event.target.name == 'termsAndConAccept') { setTermsAndConAccept(event.target.checked) setTermsAndConNotAccept(!event.target.checked) @@ -295,8 +295,8 @@ const BusCustomFormWizard = (props) => { saveFileList.push(file) updateList.items.add(file); } - console.log("currentIndex") - console.log(currentIndex) + // console.log("currentIndex") + // console.log(currentIndex) } let updatedFileList = updateList.files; @@ -391,8 +391,10 @@ const BusCustomFormWizard = (props) => { "Content-Type": "multipart/form-data" } }) - .then((response) => { - console.log(response) + .then(( + // response + ) => { + // console.log(response) setCheckUpload(true) setLoding(false); }) diff --git a/src/pages/authentication/auth-forms/CustomFormWizard.js b/src/pages/authentication/auth-forms/CustomFormWizard.js index b42bda4..ae5e2bd 100644 --- a/src/pages/authentication/auth-forms/CustomFormWizard.js +++ b/src/pages/authentication/auth-forms/CustomFormWizard.js @@ -1,26 +1,21 @@ -import { useEffect, useState, } from 'react'; +import { useEffect, useState } from 'react'; // material-ui import { Box, - Button, - FormControl, - FormHelperText, + Button, Checkbox + // MenuItem + , FormControl, FormGroup, FormHelperText, Grid, IconButton, InputAdornment, InputLabel, OutlinedInput, - Stack, - Typography, - FormGroup, - TextField, - Checkbox - // MenuItem + Stack, TextField, Typography } from '@mui/material'; -import { useForm, } from 'react-hook-form' import Autocomplete from "@mui/material/Autocomplete"; +import { useForm } from 'react-hook-form'; // third party -import { useFormik, FormikProvider } from 'formik'; +import { FormikProvider, useFormik } from 'formik'; import * as yup from 'yup'; // import axios from "axios"; @@ -29,7 +24,7 @@ import * as yup from 'yup'; import { strengthColorChi, strengthIndicator } from 'utils/password-strength'; // import {apiPath} from "auth/utils"; import axios from "axios"; -import { POST_PUBLIC_USER_REGISTER, POST_CAPTCHA, GET_USERNAME, GET_USER_EMAIL } from "utils/ApiPathConst"; +import { GET_USERNAME, GET_USER_EMAIL, POST_CAPTCHA, POST_PUBLIC_USER_REGISTER } from "utils/ApiPathConst"; // import * as HttpUtils from 'utils/HttpUtils'; import * as ComboData from "utils/ComboData"; @@ -44,15 +39,15 @@ const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingCo // assets import { EyeInvisibleOutlined, EyeOutlined } from '@ant-design/icons'; // import { Paper } from '../../../../node_modules/@mui/material/index'; -import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; +import { ThemeProvider } from "@emotion/react"; import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined'; -import { Link } from 'react-router-dom'; -import * as HttpUtils from "../../../utils/HttpUtils"; +import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; import LoopIcon from '@mui/icons-material/Loop'; import { useTheme } from '@mui/material/styles'; -import {PNSPS_LONG_BUTTON_THEME} from "../../../themes/buttonConst"; -import {ThemeProvider} from "@emotion/react"; -import {FormattedMessage, useIntl} from "react-intl"; +import { FormattedMessage, useIntl } from "react-intl"; +import { Link } from 'react-router-dom'; +import { PNSPS_LONG_BUTTON_THEME } from "../../../themes/buttonConst"; +import * as HttpUtils from "../../../utils/HttpUtils"; // ============================|| FIREBASE - REGISTER ||============================ // @@ -316,7 +311,7 @@ const CustomFormWizard = (props) => { values.idDocType = selectedIdDocType.type values.address4 = selectedAddress4==null?"":selectedAddress4.key values.address5 = selectedAddress5.key - console.log(values) + // console.log(values) const userAddress = { "addressLine1": "", "addressLine2": "", @@ -386,8 +381,10 @@ const CustomFormWizard = (props) => { "Content-Type": "multipart/form-data" } }) - .then((response) => { - console.log(response) + .then(( + // response + ) => { + // console.log(response) setCheckUpload(true) setLoding(false); }) diff --git a/src/pages/authentication/auth-forms/UploadFileTable.js b/src/pages/authentication/auth-forms/UploadFileTable.js index b4dd0cc..21cc7af 100644 --- a/src/pages/authentication/auth-forms/UploadFileTable.js +++ b/src/pages/authentication/auth-forms/UploadFileTable.js @@ -1,11 +1,11 @@ // material-ui -import * as React from 'react'; +import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline'; import { DataGrid, GridActionsCellItem, GridRowModes } from "@mui/x-data-grid"; -import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline'; +import * as React from 'react'; import { useEffect } from "react"; // import {useNavigate} from "react-router-dom"; // import { useTheme } from '@mui/material/styles'; @@ -14,7 +14,7 @@ import { Stack, Typography } from '@mui/material'; -import {FormattedMessage} from "react-intl"; +import { FormattedMessage } from "react-intl"; // ==============================|| EVENT TABLE ||============================== // export default function UploadFileTable({ recordList, setUpdateRows, }) { @@ -46,10 +46,10 @@ export default function UploadFileTable({ recordList, setUpdateRows, }) { ...rowModesModel, [id]: { mode: GridRowModes.View, ignoreModifications: true }, }); - console.log("Starting Delete") - const editedRow = rows.find((row) => row.id === id); - console.log(editedRow) - console.log(editedRow.isNew) + // console.log("Starting Delete") + // const editedRow = rows.find((row) => row.id === id); + // console.log(editedRow) + // console.log(editedRow.isNew) setUpdateRows(rows.filter((row) => row.id !== id)); setRows(rows.filter((row) => row.id !== id)); } diff --git a/src/pages/iAmSmart/AuthCallback/index.js b/src/pages/iAmSmart/AuthCallback/index.js index b83ba04..cf89e89 100644 --- a/src/pages/iAmSmart/AuthCallback/index.js +++ b/src/pages/iAmSmart/AuthCallback/index.js @@ -43,9 +43,23 @@ const Index = () => { role: responseData.role, abilities: responseData.abilities, creditor: responseData.creditor, + locale: responseData.preferLocale, //avatar: require('src/assets/images/users/avatar-3.png').default, } const data = { ...userData, accessToken: responseData.accessToken, refreshToken: responseData.refreshToken } + if(responseData.type === "GLD"){ + setLocale("en"); + localStorage.setItem('locale','en'); + }else{ + if (responseData.preferLocale ==="zh_HK"){ + setLocale("zh-HK"); + localStorage.setItem('locale','zh-HK'); + } + if (responseData.preferLocale ==="zh-CN"){ + setLocale("zh-CN"); + localStorage.setItem('locale','zh-CN'); + } + } dispatch(handleLogin(data)) navigate('/dashboard'); },