@@ -4,20 +4,28 @@ import { PATHS } from "@layer/shared";
4
4
import { useEffect } from "react" ;
5
5
import { Outlet , useLocation } from "react-router-dom" ;
6
6
7
+ import { Announcement } from "@/component/announcement/Announcement" ;
7
8
import { Modal } from "@/component/common/Modal" ;
9
+ import { Typography } from "@/component/common/typography" ;
8
10
import { PreventExternalBrowser } from "@/helper/preventExternalBrowser.tsx" ;
11
+ import { useBottomSheet } from "@/hooks/useBottomSheet" ;
12
+ import { useToast } from "@/hooks/useToast" ;
9
13
import ChannelService from "@/lib/channel-talk/service" ;
10
14
import { useBridge } from "@/lib/provider/bridge-provider" ;
11
15
12
16
const siteId = import . meta. env . VITE_HOTJAR_KEY as number ;
13
17
const hotjarVersion = import . meta. env . VITE_HOTJAR_VERSION as number ;
18
+ const SHEET_ID = "announcement" ;
14
19
15
20
export default function GlobalLayout ( ) {
16
21
const { safeAreaHeight } = useBridge ( ) ;
17
22
const location = useLocation ( ) ;
23
+ const { openBottomSheet, closeBottomSheet } = useBottomSheet ( ) ;
24
+ const { toast } = useToast ( ) ;
18
25
19
26
useEffect ( ( ) => {
20
27
Hotjar . init ( siteId , hotjarVersion ) ;
28
+ openBottomSheet ( { id : SHEET_ID } ) ;
21
29
} , [ ] ) ;
22
30
23
31
useEffect ( ( ) => {
@@ -47,6 +55,74 @@ export default function GlobalLayout() {
47
55
${ safeAreaHeight && { height : `calc(100dvh-${ safeAreaHeight * 2 } px)` } }
48
56
` }
49
57
>
58
+ < Announcement
59
+ sheetId = { SHEET_ID }
60
+ onConfirm = { closeBottomSheet }
61
+ title = "인프라 이전 안내"
62
+ content = {
63
+ < >
64
+ < Typography
65
+ as = "p"
66
+ variant = { "body16Medium" }
67
+ color = { "gray600" }
68
+ css = { css `
69
+ white-space : pre-wrap;
70
+ ` }
71
+ >
72
+ { `안녕하세요, 레이어 서비스입니다.
73
+ 항상 저희 서비스를 이용해 주셔서 감사드립니다.
74
+
75
+ 서비스 품질 향상을 위한 인프라 이전을 진행하고자 하오니 잠시 양해를 부탁드립니다.
76
+ 작업 진행 시간 동안 서비스가 접속이 되지 않거나 느려지는 현상이 있을 수 있으니 이용에 참고하시기 바랍니다.
77
+
78
+ 1. 점검 시간
79
+
80
+ 2024년 11월 10일(일) 13:00 ~ 22:00
81
+ ※ 모든 시간은 한국시간 기준입니다.
82
+ ※ 작업 진행상황에 따라 일정은 변경될 수 있습니다.
83
+
84
+ 2. 대상 서비스
85
+
86
+ 레이어 서비스
87
+
88
+ 해당 기간동안 궁금하신 점은` }
89
+ </ Typography >
90
+ < Typography
91
+ variant = { "body16Medium" }
92
+ color = { "blue500" }
93
+ css = { css `
94
+ text-decoration : underline;
95
+ cursor : pointer;
96
+ ` }
97
+ onClick = { async ( ) => {
98
+ try {
99
+ await navigator . clipboard . writeText ( "gentlemonster77@likelion.org" ) ;
100
+ toast . success ( "이메일이 클립보드에 복사되었습니다" ) ;
101
+ } catch ( e ) {
102
+ toast . success ( "다시 시도해주세요" ) ;
103
+ }
104
+ } }
105
+ >
106
+ gentlemonster77@likelion.org
107
+ </ Typography >
108
+ < Typography
109
+ as = "p"
110
+ variant = { "body16Medium" }
111
+ color = { "gray600" }
112
+ css = { css `
113
+ white-space : pre-wrap;
114
+ ` }
115
+ >
116
+ { `로 문의를 주시면 빠르게 확인 후 순차적으로 답변 드리겠습니다.
117
+
118
+ 이용에 불편을 드려 죄송합니다.
119
+ 보다 안정적인 서비스를 제공하기 위해 노력하는 레이어가 되겠습니다.
120
+
121
+ 감사합니다.` }
122
+ </ Typography >
123
+ </ >
124
+ }
125
+ />
50
126
< Modal />
51
127
< PreventExternalBrowser >
52
128
< Outlet />
0 commit comments