@@ -16,6 +16,9 @@ import {
1616} from "@/hooks/usePublicFeeds" ;
1717import type { ArtworkFeedItem , FeedCardItem , SpaceFeedItem } from "@/types/feed" ;
1818import { normalizeImageUrl } from "@/utils/normalizeImageUrl" ;
19+ import { useMyRole } from "@/hooks/useMyRole" ;
20+ import { Plus } from "lucide-react" ;
21+ import { useRouter } from "next/navigation" ;
1922
2023const tabs = [
2124 { label : "추천" , value : "recommend" } ,
@@ -51,10 +54,13 @@ function toSpaceCard(item: SpaceFeedItem): FeedCardItem {
5154
5255export default function Home ( ) {
5356 const [ activeTab , setActiveTab ] = useState ( "recommend" ) ;
57+ const router = useRouter ( ) ;
58+
5459 const artworkRecommendationQuery = useArtworkRecommendation ( 8 ) ;
5560 const spaceRecommendationQuery = useSpaceRecommendation ( 8 ) ;
5661 const artworkFeedQuery = useArtworkFeed ( 20 ) ;
5762 const spaceFeedQuery = useSpaceFeed ( 20 ) ;
63+ const { role, isLoggedIn } = useMyRole ( ) ;
5864
5965 const recommendedArtworks = ( artworkRecommendationQuery . data ?. items ?? [ ] ) . map ( toArtworkCard ) ;
6066 const recommendedSpaces = ( spaceRecommendationQuery . data ?. items ?? [ ] ) . map ( toSpaceCard ) ;
@@ -63,6 +69,13 @@ export default function Home() {
6369 . map ( toArtworkCard ) ;
6470 const spaceFeed = ( spaceFeedQuery . data ?. pages ?? [ ] ) . flatMap ( page => page . items ) . map ( toSpaceCard ) ;
6571
72+ const handleRegisterClick = ( ) => {
73+ if ( role === "CREATOR" ) {
74+ router . push ( "/art/new" ) ;
75+ } else {
76+ router . push ( "/space/new" ) ;
77+ }
78+ } ;
6679 return (
6780 < div className = "pb-[calc(5rem+env(safe-area-inset-bottom))]" >
6881 < div className = "px-5 py-4" >
@@ -120,6 +133,17 @@ export default function Home() {
120133 onLoadMore = { ( ) => void spaceFeedQuery . fetchNextPage ( ) }
121134 />
122135 ) }
136+ { /* 작품/공간 등록 버튼 */ }
137+ { isLoggedIn && (
138+ < button
139+ type = "button"
140+ className = "bg-object-primary fixed bottom-24 left-1/2 z-50 flex h-12.5 w-29 translate-x-20 cursor-pointer items-center gap-1 rounded-full px-4 text-white"
141+ onClick = { handleRegisterClick }
142+ >
143+ < Plus size = { 20 } />
144+ < span className = "text-body-1 font-medium" > 작품 등록</ span >
145+ </ button >
146+ ) }
123147 </ div >
124148 ) ;
125149}
0 commit comments