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} />