From 668d9ec5f8e598f72c48bd26d010540247f48d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=84=86=E1=85=B5=E1=86=AB=E1=84=92?= =?UTF-8?q?=E1=85=B4?= Date: Thu, 12 Sep 2024 15:52:04 +0900 Subject: [PATCH 1/5] =?UTF-8?q?chore:=20#377=20=EA=B3=B5=EC=A7=80=EC=82=AC?= =?UTF-8?q?=ED=95=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/assets/svgs/common/ic_letter.svg | 32 ++++ apps/web/src/assets/svgs/common/index.ts | 1 + apps/web/src/layout/GlobalLayout.tsx | 150 ++++++++++++++++++ 3 files changed, 183 insertions(+) create mode 100644 apps/web/src/assets/svgs/common/ic_letter.svg diff --git a/apps/web/src/assets/svgs/common/ic_letter.svg b/apps/web/src/assets/svgs/common/ic_letter.svg new file mode 100644 index 00000000..38580413 --- /dev/null +++ b/apps/web/src/assets/svgs/common/ic_letter.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web/src/assets/svgs/common/index.ts b/apps/web/src/assets/svgs/common/index.ts index 850af9d0..53f97b2f 100644 --- a/apps/web/src/assets/svgs/common/index.ts +++ b/apps/web/src/assets/svgs/common/index.ts @@ -43,3 +43,4 @@ export { default as ic_info_transparent } from "./ic_info_transparent.svg?react" export { default as ic_apple_logo } from "./ic_apple_logo.svg?react"; export { default as ic_twoMan_blue } from "./ic_twoMan_blue.svg?react"; export { default as ic_minus } from "./ic_minus.svg?react"; +export { default as ic_letter } from "./ic_letter.svg?react"; diff --git a/apps/web/src/layout/GlobalLayout.tsx b/apps/web/src/layout/GlobalLayout.tsx index 6f53e5da..6b010dc2 100644 --- a/apps/web/src/layout/GlobalLayout.tsx +++ b/apps/web/src/layout/GlobalLayout.tsx @@ -1,21 +1,34 @@ import { css } from "@emotion/react"; import Hotjar from "@hotjar/browser"; +import Cookies from "js-cookie"; import { useEffect } from "react"; import { Outlet } from "react-router-dom"; +import { BottomSheet } from "@/component/BottomSheet"; +import { ButtonProvider } from "@/component/common/button"; +import { Icon } from "@/component/common/Icon"; import { Modal } from "@/component/common/Modal"; +import { Typography } from "@/component/common/typography"; +import { useBottomSheet } from "@/hooks/useBottomSheet"; +import { useToast } from "@/hooks/useToast"; import { useBridge } from "@/lib/provider/bridge-provider"; const siteId = import.meta.env.VITE_HOTJAR_KEY as number; const hotjarVersion = import.meta.env.VITE_HOTJAR_VERSION as number; +const SHEET_ID = "ANNOUNCEMENT"; +const SHOW_ANNOUNCEMENT_KEY = "announce-9-12-checked"; + export default function GlobalLayout() { const { safeAreaHeight } = useBridge(); + const { openBottomSheet, closeBottomSheet } = useBottomSheet(); useEffect(() => { Hotjar.init(siteId, hotjarVersion); + openBottomSheet({ id: SHEET_ID }); }, []); + const hideAnnouncement = Cookies.get(SHOW_ANNOUNCEMENT_KEY); return (
+ {!hideAnnouncement && ( + { + Cookies.set(SHOW_ANNOUNCEMENT_KEY, "true"); + closeBottomSheet(); + }} + /> + } + sheetHeight={620} + /> + )}
); } + +const Announcement = ({ onConfirm }: { onConfirm: () => void }) => { + const { toast } = useToast(); + const PHONE = "010-3747-4646"; + const EMAIL = "gentlemonster77@likelion.org"; + + return ( +
+
+ + + {"데이터 손실 안내"} + +
+
+ + {`안녕하세요. Layer 입니다. + +현재 시스템 오류로 인해 일부 데이터가 손실되는 +문제가 발생하였습니다. 이에 따라 회원님의 +일부 정보가 정상적으로 표시되지 않거나 삭제될 수 +있음을 안내드립니다. + +저희는 최대한 빠르게 복구 작업을 진행 중이며, +일부 데이터는 복구가 어려울 수 있다는 점 양해 부탁드립니다. 향후 이러한 문제가 재발하지 않도록 +철저한 대책을 마련하겠습니다. + +이용에 불편을 드린 점 진심으로 사과드리며, +추가 문의 사항은 [고객센터 연락처 또는 이메일]로 +연락 주시기 바랍니다. + +고객센터`} + +
+ + 연락처 : + + { + try { + await navigator.clipboard.writeText(PHONE.split("-").join("")); + toast.success(`연락처가 클립보드에 복사되었습니다`); + } catch (e) { + toast.success("다시 시도해주세요"); + } + }} + > + {PHONE} + +
+
+ + 이메일 : + + { + try { + await navigator.clipboard.writeText(EMAIL); + toast.success("이메일이 클립보드에 복사되었습니다"); + } catch (e) { + toast.success("다시 시도해주세요"); + } + }} + > + {EMAIL} + +
+
+ + 확인 +
+ ); +}; From 5815e7bcd0dd2ec6621c733ea353ddf567f52f51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=84=86=E1=85=B5=E1=86=AB=E1=84=92?= =?UTF-8?q?=E1=85=B4?= Date: Thu, 12 Sep 2024 15:58:33 +0900 Subject: [PATCH 2/5] =?UTF-8?q?chore:=20#377=20=EC=97=B0=EB=9D=BD=EC=B2=98?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/layout/GlobalLayout.tsx | 33 +++++----------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/apps/web/src/layout/GlobalLayout.tsx b/apps/web/src/layout/GlobalLayout.tsx index 6b010dc2..4e84e3bd 100644 --- a/apps/web/src/layout/GlobalLayout.tsx +++ b/apps/web/src/layout/GlobalLayout.tsx @@ -8,6 +8,7 @@ import { BottomSheet } from "@/component/BottomSheet"; import { ButtonProvider } from "@/component/common/button"; import { Icon } from "@/component/common/Icon"; import { Modal } from "@/component/common/Modal"; +import { Spacing } from "@/component/common/Spacing"; import { Typography } from "@/component/common/typography"; import { useBottomSheet } from "@/hooks/useBottomSheet"; import { useToast } from "@/hooks/useToast"; @@ -70,7 +71,6 @@ export default function GlobalLayout() { const Announcement = ({ onConfirm }: { onConfirm: () => void }) => { const { toast } = useToast(); - const PHONE = "010-3747-4646"; const EMAIL = "gentlemonster77@likelion.org"; return ( @@ -130,33 +130,6 @@ const Announcement = ({ onConfirm }: { onConfirm: () => void }) => { 고객센터`} -
- - 연락처 : - - { - try { - await navigator.clipboard.writeText(PHONE.split("-").join("")); - toast.success(`연락처가 클립보드에 복사되었습니다`); - } catch (e) { - toast.success("다시 시도해주세요"); - } - }} - > - {PHONE} - -
void }) => { {EMAIL}
+ + + 감사합니다. + 확인 From 6f6a2b0efdc7d4f4daa3364a2c783beff77bc8cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=84=86=E1=85=B5=E1=86=AB=E1=84=92?= =?UTF-8?q?=E1=85=B4?= Date: Thu, 12 Sep 2024 16:07:43 +0900 Subject: [PATCH 3/5] =?UTF-8?q?chore:=20#377=20'=EC=97=B0=EB=9D=BD?= =?UTF-8?q?=EC=B2=98'=20=EB=A9=98=ED=8A=B8=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/layout/GlobalLayout.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/src/layout/GlobalLayout.tsx b/apps/web/src/layout/GlobalLayout.tsx index 4e84e3bd..cd9d564b 100644 --- a/apps/web/src/layout/GlobalLayout.tsx +++ b/apps/web/src/layout/GlobalLayout.tsx @@ -125,10 +125,10 @@ const Announcement = ({ onConfirm }: { onConfirm: () => void }) => { 철저한 대책을 마련하겠습니다. 이용에 불편을 드린 점 진심으로 사과드리며, -추가 문의 사항은 [고객센터 연락처 또는 이메일]로 +추가 문의 사항은 고객센터 이메일로 연락 주시기 바랍니다. -고객센터`} +[고객센터 이메일]`}
Date: Thu, 12 Sep 2024 18:04:37 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20#337=20=EA=B3=B5=EC=A7=80=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EC=BF=A0=ED=82=A4=20=EB=A7=8C=EB=A3=8C=20=EA=B8=B0?= =?UTF-8?q?=EA=B0=84=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/layout/GlobalLayout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/layout/GlobalLayout.tsx b/apps/web/src/layout/GlobalLayout.tsx index cd9d564b..5bba8fdf 100644 --- a/apps/web/src/layout/GlobalLayout.tsx +++ b/apps/web/src/layout/GlobalLayout.tsx @@ -55,7 +55,7 @@ export default function GlobalLayout() { contents={ { - Cookies.set(SHOW_ANNOUNCEMENT_KEY, "true"); + Cookies.set(SHOW_ANNOUNCEMENT_KEY, new Date().toISOString(), { expires: 1 }); closeBottomSheet(); }} /> From 3e417c27f3d024c78331fba6c7139e5eb74e5c7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=84=86=E1=85=B5=E1=86=AB=E1=84=92?= =?UTF-8?q?=E1=85=B4?= Date: Sat, 14 Sep 2024 01:06:06 +0900 Subject: [PATCH 5/5] =?UTF-8?q?chore:=20#377=209/12=20=EA=B3=B5=EC=A7=80?= =?UTF-8?q?=EC=82=AC=ED=95=AD=20close?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/announcement/Announcement.tsx | 48 +++++++ apps/web/src/layout/GlobalLayout.tsx | 127 ------------------ 2 files changed, 48 insertions(+), 127 deletions(-) create mode 100644 apps/web/src/component/common/announcement/Announcement.tsx diff --git a/apps/web/src/component/common/announcement/Announcement.tsx b/apps/web/src/component/common/announcement/Announcement.tsx new file mode 100644 index 00000000..3e1f87e0 --- /dev/null +++ b/apps/web/src/component/common/announcement/Announcement.tsx @@ -0,0 +1,48 @@ +import { css } from "@emotion/react"; + +import { ButtonProvider } from "@/component/common/button"; +import { Icon } from "@/component/common/Icon"; +import { Typography } from "@/component/common/typography"; + +type AnnouncementProps = { title: string; content: React.ReactNode; onConfirm: () => void }; + +export function Announcement({ title, content, onConfirm }: AnnouncementProps) { + return ( +
+
+ + + {title} + +
+
+ {content} +
+ + 확인 +
+ ); +} diff --git a/apps/web/src/layout/GlobalLayout.tsx b/apps/web/src/layout/GlobalLayout.tsx index 5bba8fdf..6f53e5da 100644 --- a/apps/web/src/layout/GlobalLayout.tsx +++ b/apps/web/src/layout/GlobalLayout.tsx @@ -1,35 +1,21 @@ import { css } from "@emotion/react"; import Hotjar from "@hotjar/browser"; -import Cookies from "js-cookie"; import { useEffect } from "react"; import { Outlet } from "react-router-dom"; -import { BottomSheet } from "@/component/BottomSheet"; -import { ButtonProvider } from "@/component/common/button"; -import { Icon } from "@/component/common/Icon"; import { Modal } from "@/component/common/Modal"; -import { Spacing } from "@/component/common/Spacing"; -import { Typography } from "@/component/common/typography"; -import { useBottomSheet } from "@/hooks/useBottomSheet"; -import { useToast } from "@/hooks/useToast"; import { useBridge } from "@/lib/provider/bridge-provider"; const siteId = import.meta.env.VITE_HOTJAR_KEY as number; const hotjarVersion = import.meta.env.VITE_HOTJAR_VERSION as number; -const SHEET_ID = "ANNOUNCEMENT"; -const SHOW_ANNOUNCEMENT_KEY = "announce-9-12-checked"; - export default function GlobalLayout() { const { safeAreaHeight } = useBridge(); - const { openBottomSheet, closeBottomSheet } = useBottomSheet(); useEffect(() => { Hotjar.init(siteId, hotjarVersion); - openBottomSheet({ id: SHEET_ID }); }, []); - const hideAnnouncement = Cookies.get(SHOW_ANNOUNCEMENT_KEY); return (
- {!hideAnnouncement && ( - { - Cookies.set(SHOW_ANNOUNCEMENT_KEY, new Date().toISOString(), { expires: 1 }); - closeBottomSheet(); - }} - /> - } - sheetHeight={620} - /> - )}
); } - -const Announcement = ({ onConfirm }: { onConfirm: () => void }) => { - const { toast } = useToast(); - const EMAIL = "gentlemonster77@likelion.org"; - - return ( -
-
- - - {"데이터 손실 안내"} - -
-
- - {`안녕하세요. Layer 입니다. - -현재 시스템 오류로 인해 일부 데이터가 손실되는 -문제가 발생하였습니다. 이에 따라 회원님의 -일부 정보가 정상적으로 표시되지 않거나 삭제될 수 -있음을 안내드립니다. - -저희는 최대한 빠르게 복구 작업을 진행 중이며, -일부 데이터는 복구가 어려울 수 있다는 점 양해 부탁드립니다. 향후 이러한 문제가 재발하지 않도록 -철저한 대책을 마련하겠습니다. - -이용에 불편을 드린 점 진심으로 사과드리며, -추가 문의 사항은 고객센터 이메일로 -연락 주시기 바랍니다. - -[고객센터 이메일]`} - -
- - 이메일 : - - { - try { - await navigator.clipboard.writeText(EMAIL); - toast.success("이메일이 클립보드에 복사되었습니다"); - } catch (e) { - toast.success("다시 시도해주세요"); - } - }} - > - {EMAIL} - -
- - - 감사합니다. - -
- - 확인 -
- ); -};