Skip to content

Commit

Permalink
added types to course pages and components
Browse files Browse the repository at this point in the history
  • Loading branch information
robertguss committed Dec 1, 2021
1 parent d5573f3 commit ee6968d
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 26 deletions.
3 changes: 2 additions & 1 deletion components/Course/CourseContent.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import dynamic from "next/dynamic"
import { CheckIcon } from "@heroicons/react/outline"
import CourseProgress from "./CourseProgress"
import { Lesson } from "common"

const CourseNextLessonBtn = dynamic(() => import("./CourseNextLessonBtn"), {
ssr: false,
})

type Props = {
title: string
lessons: object[]
lessons: Lesson[]
learnFeatures: string[]
progressService: object
course: string
Expand Down
9 changes: 8 additions & 1 deletion components/Course/CourseNextLessonBtn.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
import Link from "next/link"
import { isLessonCompleted } from "../../utils/machineUtils"
import { Lesson } from "common"

type Props = {
lessons: Lesson[]
progressService: object
course: string
}

export default function CourseNextLessonBtn({
lessons,
progressService,
course,
}) {
}: Props) {
const incompleLessons = lessons
.map((lesson) => {
if (!isLessonCompleted(progressService, `${course}/${lesson.slug}`)) {
Expand Down
13 changes: 12 additions & 1 deletion components/Course/CourseProgress.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import dynamic from "next/dynamic"
import Link from "next/link"
import { isLessonCompleted } from "../../utils/machineUtils"
import { Lesson } from "common"

const ProgressLine = dynamic(() => import("../Progress/ProgressLine"), {
ssr: false,
Expand All @@ -18,7 +19,17 @@ function classNames(...classes) {
return classes.filter(Boolean).join(" ")
}

export default function CourseProgress({ lessons, progressService, course }) {
type Props = {
lessons: Lesson[]
course: string
progressService: object
}

export default function CourseProgress({
lessons,
progressService,
course,
}: Props) {
return (
<nav aria-label="Progress" className="mt-12" data-test="course-steps">
<ol className="overflow-hidden">
Expand Down
4 changes: 3 additions & 1 deletion components/Progress/ProgressLine.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { Lesson } from "common"

type Props = {
index: number
isCompleted: boolean
lessons: []
lessons: Lesson[]
}

export default function ProgressLine({ index, isCompleted, lessons }: Props) {
Expand Down
56 changes: 34 additions & 22 deletions types/common.d.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,50 @@
export type LessonTableOfContents = {
content: string
slug: string
lvl: number
current?: boolean
}

export type Lessons = {
title: string
description: string
slug: string
challenges: []
export interface Challenge {
challengeType: string
question: string
answers: string[]
correctAnswerIndex: number
}

export interface ChallengeAnswer {
id: string
answeredCorrectly?: boolean
skipped?: boolean
}

export type Course = {
title: string
slug: string
description: string
image: string
learnFeatures: string[]
lessons: Lessons[]
}

export interface EventPayload {
type: string
id: string
challengeIndex: number
}

export type Lesson = {
title: string
description: string
slug: string
challenges?: Challenge[]
}

export type LessonTableOfContents = {
content: string
slug: string
lvl: number
current?: boolean
}

export interface MultipleChoiceChallenge extends Challenge {
answers: []
correctAnswerIndex: string
}

export interface MultipleChoicePayload extends EventPayload {
userAnswerIndex: number
}
Expand All @@ -32,13 +54,3 @@ export interface ProgressContext {
lessons: object[]
disableChallenges: boolean
}

export interface Challenge {
challengeType: string
question: string
}

export interface MultipleChoiceChallenge extends Challenge {
answers: []
correctAnswerIndex: string
}

0 comments on commit ee6968d

Please sign in to comment.