diff --git a/src/components/CustomRoadmap/CustomRoadmap.tsx b/src/components/CustomRoadmap/CustomRoadmap.tsx index 1d713c8fb..06be83417 100644 --- a/src/components/CustomRoadmap/CustomRoadmap.tsx +++ b/src/components/CustomRoadmap/CustomRoadmap.tsx @@ -40,6 +40,17 @@ export interface RoadmapContentDocument { }[]; } +export type CreatorType = { + id: string; + name: string; + avatar: string; +}; + +export type GetRoadmapResponse = RoadmapDocument & { + canManage: boolean; + creator?: CreatorType; +}; + export function hideRoadmapLoader() { const loaderEl = document.querySelector( '[data-roadmap-loader]' @@ -53,7 +64,7 @@ export function CustomRoadmap() { const { id, secret } = getUrlParams() as { id: string; secret: string }; const [isLoading, setIsLoading] = useState(true); - const [roadmap, setRoadmap] = useState(null); + const [roadmap, setRoadmap] = useState(null); const [error, setError] = useState(); async function getRoadmap() { @@ -66,7 +77,7 @@ export function CustomRoadmap() { roadmapUrl.searchParams.set('secret', secret); } - const { response, error } = await httpGet( + const { response, error } = await httpGet( roadmapUrl.toString() ); diff --git a/src/components/CustomRoadmap/RoadmapHeader.tsx b/src/components/CustomRoadmap/RoadmapHeader.tsx index ac161447d..6a8d1243f 100644 --- a/src/components/CustomRoadmap/RoadmapHeader.tsx +++ b/src/components/CustomRoadmap/RoadmapHeader.tsx @@ -15,7 +15,12 @@ export function RoadmapHeader(props: RoadmapHeaderProps) { const $canManageCurrentRoadmap = useStore(canManageCurrentRoadmap); const $currentRoadmap = useStore(currentRoadmap); - const { title, description, _id: roadmapId } = useStore(currentRoadmap) || {}; + const { + title, + description, + _id: roadmapId, + creator, + } = useStore(currentRoadmap) || {}; const [isSharing, setIsSharing] = useState(false); const toast = useToast(); @@ -54,10 +59,20 @@ export function RoadmapHeader(props: RoadmapHeaderProps) { } } + const avatarUrl = creator?.avatar + ? `${import.meta.env.PUBLIC_AVATAR_BASE_URL}/${creator?.avatar}` + : '/images/default-avatar.png'; + return (
-
+
+ +

+ {creator?.name || 'Anonymous'} +

+
+

{title}

{description} diff --git a/src/components/CustomRoadmap/SkeletonRoadmapHeader.tsx b/src/components/CustomRoadmap/SkeletonRoadmapHeader.tsx index f552d7123..2879e9f9f 100644 --- a/src/components/CustomRoadmap/SkeletonRoadmapHeader.tsx +++ b/src/components/CustomRoadmap/SkeletonRoadmapHeader.tsx @@ -2,14 +2,18 @@ export function SkeletonRoadmapHeader() { return (

-
+
+
+
+
+
-
-
+
+
diff --git a/src/stores/roadmap.ts b/src/stores/roadmap.ts index a9be65ffb..0cfaddead 100644 --- a/src/stores/roadmap.ts +++ b/src/stores/roadmap.ts @@ -1,7 +1,7 @@ import { atom, computed } from 'nanostores'; -import { type RoadmapDocument } from '../components/CustomRoadmap/CreateRoadmap/CreateRoadmapModal'; +import type { GetRoadmapResponse } from '../components/CustomRoadmap/CustomRoadmap'; -export const currentRoadmap = atom(undefined); +export const currentRoadmap = atom(undefined); export const isCurrentRoadmapPersonal = computed( currentRoadmap, (roadmap) => !roadmap?.teamId