diff --git a/src/routes/stories/$profile_name/$story_id.tsx b/src/routes/stories/$profile_name/$story_id.tsx
index ef0ad3a..9ad3b80 100644
--- a/src/routes/stories/$profile_name/$story_id.tsx
+++ b/src/routes/stories/$profile_name/$story_id.tsx
@@ -1,9 +1,57 @@
import { createFileRoute } from '@tanstack/react-router'
+import { StoryViewer } from '@/features/story-viewer/ui/StoryViewer'
+import { useQuery } from '@tanstack/react-query'
+import { getStoryDetail } from '@/entities/story/api/getStoryDetail'
+import { useProfile } from '@/entities/user/model/hooks/useProfile'
+import { useMemo } from 'react'
+import type { StoryFeedItem } from '@/entities/story/model/types'
export const Route = createFileRoute('/stories/$profile_name/$story_id')({
component: RouteComponent,
})
function RouteComponent() {
- return
Hello "/stories/$profile_name/$story_id"!
+ const { profile_name: userId } = Route.useParams()
+ const { data: profileData } = useProfile(Number(userId))
+
+ const { data: detailData, isLoading: isDetailLoading } = useQuery({
+ queryKey: ['stories', 'user', userId],
+ queryFn: () => getStoryDetail(userId),
+ enabled: !!userId,
+ })
+
+ const userStoryFeedItem: StoryFeedItem | undefined = useMemo(() => {
+ if (!detailData || !profileData) return undefined
+ return {
+ userId: String(profileData.userId),
+ nickname: profileData.nickname,
+ profileImageUrl: profileData.profileImageUrl,
+ hasUnseenStory: detailData.hasUnseenStory,
+ stories: detailData.stories,
+ }
+ }, [detailData, profileData])
+
+ const feed = useMemo(() => {
+ if (!userStoryFeedItem) return []
+ return [userStoryFeedItem]
+ }, [userStoryFeedItem])
+
+ if (isDetailLoading || !userStoryFeedItem) {
+ return (
+
+ )
+ }
+
+ return (
+
+
+
+ )
}
diff --git a/src/widgets/profile-header/ui/ProfileAvatar.tsx b/src/widgets/profile-header/ui/ProfileAvatar.tsx
index a239d4a..3bf38ea 100644
--- a/src/widgets/profile-header/ui/ProfileAvatar.tsx
+++ b/src/widgets/profile-header/ui/ProfileAvatar.tsx
@@ -10,6 +10,7 @@ type ProfileAvatarProps = {
hasStory?: boolean
hasUnseenStory?: boolean
userId?: number
+ firstStoryId?: number
}
export function ProfileAvatar({
@@ -18,6 +19,7 @@ export function ProfileAvatar({
hasStory = false,
hasUnseenStory = false,
userId,
+ firstStoryId,
}: ProfileAvatarProps) {
const avatarContent = avatarUrl ? (
@@ -51,9 +53,15 @@ export function ProfileAvatar({
)
- if (userId) {
+ if (userId && firstStoryId) {
return (
-
+
{content}
)
diff --git a/src/widgets/profile-header/ui/ProfileHeader.tsx b/src/widgets/profile-header/ui/ProfileHeader.tsx
index cc6b70a..b101942 100644
--- a/src/widgets/profile-header/ui/ProfileHeader.tsx
+++ b/src/widgets/profile-header/ui/ProfileHeader.tsx
@@ -86,6 +86,7 @@ export function ProfileHeader({
hasStory={hasStory}
hasUnseenStory={userStoriesData?.hasUnseenStory}
userId={userId}
+ firstStoryId={userStoriesData?.stories[0]?.id}
/>