Yimaru-Admin/src/lib/parentContextPractice.ts
Yared Yemane 39312bf509 feat(admin): content management publish/access controls, reorder, and team invites
Wire publish status and access tier toggles, list search/filtering, and hierarchy reorder APIs across content pages; switch team member adds to email invites and collapse long page descriptions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 05:34:33 -07:00

42 lines
1.2 KiB
TypeScript

import type {
GetPracticesByParentContextResponse,
ParentContextPractice,
PracticePublishStatus,
} from "../types/course.types"
import { isPublishedPublishStatus, normalizePublishStatus } from "./publishStatus"
export function unwrapPracticesList(
res: {
data?: GetPracticesByParentContextResponse & {
Data?: GetPracticesByParentContextResponse["data"]
}
},
): ParentContextPractice[] {
const body = res.data
if (!body) return []
const data = body.data ?? body.Data
const raw = data?.practices
return Array.isArray(raw) ? raw : []
}
export function practicePublishStatus(
practice: ParentContextPractice,
): PracticePublishStatus | null {
return normalizePublishStatus(practice.publish_status)
}
export function isPracticePublished(practice: ParentContextPractice): boolean {
return isPublishedPublishStatus(practice.publish_status)
}
export function isPracticeDraft(practice: ParentContextPractice): boolean {
const status = practicePublishStatus(practice)
return status === "DRAFT" || status === null
}
export function draftPracticesForParent(
practices: ParentContextPractice[],
): ParentContextPractice[] {
return practices.filter(isPracticeDraft)
}