From 0d226a051af1c0360bb682fd623df731bf9b4504 Mon Sep 17 00:00:00 2001 From: hsuifang Date: Fri, 27 Sep 2024 14:27:36 +0800 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20Remove=20the=20selection=20of=20li?= =?UTF-8?q?ving=20city=20-=20=E9=87=A3=E9=AD=9A=E8=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- constants/areas.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/constants/areas.js b/constants/areas.js index cb323329..b756b961 100644 --- a/constants/areas.js +++ b/constants/areas.js @@ -304,22 +304,9 @@ export const TAIWAN_DISTRICT = [ zip: '272', name: '南澳鄉', }, - { - zip: '290', - name: '釣魚臺', - }, ], name: '宜蘭縣', }, - { - districts: [ - { - zip: '290', - name: '釣魚臺', - }, - ], - name: '釣魚臺', - }, { districts: [ { From 157618b21d188d86c1a69053e975befec7af6e4b Mon Sep 17 00:00:00 2001 From: hsuifang Date: Fri, 27 Sep 2024 14:28:46 +0800 Subject: [PATCH 2/3] fix: Resolve issue with real-time data update --- pages/partner/detail/index.jsx | 9 ++++++++- redux/actions/partners.js | 6 ++++++ redux/reducers/partners.js | 6 ++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/pages/partner/detail/index.jsx b/pages/partner/detail/index.jsx index c00446e8..f212934c 100644 --- a/pages/partner/detail/index.jsx +++ b/pages/partner/detail/index.jsx @@ -7,7 +7,11 @@ import Navigation from '@/shared/components/Navigation_v2'; import Footer from '@/shared/components/Footer_v2'; import Profile from '@/components/Profile'; import ContactModal from '@/components/Profile/Contact'; -import { sendEmailToPartner, fetchPartnerById } from '@/redux/actions/partners'; +import { + clearPartnerState, + sendEmailToPartner, + fetchPartnerById, +} from '@/redux/actions/partners'; import toast from 'react-hot-toast'; import { ROLE } from '@/constants/member'; import { mapToTable } from '@/utils/helper'; @@ -52,6 +56,9 @@ const Detail = () => { if (partnerId !== undefined) { fetchUser(); } + return () => { + dispatch(clearPartnerState()); + }; }, [partnerId]); // modal handle diff --git a/redux/actions/partners.js b/redux/actions/partners.js index b24f637c..bbe4c92d 100644 --- a/redux/actions/partners.js +++ b/redux/actions/partners.js @@ -46,3 +46,9 @@ export function fetchPartnerTags() { type: 'FETCH_PARTNER_TAGS', }; } + +export function clearPartnerState() { + return { + type: 'CLEAR_PARTNER_STATE', + }; +} diff --git a/redux/reducers/partners.js b/redux/reducers/partners.js index cd4b05fc..7ca70ac5 100644 --- a/redux/reducers/partners.js +++ b/redux/reducers/partners.js @@ -60,6 +60,12 @@ const reducer = (state = initialState, action) => { tags: [], }; } + case 'CLEAR_PARTNER_STATE': { + return { + ...state, + partner: null, + }; + } default: { return state; } From 71ef9544ae2c5288eb44acf193dac0c271d63b17 Mon Sep 17 00:00:00 2001 From: hsuifang Date: Fri, 27 Sep 2024 14:47:57 +0800 Subject: [PATCH 3/3] feat: add skeleton loader to partner list --- .../PartnerCard/PartnerSkelton.jsx | 40 +++++++++++ .../PartnerCard/PartnerSkeltonCard.jsx | 24 +++++++ components/Partner/PartnerList/index.jsx | 70 +++++++++++-------- 3 files changed, 105 insertions(+), 29 deletions(-) create mode 100644 components/Partner/PartnerList/PartnerCard/PartnerSkelton.jsx create mode 100644 components/Partner/PartnerList/PartnerCard/PartnerSkeltonCard.jsx diff --git a/components/Partner/PartnerList/PartnerCard/PartnerSkelton.jsx b/components/Partner/PartnerList/PartnerCard/PartnerSkelton.jsx new file mode 100644 index 00000000..404e050a --- /dev/null +++ b/components/Partner/PartnerList/PartnerCard/PartnerSkelton.jsx @@ -0,0 +1,40 @@ +import { Stack, Skeleton } from '@mui/material'; + +const PartnerSkelton = () => { + const array = new Uint32Array(1); + return ( + + + + + + + + + + + {new Array(3).fill(0).map((_, idx) => ( + + ))} + + + ); +}; + +export default PartnerSkelton; diff --git a/components/Partner/PartnerList/PartnerCard/PartnerSkeltonCard.jsx b/components/Partner/PartnerList/PartnerCard/PartnerSkeltonCard.jsx new file mode 100644 index 00000000..4a7e2452 --- /dev/null +++ b/components/Partner/PartnerList/PartnerCard/PartnerSkeltonCard.jsx @@ -0,0 +1,24 @@ +import { Fragment } from 'react'; +import { Grid, Box } from '@mui/material'; +import PartnerSkelton from './PartnerSkelton'; + +const PartnerSkeltonCard = ({ number, mobileScreen }) => { + const array = new Uint32Array(1); + return new Array(number).fill(0).map((_, idx) => ( + + + + + + {!mobileScreen && (idx + 1) % 2 === 0 && idx + 1 !== number && ( + + + + )} + + )); +}; + +export default PartnerSkeltonCard; diff --git a/components/Partner/PartnerList/index.jsx b/components/Partner/PartnerList/index.jsx index bf11de8f..50f5274c 100644 --- a/components/Partner/PartnerList/index.jsx +++ b/components/Partner/PartnerList/index.jsx @@ -4,6 +4,7 @@ import { useSelector } from 'react-redux'; import useMediaQuery from '@mui/material/useMediaQuery'; import { Grid, Box } from '@mui/material'; import PartnerCard from './PartnerCard'; +import PartnerSkeltonCard from './PartnerCard/PartnerSkeltonCard'; function PartnerList() { const router = useRouter(); @@ -24,35 +25,46 @@ function PartnerList() { alignItems: 'center', }} > - {lists.map((item, idx) => ( - - router.push(`partner/detail?id=${item._id}`)} - item - width="100%" - md={6} - mb={mobileScreen && '12px'} - > - - - {!mobileScreen && (idx + 1) % 2 === 0 && idx + 1 !== lists.length && ( - - - - )} - - ))} + {lists.length === 0 ? ( + + ) : ( + <> + {lists.map((item, idx) => ( + + router.push(`partner/detail?id=${item._id}`)} + item + width="100%" + md={6} + mb={mobileScreen && '12px'} + > + + + {!mobileScreen && + (idx + 1) % 2 === 0 && + idx + 1 !== lists.length && ( + + + + )} + + ))} + + )} ); }