Skip to content

Commit 013ff55

Browse files
committed
feat: add isArchived flag to filter out archived course ideas
Add a new boolean attribute `isArchived` to CourseExtensionIdea model to mark ideas that should be excluded from active views. Update multiple components and controllers to filter out archived ideas, ensuring only relevant and current extension ideas appear in course listings, roadmap, and latest releases. This improves clarity and user experience by hiding outdated or deprecated content without deleting data.
1 parent e70461c commit 013ff55

File tree

4 files changed

+8
-1
lines changed

4 files changed

+8
-1
lines changed

app/components/course-page/configure-extensions-modal/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export default class ConfigureExtensionsModal extends Component<Signature> {
2727

2828
get orderedCourseExtensionIdeas() {
2929
return this.allCourseExtensionIdeas
30+
.filter((item) => !item.isArchived)
3031
.filter((item) => item.course === this.args.repository.course)
3132
.filter((item) => item.developmentStatus !== 'released')
3233
.sort(fieldComparator('sortPositionForRoadmapPage'));

app/components/latest-releases-card.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export default class LatestReleasesCard extends Component<Signature> {
2222
const releases: Release[] = [];
2323

2424
this.args.courseExtensionIdeas
25+
.filter((idea: CourseExtensionIdeaModel) => !idea.isArchived)
2526
.filter((idea: CourseExtensionIdeaModel) => idea.developmentStatusIsReleased)
2627
.forEach((idea: CourseExtensionIdeaModel) => {
2728
releases.push({

app/controllers/roadmap/course-extension-ideas.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,15 @@ export default class CourseExtensionIdeasController extends Controller {
2828
@service declare store: Store;
2929

3030
get orderedCourseExtensionIdeas() {
31-
return this.model.courseExtensionIdeas.filter((item) => item.course === this.selectedCourse).sort(fieldComparator('sortPositionForRoadmapPage'));
31+
return this.model.courseExtensionIdeas
32+
.filter((item) => !item.isArchived)
33+
.filter((item) => item.course === this.selectedCourse)
34+
.sort(fieldComparator('sortPositionForRoadmapPage'));
3235
}
3336

3437
get orderedCourses() {
3538
return this.model.courseExtensionIdeas
39+
.filter((item) => !item.isArchived)
3640
.filter((item) => !item.developmentStatusIsReleased)
3741
.map((item) => item.course)
3842
.reduce(uniqReducer(), [])

app/models/course-extension-idea.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export default class CourseExtensionIdeaModel extends Model {
1616
@attr('date') declare createdAt: Date;
1717
@attr('string') declare descriptionMarkdown: string;
1818
@attr('string') declare developmentStatus: string;
19+
@attr('boolean') declare isArchived: boolean;
1920
@attr('string') declare name: string;
2021
@attr('date') declare releasedAt: Date | null;
2122
@attr('string') declare slug: string;

0 commit comments

Comments
 (0)