Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Release] v0.1.6 #256

Merged
merged 41 commits into from
Dec 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
3b7ed8e
fix: #240 - μ„Έμ€„μš”μ•½ μž„μ‹œ μ‚­μ œ
Dec 2, 2023
afdbc88
fix: #239 - λ‘œκ·Έμ•„μ›ƒ ν›„ νŽ˜μ΄μ§€ μƒˆλ‘œκ³ μΉ¨ 반영
Dec 2, 2023
7d507bd
refactor: #239 - μ‚¬μš©ν•˜μ§€μ•ŠλŠ” μ½”λ“œ μ‚­μ œ
Dec 2, 2023
b06c59b
fix: #237 - 슀페이슀 생성 폼 관심 μΉ΄ν…Œκ³ λ¦¬ 타이틀 μˆ˜μ •
Dec 2, 2023
d407a33
chore: #221 - νŒŒλΉ„μ½˜ μˆ˜μ •
eeseung Dec 2, 2023
9c104ff
fix: #237 - μœ μ € 정보 폼 μΉ΄ν…Œκ³ λ¦¬ 문ꡬ μž¬μˆ˜μ •
Dec 2, 2023
ee82a5f
fix: #238 - 슀페이슀 폼 κ΄€μ‹¬μΉ΄ν…Œκ³ λ¦¬ 문ꡬ μˆ˜μ •
Dec 2, 2023
b6e8da2
fix: #238 - 슀페이슀 μˆ˜μ • 둜직 λ³€κ²½
Dec 2, 2023
643d90d
refactor: #221 - 검색 κ²°κ³Ό νŽ˜μ΄μ§€ client component 뢄리
eeseung Dec 2, 2023
68bb4c8
refactor: #221 - μ•Œλ¦Ό νŽ˜μ΄μ§€ 곡톡 λ ˆμ΄μ•„μ›ƒ client component 뢄리
eeseung Dec 2, 2023
bd5cdeb
refactor: #221 - μœ μ € νŽ˜μ΄μ§€ 곡톡 λ ˆμ΄μ•„μ›ƒ client componenet 뢄리
eeseung Dec 2, 2023
ec49183
refactor: #221 - ν”„λ‘œν•„ μˆ˜μ • νŽ˜μ΄μ§€ client component 뢄리
eeseung Dec 2, 2023
eae3ee0
feat: #221 - 메타데이터 μΆ”κ°€
eeseung Dec 2, 2023
6481492
fix: #238 - 슀페이슀λͺ…은 곡백으둜 μ‹œμž‘ν•˜κ±°λ‚˜ 끝날 수 μ—†κ²Œ μˆ˜μ •
Dec 3, 2023
309cc74
fix: #238 - 슀페이슀λͺ…은 곡백으둜 μ‹œμž‘ν•˜κ±°λ‚˜ 끝날 수 μ—†κ²Œ μˆ˜μ •
Dec 3, 2023
ba6d6bb
feat: #245 - Dropdown μ»΄ν¬λ„ŒνŠΈ μ•„μ΄ν…œ danger prop μž„μ‹œ 제거
eeseung Dec 3, 2023
e525075
style: #246- μ΄ˆλŒ€κ°€ 없을 λ•Œ λ‚˜νƒ€λ‚˜λŠ” ν…μŠ€νŠΈμ˜ μŠ€νƒ€μΌμ„ λ‹€λ₯Έ ν…μŠ€νŠΈμ™€ ν†΅μΌλ˜κ²Œ λ³€κ²½
dudwns Dec 3, 2023
54fd07d
feat: #246 - μ•Œλ¦Ό μ‚­μ œ μ‹œ μΉ΄μš΄νŠΈκ°€ μ¦‰μ‹œ λ³€κ²½λ˜λ„λ‘ μˆ˜μ •
dudwns Dec 3, 2023
a87d38b
feat: #246 - 슀페이슀 μ΄ˆλŒ€ 수락 μ‹œ μΉ΄μš΄νŠΈκ°€ μ¦‰μ‹œ λ³€κ²½λ˜λ„λ‘ μˆ˜μ •
dudwns Dec 3, 2023
48a44a9
feat: #246 - μ•Œλ¦Ό νŽ˜μ΄μ§€ ν…μŠ€νŠΈ λ³€κ²½
dudwns Dec 3, 2023
9b6e951
style: #245 - Dropdown μ»΄ν¬λ„ŒνŠΈ μ—΄μ—ˆμ„ λ•Œ max-height, overflow μΆ”κ°€
eeseung Dec 3, 2023
997eca8
chore: #248 - 둜그 제거
dudwns Dec 3, 2023
ba2c259
feat: #245 - Input μ»΄ν¬λ„ŒνŠΈ size 속성 μˆ˜μ •
eeseung Dec 3, 2023
4ff7372
feat: #248 - title에 빈 값을 λ„£μ—ˆμ„ λ•Œ validation μΆ”κ°€
dudwns Dec 3, 2023
25934fa
feat: #245 - Comment μ»΄ν¬λ„ŒνŠΈ λ‹΅κΈ€ μ—†λŠ” 경우 replyCount ν‘œμ‹œ 제거
eeseung Dec 3, 2023
a23bf61
feat: #248 - μœ νš¨ν•œ url ν˜•μ‹μΈμ§€ κ²€μ‚¬ν•˜λŠ” validation μΆ”κ°€
dudwns Dec 3, 2023
b2d7389
feat: #248 - μ’‹μ•„μš” λ²„νŠΌ 클릭 μ‹œ 링크 리슀트 쿼리 λ¬΄νš¨ν™” 적용
dudwns Dec 3, 2023
6c17614
fix: #237 - 인증번호, 카카였provider validation μΆ”κ°€
Dec 3, 2023
b766b85
feat: #249 - CategoryListItem μ»΄ν¬λ„ŒνŠΈ as prop μΆ”κ°€
eeseung Dec 3, 2023
b76d342
feat: #249 - CategoryList μ»΄ν¬λ„ŒνŠΈ μŠ¬λΌμ΄λ“œ 적용
eeseung Dec 3, 2023
4aee046
style: #249 - Sidebar μ»΄ν¬λ„ŒνŠΈ 메뉴 μ•„μ΄μ½˜ μΆ”κ°€
eeseung Dec 3, 2023
fcd694a
Merge pull request #247 from Team-TenTen/feature/#246/bug-notificatio…
dudwns Dec 3, 2023
6dc74b4
Merge pull request #250 from Team-TenTen/feature/#245/style-dropdown
eeseung Dec 3, 2023
cd54552
Merge pull request #255 from Team-TenTen/feature/#249/categorylist-slide
eeseung Dec 3, 2023
4aee93d
fix: #239 - λ‘œκ·Έμ•„μ›ƒ ν›„ νŽ˜μ΄μ§€ μƒˆλ‘œκ³ μΉ¨ 반영
bomi8489 Dec 3, 2023
3f53f17
fix: #240 - μ„Έμ€„μš”μ•½ μž„μ‹œ μ‚­μ œ
bomi8489 Dec 3, 2023
e73d457
Merge pull request #251 from Team-TenTen/feature/#248/add-link-valida…
dudwns Dec 3, 2023
299ba72
feat: #221 - meta νƒœκ·Έ maximum-scale μΆ”κ°€
eeseung Dec 3, 2023
533ae91
fix: #237 - μœ μ € 정보 μž…λ ₯ 폼 였λ₯˜ μˆ˜μ •
bomi8489 Dec 3, 2023
b735813
Merge pull request #244 from Team-TenTen/feature/#221/metadata
eeseung Dec 3, 2023
f7dfa00
fix: #238 - 슀페이슀 μž…λ ₯ 폼 였λ₯˜ μˆ˜μ •
bomi8489 Dec 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/app/(routes)/login/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import Login from '@/components/Login/Login'
import { Metadata } from 'next'

