diff --git a/public/images/icons8-instagram.svg b/public/images/icons8-instagram.svg new file mode 100644 index 0000000..2692183 --- /dev/null +++ b/public/images/icons8-instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/testAnnounceBaan.png b/public/images/testAnnounceBaan.png new file mode 100644 index 0000000..d55c8ee Binary files /dev/null and b/public/images/testAnnounceBaan.png differ diff --git a/src/context/AuthContext.tsx b/src/context/AuthContext.tsx index 9fcd644..bde7c7f 100644 --- a/src/context/AuthContext.tsx +++ b/src/context/AuthContext.tsx @@ -79,24 +79,16 @@ const AuthProvider = ({ children }: { children: ReactNode }) => { switch (router.pathname) { case '/': if (user) { - if (alreadyRegistered) router.push('/profile'); - else router.push('/register'); + router.push('/announce-baan'); } break; + case '/announce-baan': case '/register': - if (!user) { - router.push('/'); - } else if (alreadyRegistered) { - router.push('/profile'); - } - break; case '/wait-baan-selection': case '/profile': case '/baan-selection': if (!user) { router.push('/'); - } else if (!alreadyRegistered) { - router.push('/register'); } break; default: diff --git a/src/pages/announce-baan/index.tsx b/src/pages/announce-baan/index.tsx new file mode 100644 index 0000000..505b80e --- /dev/null +++ b/src/pages/announce-baan/index.tsx @@ -0,0 +1,132 @@ +import { useAuth } from '@/context/AuthContext'; +import { IBaan } from '@/types/baan'; +import { getBaan } from '@/utils/baan'; +import type { NextPage } from 'next'; +import Image from 'next/image'; +import Link from 'next/link'; +import { useEffect, useState } from 'react'; + +const AnnounceBaan: NextPage = () => { + const { user } = useAuth(); + + const [baan, setBaan] = useState(null); + + useEffect(() => { + const fetchData = async (baanId: string) => { + const res = await getBaan(baanId); + setBaan(res); + }; + + fetchData(user?.baanId || ''); + }, [user?.baanId]); + + return ( +
+ {baan ? ( +
+
+ ยินดีด้วย! คุณได้รับเลือกเข้า +
+
+
+ +
+
+
+
+ {baan.name} +
+
+ ติดตามข่าวสารได้ที่ +
+
+ + + + + + + +
+
+
+ ) : ( +
+

+ ขออภัย ท่านไม่ได้ทำการเลือกบ้าน +

+
+
+ หากเกิดข้อผิดพลาด กรุณา{' '} + + ร้องเรียนปัญหา + {' '} +
+ หรือติดต่อเราที่ +
+
+ + + +
+
+
+ )} +
+ ); +}; +export default AnnounceBaan; diff --git a/src/pages/join.tsx b/src/pages/join.tsx index 4cc8568..65e7295 100644 --- a/src/pages/join.tsx +++ b/src/pages/join.tsx @@ -32,8 +32,10 @@ function useGroupData() { } catch (err) { setError( (err as AxiosError).response?.status === 404 - ? 'ไม่พบกลุ่มนี้' - : 'เกิดข้อผิดพลาดที่ไม่ทราบ' + ? 'ไม่พบกลุ่มนี้ (404 Not Found)' + : `ไม่สามารถดึงข้อมูลของกลุ่มนี้ได้ (${ + (err as AxiosError).response?.status + } ${(err as AxiosError).response?.data})` ); } } @@ -55,8 +57,10 @@ function useGroupData() { console.log({ err }); setError( (err as AxiosError).response?.status === 403 - ? 'สมาชิกในกลุ่มเต็มแล้ว หรือคุณเป็นหัวหน้ากลุ่มอยู่' - : 'เกิดข้อผิดพลาดที่ไม่ทราบ' + ? 'สมาชิกในกลุ่มเต็มแล้ว หรือคุณเป็นหัวหน้ากลุ่มอยู่ (403 Forbidden)' + : `เกิดข้อผิดพลาดที่ไม่ทราบ (${ + (err as AxiosError).response?.status + } ${(err as AxiosError).response?.data})` ); } }, [replace, token]); diff --git a/src/utils/baan.ts b/src/utils/baan.ts index 4ee8a31..c0ea56d 100644 --- a/src/utils/baan.ts +++ b/src/utils/baan.ts @@ -1,5 +1,6 @@ import { BaanDTO } from '@/dto/baanDTO'; import { IBaan } from '@/types/baan'; +import { apiClient } from './axios'; export function transformBaanDTOtoIBaan( baan: BaanDTO, @@ -18,3 +19,12 @@ export function transformBaanDTOtoIBaan( igUrl: baan.instagram_url, }; } + +export async function getBaan(baanId: string): Promise { + try { + const res = await apiClient.get('/baan/' + baanId); + return transformBaanDTOtoIBaan(res.data, 'TH'); + } catch (err) { + return null; + } +}