diff --git a/src/api/api_v1_types.ts b/src/api/api_v1_types.ts
index 384de8d6778b60f2a3ea73f81010c97cd53961e2..0717feeb42592b94d990eea5c0d00ccce54af278 100644
--- a/src/api/api_v1_types.ts
+++ b/src/api/api_v1_types.ts
@@ -18,12 +18,13 @@ export type status_value = "available" | "readonly" | "unavailable";
export type changelog_entry_type = "modification" | "deletion_change" | "creation" | "unknown";
export type object_type =
| "announcement"
- | "featured"
+ | "chapter"
| "course"
+ | "featured"
| "lecture"
- | "permission"
- | "chapter"
- | "publish_medium";
+ | "media_process_template"
+ | "publish_medium"
+ | "sorter_file";
// Complex Types
export interface announcement {
@@ -36,13 +37,6 @@ export interface announcement {
expiration_time?: datetime;
}
-export interface homepage {
- featured: featured[];
- upcoming_lectures: lecture[];
- latest_lectures: lecture[];
- course_context: { [key: int]: course };
-}
-
export interface featured {
display_priority?: int;
id?: int;
@@ -73,7 +67,6 @@ export interface course {
organizer: string;
semester?: semester_string;
short_name: string;
- // TODO not used?
show_chapters_on_course: boolean;
topic: string;
visible?: boolean;
@@ -360,16 +353,8 @@ export interface PutFeedbackNewRequest {
/// GET /object_management/{object_type}/{object_id}/configuration
// Request Interface
-// TODO: fix?
export interface GetConfigurationRequest {
- object_type:
- | "announcement"
- | "featured"
- | "course"
- | "lecture"
- | "permission"
- | "chapter"
- | "publish_medium";
+ object_type: object_type;
object_id: int;
}
// Response Interface
@@ -381,14 +366,7 @@ export interface GetConfigurationResponse {
/// GET /object_management/{object_type}/new/configuration
// Request Interface
export interface GetNewConfigurationRequest {
- object_type:
- | "announcement"
- | "featured"
- | "course"
- | "lecture"
- | "permission"
- | "chapter"
- | "publish_medium";
+ object_type: object_type;
}
// Response Interface
export interface GetNewConfigurationResponse {
@@ -471,7 +449,7 @@ export interface SearchRequest {
export interface SearchResponse {
courses: int[];
lectures: lecture[];
- course_context: { [key: int]: course };
+ course_context: { [key: string]: course };
}
/// POST /object_management/{object_type}/{object_id}/resurrect
diff --git a/src/components/CourseListing.tsx b/src/components/CourseListing.tsx
index 41b361ba16dc7f17559e4f3456db7e71bb6c0a22..5d20150933bf90a9a4e611376cc23f81fab0a279 100644
--- a/src/components/CourseListing.tsx
+++ b/src/components/CourseListing.tsx
@@ -154,10 +154,12 @@ function ListingHeader({ course }: { course: GetCourseResponse }) {
export function LectureListItem({
lecture,
course_handle,
+ show_chapters,
...props
}: {
lecture: lecture;
- course_handle?: string;
+ course_handle: string;
+ show_chapters: boolean;
[key: string]: any;
}) {
const { editMode } = useEditMode();
@@ -184,7 +186,7 @@ export function LectureListItem({
}}
className="col-sm-2 col-12 thumbnailimg"
>
- <Link href={`/${course_handle ?? lecture.course_id}/${lecture.id}`}>
+ <Link href={`/${course_handle}/${lecture.id}`}>
<span
aria-hidden="true"
className={"playpreviewbtn bi bi-play-circle"}
@@ -262,7 +264,7 @@ export function LectureListItem({
allowMarkdown={true}
/>
</li>
- {lecture.chapters?.map((chapter) => (
+ {show_chapters && lecture.chapters?.map((chapter) => (
<li
key={chapter.name}
className={
@@ -273,7 +275,7 @@ export function LectureListItem({
<span className="bi bi-play" />
<Link
href={
- `/${course_handle ?? lecture.course_id}/${lecture.id}?t=` +
+ `/${course_handle}/${lecture.id}?t=` +
chapter.start_time
}
>
@@ -388,6 +390,7 @@ function ListingBody({ course }: { course: GetCourseResponse }) {
key={lecture.id}
lecture={lecture}
course_handle={course.handle}
+ show_chapters={course.show_chapters_on_course}
/>
))}
</ul>
diff --git a/src/pages/search.tsx b/src/pages/search.tsx
index 8753e28805ed86e8f86187c391c61106e502f13b..9510aa6235c5bb3d8a448a61fabca0dda76db9ab 100644
--- a/src/pages/search.tsx
+++ b/src/pages/search.tsx
@@ -27,9 +27,11 @@ function CourseResults({ courses }: { courses: course[] }) {
function LectureResults({
lectures,
+ course_context,
tabIndexBegin,
}: {
lectures: lecture[];
+ course_context: { [key: string]: course };
tabIndexBegin: number;
}) {
return (
@@ -40,6 +42,8 @@ function LectureResults({
<LectureListItem
key={lecture.id}
lecture={lecture}
+ course_handle={course_context[lecture.course_id.toString()].handle}
+ show_chapters={course_context[lecture.course_id.toString()].show_chapters_on_course}
tabIndex={tabIndexBegin + ind}
/>
))}
@@ -97,6 +101,7 @@ export function SearchResults({ query }: { query: string }) {
{searchResults.lectures.length > 0 && (
<LectureResults
lectures={searchResults.lectures}
+ course_context={searchResults.course_context}
tabIndexBegin={searchResults.courses.length + 1}
/>
)}