-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpopup.js
64 lines (55 loc) · 2.39 KB
/
popup.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
const noCoursesFoundText = document.getElementById('noCoursesFoundText')
const wrongPageText = document.getElementById('wrongPageText')
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
const tab = tabs[0];
if (tab.url.startsWith("https://moodle.concordia.ca")) {
wrongPageText.style.display = "none"
chrome.tabs.sendMessage(tab.id, { receiver: "content_script", action: "getCourseElements" }, (courseElements) => {
if (courseElements?.length > 0) {
noCoursesFoundText.style.display = "none"
populate_course_list_element()
} else {
noCoursesFoundText.style.display = "initial"
}
})
} else {
wrongPageText.style.display = "initial"
}
});
function populate_course_list_element() {
chrome.storage.sync.get("savedCourses", ({ savedCourses }) => {
const course_list = document.getElementById('content')
for (let [courseName, isShown] of Object.entries(savedCourses)) {
course_list.append(create_course_element(courseName, isShown))
}
})
}
function create_course_element(courseName, isShown) {
const courseLabel = document.createTextNode(courseName)
const courseShownCheckbox = document.createElement('input')
courseShownCheckbox.type = 'checkbox'
courseShownCheckbox.checked = isShown
courseShownCheckbox.addEventListener('change', function () {
toggle_course_visibility(courseName, this.checked)
})
const course_div = document.createElement('div')
course_div.id = courseName
course_div.appendChild(courseLabel)
course_div.appendChild(courseShownCheckbox)
toggle_course_visibility(courseName, isShown)
return course_div
}
function toggle_course_visibility(course_name, isChecked) {
chrome.storage.sync.get({ "savedCourses": {} }, ({ savedCourses }) => {
// Update state
savedCourses[course_name] = isChecked
chrome.storage.sync.set({ "savedCourses": savedCourses }, () => {
// Send message to content script
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
const tab = tabs[0];
// Now that its been set, update the sidebar to reflect that
chrome.tabs.sendMessage(tab.id, { receiver: "content_script", action: "updateSidebar" })
})
})
})
}