11import type { ReactElement } from 'react' ;
2- import React , { useMemo , useState } from 'react' ;
2+ import React , { useMemo } from 'react' ;
33import { AboutMe } from '@dailydotdev/shared/src/features/profile/components/AboutMe' ;
44import { Activity } from '@dailydotdev/shared/src/features/profile/components/Activity' ;
55import { useProfile } from '@dailydotdev/shared/src/hooks/profile/useProfile' ;
@@ -27,7 +27,7 @@ import { Header } from '@dailydotdev/shared/src/components/profile/Header';
2727import classNames from 'classnames' ;
2828import { ProfileCompletion } from '@dailydotdev/shared/src/features/profile/components/ProfileWidgets/ProfileCompletion' ;
2929import { Share } from '@dailydotdev/shared/src/features/profile/components/ProfileWidgets/Share' ;
30- import { ProfilePreviewToggle } from '@dailydotdev/shared/src/components/profile/ProfilePreviewToggle ' ;
30+ import { useRouter } from 'next/router ' ;
3131import {
3232 getLayout as getProfileLayout ,
3333 getProfileSeoDefaults ,
@@ -44,15 +44,25 @@ const ProfilePage = ({
4444 sources,
4545} : ProfileLayoutProps ) : ReactElement => {
4646 useJoinReferral ( ) ;
47+ const router = useRouter ( ) ;
4748 const { status, onUpload, shouldShow } = useUploadCv ( ) ;
4849 const { checkHasCompleted } = useActions ( ) ;
4950 const hasClosedBanner = useMemo (
5051 ( ) => checkHasCompleted ( ActionType . ClosedProfileBanner ) ,
5152 [ checkHasCompleted ] ,
5253 ) ;
5354
54- const { user, isUserSame } = useProfile ( initialUser ) ;
55- const [ isPreviewMode , setIsPreviewMode ] = useState ( false ) ;
55+ const { user, isUserSame : isUserSameBase } = useProfile ( initialUser ) ;
56+
57+ // Check if preview mode is enabled via query param
58+ const isPreviewMode = router . query . preview === 'true' ;
59+
60+ // When in preview mode, act as a visitor (not same user)
61+ const isSameUser = useMemo (
62+ ( ) => isUserSameBase && ! isPreviewMode ,
63+ [ isUserSameBase , isPreviewMode ] ,
64+ ) ;
65+
5666 const { ref : stickyRef , progress : stickyProgress } =
5767 useDynamicHeader < HTMLDivElement > ( true ) ;
5868 const hideSticky = ! stickyProgress ;
@@ -61,41 +71,29 @@ const ProfilePage = ({
6171 ...getProfileSeoDefaults ( user , { } , noindex ) ,
6272 } ;
6373
64- const shouldShowBanner = isUserSame && shouldShow && ! hasClosedBanner ;
65-
66- // When in preview mode, hide owner-only elements
67- const showAsVisitor = isUserSame && isPreviewMode ;
74+ const shouldShowBanner = isSameUser && shouldShow && ! hasClosedBanner ;
6875
6976 return (
7077 < div className = "rounded-16 border border-t-0 border-border-subtlest-tertiary laptop:border-t" >
7178 < NextSeo { ...seo } />
7279 < Header
7380 user = { user }
74- isSameUser = { isUserSame && ! showAsVisitor }
81+ isSameUser = { isSameUser }
7582 sticky = { ! hideSticky }
7683 className = { classNames (
7784 'left-0 top-0 z-3 w-full bg-background-default transition-all duration-75 laptop:hidden' ,
7885 ! hideSticky ? 'fixed tablet:pl-20' : 'relative' ,
7986 ) }
8087 />
81- { isUserSame && ! showAsVisitor && (
82- < ProfileCompletion className = "laptop:hidden" />
83- ) }
88+ { isSameUser && < ProfileCompletion className = "laptop:hidden" /> }
8489 < div ref = { stickyRef } />
8590 < ProfileHeader
8691 user = { user }
8792 userStats = { userStats }
88- isSameUser = { isUserSame && ! showAsVisitor }
93+ isSameUser = { isSameUser }
8994 />
9095 < div className = "flex flex-col divide-y divide-border-subtlest-tertiary p-6" >
91- { isUserSame && ! showAsVisitor && (
92- < ProfilePreviewToggle
93- isPreviewMode = { isPreviewMode }
94- onToggle = { ( ) => setIsPreviewMode ( ! isPreviewMode ) }
95- className = "mb-4"
96- />
97- ) }
98- { shouldShowBanner && ! showAsVisitor && (
96+ { shouldShowBanner && (
9997 < AutofillProfileBanner
10098 onUpload = { onUpload }
10199 isLoading = { status === 'pending' }
@@ -108,7 +106,7 @@ const ProfilePage = ({
108106 < ProfileUserHotTakes user = { user } />
109107 < ProfileUserWorkspacePhotos user = { user } />
110108 < Activity user = { user } />
111- { isUserSame && ! showAsVisitor && (
109+ { isSameUser && (
112110 < Share permalink = { user ?. permalink } className = "laptop:hidden" />
113111 ) }
114112 < div className = "py-4 laptop:hidden" >
0 commit comments