Skip to content

Commit aea8233

Browse files
authored
Merge pull request #90 from JECT-Study/feat/89-home-floating-button
feat: 홈에 로그인 상태, role에 따라 작품/공간 등록 플로팅 버튼 추가 (#89)
2 parents 202f171 + b2b1c17 commit aea8233

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

src/app/page.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ import {
1616
} from "@/hooks/usePublicFeeds";
1717
import type { ArtworkFeedItem, FeedCardItem, SpaceFeedItem } from "@/types/feed";
1818
import { normalizeImageUrl } from "@/utils/normalizeImageUrl";
19+
import { useMyRole } from "@/hooks/useMyRole";
20+
import { Plus } from "lucide-react";
21+
import { useRouter } from "next/navigation";
1922

2023
const tabs = [
2124
{ label: "추천", value: "recommend" },
@@ -51,10 +54,13 @@ function toSpaceCard(item: SpaceFeedItem): FeedCardItem {
5154

5255
export 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

Comments
 (0)