export const metadata: Metadata = {
title: '둜그인',
}

const LoginPage = () => {
return (
Expand Down
27 changes: 6 additions & 21 deletions src/app/(routes)/notification/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,27 +1,12 @@
'use client'
import { NotificationController } from '@/components'
import { Metadata } from 'next'

import Tab from '@/components/common/Tab/Tab'
import TabItem from '@/components/common/Tab/TabItem'
import useTab from '@/components/common/Tab/hooks/useTab'
export const metadata: Metadata = {
title: 'μ•Œλ¦Ό',
}

const NotificationLayout = ({ children }: { children: React.ReactNode }) => {
const { currentTab, tabList } = useTab({ type: 'notification' })

return (
<>
<Tab>
{tabList.map((tabItem) => (
<TabItem
active={currentTab === tabItem.content}
text={tabItem.text}
dest={tabItem.dest}
key={tabItem.content}
/>
))}
</Tab>
<div className="p-4">{children}</div>
</>
)
return <NotificationController>{children}</NotificationController>
}

export default NotificationLayout
3 changes: 2 additions & 1 deletion src/app/(routes)/notification/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use client'

import { NONE_NOTIFICATION_RESULT } from '@/components/common/NotificationList/constants'
import { SEACH_MODAL_INFO } from '@/components/common/SearchModal/constants'

const NotificationPage = () => {
return (
Expand All @@ -19,7 +20,7 @@ const NotificationPage = () => {
/>
))} */}
<div className="py-5 text-center text-sm font-medium text-gray9">
{NONE_NOTIFICATION_RESULT}
{SEACH_MODAL_INFO}
</div>
</div>
)
Expand Down
5 changes: 5 additions & 0 deletions src/app/(routes)/register/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import UserInfoForm from '@/components/UserInfoForm/UserInfoForm'
import { Metadata } from 'next'

