Skip to content

Commit

Permalink
chore: og 정보를 추가합니다 (#48)
Browse files Browse the repository at this point in the history
  • Loading branch information
minsoo-web authored Sep 18, 2024
1 parent 5918611 commit 6f9462b
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 23 deletions.
26 changes: 26 additions & 0 deletions web/app/_shared/components/EventListener.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use client'

import { type MessageData, isValidEventOrigin } from '@hamsurang/utils'
import { useEffect } from 'react'

export const EventListener = () => {
useEffect(() => {
const handleIncomingMessage = ({ origin, data }: MessageEvent<MessageData>) => {
if (!isValidEventOrigin(origin)) {
return
}

if (data.type === 'routeChange') {
history.replaceState({}, '', data.route)
}
}

addEventListener('message', handleIncomingMessage)

return () => {
removeEventListener('message', handleIncomingMessage)
}
}, [])

return null
}
2 changes: 2 additions & 0 deletions web/app/_shared/components/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './EventListener'
export * from './Header'
31 changes: 8 additions & 23 deletions web/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,37 +1,22 @@
'use client'

import '@hamsurang/ui/globals.css'
import { type MessageData, isValidEventOrigin } from '@hamsurang/utils'
import type { Metadata } from 'next'
import { Inter } from 'next/font/google'
import type { PropsWithChildren } from 'react'
import { useEffect } from 'react'
import { Header } from './_shared/components/Header'
import { EventListener, Header } from './_shared/components'

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

export default function RootLayout({ children }: PropsWithChildren): JSX.Element {
useEffect(() => {
const handleIncomingMessage = ({ origin, data }: MessageEvent<MessageData>) => {
if (!isValidEventOrigin(origin)) {
return
}

if (data.type === 'routeChange') {
history.replaceState({}, '', data.route)
}
}

addEventListener('message', handleIncomingMessage)

return () => {
removeEventListener('message', handleIncomingMessage)
}
}, [])
export const metadata: Metadata = {
title: '함수랑산악회',
description: '함수랑산악회의 공식 홈페이지입니다.',
}

export default function RootLayout({ children }: PropsWithChildren): JSX.Element {
return (
<html lang="ko">
<body className={inter.className}>
<Header />
<EventListener />
{children}
</body>
</html>
Expand Down
Binary file added web/app/opengraph-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 6f9462b

Please sign in to comment.