Clear progress for roadmaps

feat/migrate-roadmaps
Kamran Ahmed 11 months ago
parent 39153e5f3d
commit 9fb5388ba1
  1. 11
      src/components/EditorRoadmap/EditorRoadmap.tsx
  2. 25
      src/lib/resource-progress.ts

@ -4,11 +4,15 @@ import {
type RoadmapRendererProps, type RoadmapRendererProps,
} from './EditorRoadmapRenderer'; } from './EditorRoadmapRenderer';
import { Spinner } from '../ReactIcons/Spinner'; import { Spinner } from '../ReactIcons/Spinner';
import type { ResourceType } from '../../lib/resource-progress'; import {
clearMigratedRoadmapProgress,
type ResourceType,
} from '../../lib/resource-progress';
import { httpGet } from '../../lib/http'; import { httpGet } from '../../lib/http';
import { ProgressNudge } from '../FrameRenderer/ProgressNudge'; import { ProgressNudge } from '../FrameRenderer/ProgressNudge';
import { getUrlParams } from '../../lib/browser.ts'; import { getUrlParams } from '../../lib/browser.ts';
import { cn } from '../../lib/classname.ts'; import { cn } from '../../lib/classname.ts';
import { getUser } from '../../lib/jwt.ts';
type EditorRoadmapProps = { type EditorRoadmapProps = {
resourceId: string; resourceId: string;
@ -47,6 +51,7 @@ export function EditorRoadmap(props: EditorRoadmapProps) {
}; };
useEffect(() => { useEffect(() => {
clearMigratedRoadmapProgress(resourceType, resourceId);
loadRoadmapData().finally(); loadRoadmapData().finally();
}, [resourceId]); }, [resourceId]);
@ -86,7 +91,9 @@ export function EditorRoadmap(props: EditorRoadmapProps) {
} as CSSProperties) } as CSSProperties)
: undefined : undefined
} }
className={'flex aspect-[var(--aspect-ratio)] w-full justify-center flex-col'} className={
'flex aspect-[var(--aspect-ratio)] w-full flex-col justify-center'
}
> >
<EditorRoadmapRenderer <EditorRoadmapRenderer
{...roadmapData} {...roadmapData}

@ -81,6 +81,31 @@ export async function updateResourceProgress(
return response; return response;
} }
export function clearMigratedRoadmapProgress(
resourceType: string,
resourceId: string,
) {
const migratedRoadmaps = ['frontend'];
if (!migratedRoadmaps.includes(resourceId)) {
return;
}
const userId = getUser()?.id;
if (!userId) {
return;
}
const roadmapKey = `${resourceType}-${resourceId}-${userId}-progress`;
const clearedKey = `${resourceType}-${resourceId}-${userId}-cleared`;
if (localStorage.getItem(clearedKey)) {
return;
}
localStorage.removeItem(`${resourceType}-${resourceId}-${userId}-progress`);
localStorage.setItem(clearedKey, '1');
}
export async function getResourceProgress( export async function getResourceProgress(
resourceType: 'roadmap' | 'best-practice', resourceType: 'roadmap' | 'best-practice',
resourceId: string, resourceId: string,

Loading…
Cancel
Save