export const metadata: Metadata = {
title: 'νšŒμ›κ°€μž…',
}

const RegisterPage = () => {
return (
Expand Down
84 changes: 18 additions & 66 deletions src/app/(routes)/search/page.tsx
Original file line number Diff line number Diff line change
@@ -1,72 +1,24 @@
'use client'
import { SearchController } from '@/components'
import { Metadata } from 'next'

import { CategoryList, Dropdown, SpaceList } from '@/components'
import UserList from '@/components/UserList/UserList'
import { useCategoryParam, useSortParam } from '@/hooks'
import { fetchSearchSpaces } from '@/services/space/spaces'
import { fetchSearchUsers } from '@/services/user/search/search'
import { cls } from '@/utils'
import { useSearchParams } from 'next/navigation'
type SearchPageProps = {
searchParams: { [key: string]: string | string[] | undefined }
}

const SearchPage = () => {
const searchParams = useSearchParams()
const keyword = searchParams.get('keyword')
const target = searchParams.get('target')
const { sort, sortIndex, handleSortChange } = useSortParam('space')
const { category, categoryIndex, handleCategoryChange } =
useCategoryParam('all')
export async function generateMetadata({
searchParams,
}: SearchPageProps): Promise<Metadata> {
const { target, keyword } = searchParams

return (
<>
<div className="sticky top-[53px] z-40 bg-bgColor">
<div
className={cls(
'flex items-center px-4',
target === 'space' ? 'pt-4' : 'py-4',
)}>
<h2 className="grow overflow-hidden text-ellipsis whitespace-nowrap pr-2 font-bold text-gray9">
&apos;{keyword}&apos; 에 λŒ€ν•œ{' '}
{target === 'space' ? '슀페이슀' : target === 'user' ? 'μœ μ €' : ''}{' '}
검색 κ²°κ³Ό
</h2>
{target === 'space' && (
<div className="shrink-0">
<Dropdown
type="space"
placement="right"
defaultIndex={sortIndex}
onChange={handleSortChange}
/>
</div>
)}
</div>
{target === 'space' && (
<CategoryList
type="all"
defaultIndex={categoryIndex}
onChange={handleCategoryChange}
/>
)}
</div>
<section className="flex flex-col gap-y-2 px-4">
{target === 'space' && (
<SpaceList
queryKey="search"
sort={sort ?? ''}
category={category ?? ''}
keyword={keyword ?? ''}
fetchFn={fetchSearchSpaces}
/>
)}
{target === 'user' && (
<UserList
keyword={keyword ?? ''}
fetchFn={fetchSearchUsers}
/>
)}
</section>
</>
)
return {
title: `'${keyword ?? ''}' ${
target === 'space' ? '슀페이슀' : target === 'user' ? 'μœ μ €' : ''
} 검색 κ²°κ³Ό`,
}
}

const SearchPage = () => {
return <SearchController />
}

export default SearchPage
29 changes: 29 additions & 0 deletions src/app/(routes)/space/[spaceId]/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { fetchGetSpace } from '@/services/space/space'
import { Metadata } from 'next'

type SpaceLayoutProps = {
params: { spaceId: number }
}

export async function generateMetadata({
params,
}: SpaceLayoutProps): Promise<Metadata> {
const spaceId = params.spaceId
const space = await fetchGetSpace({ spaceId })

return {
title: space.spaceName,
description: space.description,
openGraph: {
title: `${space.spaceName} β€’ LinkHub`,
description: space.description,
images: space.spaceImagePath,
},
}
}

const layout = ({ children }: { children: React.ReactNode }) => {
return children
}

export default layout
5 changes: 5 additions & 0 deletions src/app/(routes)/space/create/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import SpaceForm from '@/components/Space/SpaceForm'
import { Metadata } from 'next'

export const metadata: Metadata = {
title: '슀페이슀 생성',
}

const SpaceCreatePage = () => {
return (
Expand Down
50 changes: 19 additions & 31 deletions src/app/(routes)/user/[userId]/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,37 +1,25 @@
'use client'
import { UserController } from '@/components'
import { fetchGetUserProfile } from '@/services/user/profile/profile'
import { Metadata } from 'next'

import React from 'react'
import { Spinner } from '@/components'
import Tab from '@/components/common/Tab/Tab'
import TabItem from '@/components/common/Tab/TabItem'
import useTab from '@/components/common/Tab/hooks/useTab'
import useGetProfile from '@/hooks/useGetProfile'
type Props = {
params: { userId: number }
}

const UserLayout = ({ children }: { children: React.ReactNode }) => {
const { user, myId, isProfileLoading } = useGetProfile()
const { currentTab, tabList } = useTab({
type: 'user',
userId: user?.memberId,
myId,
})
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const userId = params.userId
const user = await fetchGetUserProfile({ memberId: userId })

return (
<>
{!isProfileLoading && (
<Tab>
{tabList.map((tabItem) => (
<TabItem
active={currentTab === tabItem.content}
text={tabItem.text}
dest={tabItem.dest}
key={tabItem.content}
/>
))}
</Tab>
)}
{children}
</>
)
return {
title: user.nickname,
openGraph: {
title: `${user.nickname} β€’ LinkHub`,
},
}
}

const UserLayout = ({ children }: { children: React.ReactNode }) => {
return <UserController>{children}</UserController>
}

export default UserLayout
21 changes: 6 additions & 15 deletions src/app/(routes)/user/setting/page.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,12 @@
'use client'
import { SettingController } from '@/components'
import { Metadata } from 'next'

import UserInfoForm from '@/components/UserInfoForm/UserInfoForm'
import { useCurrentUser } from '@/hooks/useCurrentUser'
export const metadata: Metadata = {
title: 'ν”„λ‘œν•„ μˆ˜μ •',
}

const UserSettingPage = () => {
const { currentUser } = useCurrentUser()

return (
<div>
{currentUser && (
<UserInfoForm
userData={currentUser}
formType="Setting"
/>
)}
</div>
)
return <SettingController />
}

export default UserSettingPage
Binary file modified src/app/favicon.ico
Binary file not shown.
8 changes: 8 additions & 0 deletions src/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -123,3 +123,11 @@
max-width: 436px;
max-height: 25%;
}

.category-swiper {
padding: 16px !important;
}

.category-swiper .swiper-slide {
width: auto;
}
19 changes: 15 additions & 4 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,19 @@ import type { Metadata } from 'next'
import './globals.css'

export const metadata: Metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
title: {
template: '%s β€’ LinkHub',
default: 'LinkHub',
},
description: '링크 아카이빙 및 곡유 ν”Œλž«νΌ',
openGraph: {
title: 'LinkHub',
description: '링크 아카이빙 및 곡유 ν”Œλž«νΌ',
url: 'https://link-hub.site',
siteName: 'LinkHub',
locale: 'ko_KR',
type: 'website',
},
}

export default function RootLayout({
Expand All @@ -21,7 +32,7 @@ export default function RootLayout({
<head>
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, user-scalable=no"
content="width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0"
/>
</head>
<TanstackQueryContext>
Expand All @@ -34,8 +45,8 @@ export default function RootLayout({
<Header />
<main className="pt-[53px]">{children}</main>
</div>
<ToastContainer />
</Providers>
<ToastContainer />
</body>
</AuthProvider>
</TanstackQueryContext>
Expand Down
Binary file added src/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.
Binary file added src/app/twitter-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions src/components/Login/Login.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ const Login = () => {
router.replace('/')
} else if (searchParams.get('socialId')) {
Cookies.set('Social-Id', searchParams.get('socialId') || '', {
expires: 1 / 144,
expires: 1 / 288,
})
Cookies.set('Provider', searchParams.get('provider') || '', {
expires: 1 / 144,
expires: 1 / 288,
})
router.replace('/register')
}
Expand Down
27 changes: 27 additions & 0 deletions src/components/NotificationController/NotificationController.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use client'

import Tab from '@/components/common/Tab/Tab'
import TabItem from '@/components/common/Tab/TabItem'
import useTab from '@/components/common/Tab/hooks/useTab'

const NotificationLayout = ({ children }: { children: React.ReactNode }) => {
const { currentTab, tabList } = useTab({ type: 'notification' })

return (
<>
<Tab>
{tabList.map((tabItem) => (
<TabItem
active={currentTab === tabItem.content}
text={tabItem.text}
dest={tabItem.dest}
key={tabItem.content}
/>
))}
</Tab>
<div className="p-4">{children}</div>
</>
)
}

export default NotificationLayout
Loading