diff --git a/js/content.js b/js/content.js index 11ab4b6..433cb90 100644 --- a/js/content.js +++ b/js/content.js @@ -2220,10 +2220,22 @@ function isCourseHidden(courseId) { return !!card && card.hidden === true; } +// Courses the user ticked "Hide this course from the Better Todo list" in the +// card edit menu are dropped from the todo list and its progress display. +// This is independent of dashboard visibility (isCourseHidden), so a course +// can stay on the dashboard while its items stay off the todo list, and +// vice versa. Personal tasks (planner notes with no course) are always kept. +function isCourseTodoHidden(courseId) { + if (courseId === undefined || courseId === null) return false; + const cards = options.custom_cards || {}; + const card = cards[String(courseId)] || cards[courseId]; + return !!card && card.hide_todo === true; +} + function filterHiddenCourses(data) { return data.filter(item => { const cid = item.course_id || item.context_id || item?.plannable?.course_id; - return !isCourseHidden(cid); + return !isCourseHidden(cid) && !isCourseTodoHidden(cid); }); } diff --git a/js/popup.js b/js/popup.js index 761c1a8..7cbe587 100644 --- a/js/popup.js +++ b/js/popup.js @@ -2410,7 +2410,7 @@ function createCourseButton(courseId, courseData) { button.textContent = displayName; button.dataset.courseId = courseId; - if (courseData.img || courseData.hidden || courseData.hide) { + if (courseData.img || courseData.hidden || courseData.hide || courseData.hide_todo) { button.classList.add("customized"); } @@ -2469,6 +2469,14 @@ function showCardEditMenu(courseId, courseData) { +