Skip to content

Commit 6f9462b

Browse files
authored
chore: og 정보를 추가합니다 (#48)
1 parent 5918611 commit 6f9462b

File tree

4 files changed

+36
-23
lines changed

4 files changed

+36
-23
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
'use client'
2+
3+
import { type MessageData, isValidEventOrigin } from '@hamsurang/utils'
4+
import { useEffect } from 'react'
5+
6+
export const EventListener = () => {
7+
useEffect(() => {
8+
const handleIncomingMessage = ({ origin, data }: MessageEvent<MessageData>) => {
9+
if (!isValidEventOrigin(origin)) {
10+
return
11+
}
12+
13+
if (data.type === 'routeChange') {
14+
history.replaceState({}, '', data.route)
15+
}
16+
}
17+
18+
addEventListener('message', handleIncomingMessage)
19+
20+
return () => {
21+
removeEventListener('message', handleIncomingMessage)
22+
}
23+
}, [])
24+
25+
return null
26+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from './EventListener'
2+
export * from './Header'

web/app/layout.tsx

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,22 @@
1-
'use client'
2-
31
import '@hamsurang/ui/globals.css'
4-
import { type MessageData, isValidEventOrigin } from '@hamsurang/utils'
2+
import type { Metadata } from 'next'
53
import { Inter } from 'next/font/google'
64
import type { PropsWithChildren } from 'react'
7-
import { useEffect } from 'react'
8-
import { Header } from './_shared/components/Header'
5+
import { EventListener, Header } from './_shared/components'
96

107
const inter = Inter({ subsets: ['latin'] })
118

12-
export default function RootLayout({ children }: PropsWithChildren): JSX.Element {
13-
useEffect(() => {
14-
const handleIncomingMessage = ({ origin, data }: MessageEvent<MessageData>) => {
15-
if (!isValidEventOrigin(origin)) {
16-
return
17-
}
18-
19-
if (data.type === 'routeChange') {
20-
history.replaceState({}, '', data.route)
21-
}
22-
}
23-
24-
addEventListener('message', handleIncomingMessage)
25-
26-
return () => {
27-
removeEventListener('message', handleIncomingMessage)
28-
}
29-
}, [])
9+
export const metadata: Metadata = {
10+
title: '함수랑산악회',
11+
description: '함수랑산악회의 공식 홈페이지입니다.',
12+
}
3013

14+
export default function RootLayout({ children }: PropsWithChildren): JSX.Element {
3115
return (
3216
<html lang="ko">
3317
<body className={inter.className}>
3418
<Header />
19+
<EventListener />
3520
{children}
3621
</body>
3722
</html>

web/app/opengraph-image.png

43.8 KB
Loading

0 commit comments

Comments
 (0)