feat: add ai roadmap slug (#5529)
* Update * Add stats and health endpoints * Add pre-render * fix: redirect to the error page * Fix generate-renderer issue * Rename * Fix best practice topics not loading * Handle SSR for static pages * Refactor faqs * Refactor best practices * Fix absolute import * Fix stats * Add custom roadmap page * Minor UI change * feat: custom roadmap slug routes (#4987) * feat: replace roadmap slug * fix: remove roadmap slug * feat: username route * fix: user public page * feat: show roadmap progress * feat: update public profile * fix: replace with toast * feat: user public profile page * feat: implement profile form * feat: implement user profile roadmap page * refactor: remove logs * fix: increase progress gap * fix: remove title margin * fix: breakpoint for roadmaps * Update dependencies * Upgrade dependencies * fix: improper avatars * fix: heatmap focus * wip: remove `getStaticPaths` * fix: add disable props * wip * feat: add email icon * fix: update pnpm lock * fix: implement author page * Fix beginner roadmaps not working * Changes to form * Refactor profile and form * Refactor public profile form * Rearrange sidebar items * Update UI for public form * Minor text update * Refactor public profile form * Error page for user * Revamp UI for profile page * Add public profile page * Fix vite warnings * Add private profile banner * feat: on blur check username * Update fetch depth * Add error detail * Use hybrid mode of rendering * Do not pre-render stats pages * Update deployment workflow * Update deployment workflow * wip * wip * wip * feat: add slug navigation * feat: add ai roadmap slug * feat: add explore page slug --------- Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>fix/ai-slug
parent
6326a80b22
commit
961d398b8d
6 changed files with 148 additions and 31 deletions
@ -0,0 +1,20 @@ |
||||
import { type APIContext } from 'astro'; |
||||
import { api } from './api.ts'; |
||||
|
||||
export type GetAIRoadmapBySlugResponse = { |
||||
id: string; |
||||
term: string; |
||||
title: string; |
||||
data: string; |
||||
isAuthenticatedUser: boolean; |
||||
}; |
||||
|
||||
export function aiRoadmapApi(context: APIContext) { |
||||
return { |
||||
getAIRoadmapBySlug: async function (roadmapSlug: string) { |
||||
return api(context).get<GetAIRoadmapBySlugResponse>( |
||||
`${import.meta.env.PUBLIC_API_URL}/v1-get-ai-roadmap-by-slug/${roadmapSlug}`, |
||||
); |
||||
}, |
||||
}; |
||||
} |
@ -0,0 +1,34 @@ |
||||
--- |
||||
import { aiRoadmapApi } from '../../api/ai-roadmap'; |
||||
import BaseLayout from '../../layouts/BaseLayout.astro'; |
||||
import { GenerateRoadmap } from '../../components/GenerateRoadmap/GenerateRoadmap'; |
||||
|
||||
export const prerender = false; |
||||
|
||||
interface Params extends Record<string, string | undefined> { |
||||
aiRoadmapSlug: string; |
||||
} |
||||
|
||||
const { aiRoadmapSlug } = Astro.params as Params; |
||||
if (!aiRoadmapSlug) { |
||||
return Astro.redirect('/404'); |
||||
} |
||||
|
||||
const aiRoadmapClient = aiRoadmapApi(Astro as any); |
||||
const { response: roadmap, error } = |
||||
await aiRoadmapClient.getAIRoadmapBySlug(aiRoadmapSlug); |
||||
|
||||
let errorMessage = ''; |
||||
if (error || !roadmap) { |
||||
errorMessage = error?.message || 'Error loading AI Roadmap'; |
||||
} |
||||
const title = roadmap?.title || 'Roadmap AI'; |
||||
--- |
||||
|
||||
<BaseLayout title={title}> |
||||
<GenerateRoadmap |
||||
roadmapId={roadmap?.id} |
||||
isAuthenticatedUser={roadmap?.isAuthenticatedUser} |
||||
client:load |
||||
/> |
||||
</BaseLayout> |
Loading…
Reference in new issue