From e08906725b5922e105d3eeaaa0468967108f83a1 Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Mon, 19 Oct 2020 10:13:42 -0700 Subject: [PATCH 1/7] Convert to await --- js/home.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/js/home.js b/js/home.js index f6bd75d3..dc477988 100644 --- a/js/home.js +++ b/js/home.js @@ -104,7 +104,7 @@ if (Setting.getValue("broadcasts") !== "disabled") { (function () { let upcomingList = document.querySelector(".upcoming-events .upcoming-list"); // Indicate submitted assignments in Upcoming - function indicateSubmitted() { + async function indicateSubmitted() { Logger.log("Checking to see if upcoming assignments are submitted"); upcomingList = document.querySelector(".upcoming-events .upcoming-list"); switch (Setting.getValue("indicateSubmission")) { @@ -127,14 +127,14 @@ if (Setting.getValue("broadcasts") !== "disabled") { for (let eventElement of upcomingEventElements) { let assignmentElement = eventElement.querySelector(".infotip a[href]"); let assignmentId = assignmentElement.href.match(/\/\d+/); - fetchApiJson(`/dropbox${assignmentId}/${getUserId()}`).then(j => { - if (j.revision && j.revision.length) { - Logger.log(`Marking submitted assignment ${assignmentId} as complete ✔`); - eventElement.classList.add("splus-assignment-complete"); - } else { - Logger.log(`Assignment ${assignmentId} is not submitted`); - } - }); + let revisions = await fetchApiJson(`dropbox${assignmentId}/${getUserId()}`).revision; + + if (revisions && revisions.length) { + Logger.log(`Marking submitted assignment ${assignmentId} as complete ✔`); + eventElement.classList.add("splus-assignment-complete"); + } else { + Logger.log(`Assignment ${assignmentId} is not submitted`); + } } } From 8a1bc584224171b9bd08f77ddfac69c3baaebe8a Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Mon, 19 Oct 2020 10:25:32 -0700 Subject: [PATCH 2/7] Bump version --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index e3abc98d..9d8a449c 100644 --- a/manifest.json +++ b/manifest.json @@ -8,7 +8,7 @@ "id": "schoology.plus@aopell.me" } }, - "version": "6.6.2", + "version": "6.6.3", "icons": { "128": "imgs/icon@128.png", "64": "imgs/icon@64.png", From 7120b7a1f26e812dd47315018aefcfe45707722a Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Mon, 19 Oct 2020 17:18:04 -0700 Subject: [PATCH 3/7] This line right here... --- js/home.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/home.js b/js/home.js index dc477988..37abfd06 100644 --- a/js/home.js +++ b/js/home.js @@ -127,7 +127,7 @@ if (Setting.getValue("broadcasts") !== "disabled") { for (let eventElement of upcomingEventElements) { let assignmentElement = eventElement.querySelector(".infotip a[href]"); let assignmentId = assignmentElement.href.match(/\/\d+/); - let revisions = await fetchApiJson(`dropbox${assignmentId}/${getUserId()}`).revision; + let revisions = (await fetchApiJson(`dropbox${assignmentId}/${getUserId()}`)).revision; if (revisions && revisions.length) { Logger.log(`Marking submitted assignment ${assignmentId} as complete ✔`); From 1942221b4fd11c320c631cf0620e3646c4c5c621 Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Mon, 19 Oct 2020 18:20:58 -0700 Subject: [PATCH 4/7] More error checking --- js/home.js | 20 +++++++++++++------- js/preload.js | 4 ++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/js/home.js b/js/home.js index 37abfd06..4a594236 100644 --- a/js/home.js +++ b/js/home.js @@ -127,13 +127,19 @@ if (Setting.getValue("broadcasts") !== "disabled") { for (let eventElement of upcomingEventElements) { let assignmentElement = eventElement.querySelector(".infotip a[href]"); let assignmentId = assignmentElement.href.match(/\/\d+/); - let revisions = (await fetchApiJson(`dropbox${assignmentId}/${getUserId()}`)).revision; - - if (revisions && revisions.length) { - Logger.log(`Marking submitted assignment ${assignmentId} as complete ✔`); - eventElement.classList.add("splus-assignment-complete"); - } else { - Logger.log(`Assignment ${assignmentId} is not submitted`); + try { + let revisionData = await fetchApiJson(`dropbox${assignmentId}/${getUserId()}`); + let revisions = revisionData.revision; + + if (revisions && revisions.length) { + Logger.log(`Marking submitted assignment ${assignmentId} as complete ✔`); + eventElement.classList.add("splus-assignment-complete"); + } else { + Logger.log(`Assignment ${assignmentId} is not submitted`); + } + } + catch (err) { + Logger.error(`Failed checking assignment ${assignmentId}: `, err); } } } diff --git a/js/preload.js b/js/preload.js index a7b5109b..d97e3a49 100644 --- a/js/preload.js +++ b/js/preload.js @@ -59,6 +59,10 @@ function getModalContents() { function backgroundPageFetch(url, init, bodyReadType) { return new Promise((resolve, reject) => { chrome.runtime.sendMessage({ type: "fetch", url: url, params: init, bodyReadType: bodyReadType }, function (response) { + if (response === undefined || response === null) { + Logger.error("[backgroundPageFetch] Response is undefined or null", response, chrome.runtime.lastError); + reject("Response is undefined or null. Last error: " + chrome.runtime.lastError); + } if (!response.success) { reject(response.error); return; From 9c70682399877511b62cff971e332fe1cbcdacbf Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Mon, 19 Oct 2020 19:20:24 -0700 Subject: [PATCH 5/7] Bump version to 6.6.4 --- js/background.js | 2 +- manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/js/background.js b/js/background.js index 27128ffb..a13a9ba1 100644 --- a/js/background.js +++ b/js/background.js @@ -317,7 +317,7 @@ function createLogPrefix(color) { } if (getBrowser() !== "Firefox") { - + // See https://bugs.chromium.org/p/chromium/issues/detail?id=966223#c3 chrome.webRequest.onHeadersReceived.addListener(details => { let exists = false; details.responseHeaders.map(item => { diff --git a/manifest.json b/manifest.json index 9d8a449c..f314e0f8 100644 --- a/manifest.json +++ b/manifest.json @@ -8,7 +8,7 @@ "id": "schoology.plus@aopell.me" } }, - "version": "6.6.3", + "version": "6.6.4", "icons": { "128": "imgs/icon@128.png", "64": "imgs/icon@64.png", From e9a40e05fe48b2a10dd15e7a39c9183da3ecccaa Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Mon, 19 Oct 2020 20:42:06 -0700 Subject: [PATCH 6/7] Show checkmark broadcast again --- js/version-specific.js | 56 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/js/version-specific.js b/js/version-specific.js index 642ab2cf..233a8c40 100644 --- a/js/version-specific.js +++ b/js/version-specific.js @@ -91,7 +91,12 @@ function createToastButton(text, id, onClick, transition = "fadeOutRight") { function saveBroadcasts(broadcasts, callback = undefined) { chrome.storage.sync.get(["unreadBroadcasts"], values => { let b = values.unreadBroadcasts || []; - b.push(...broadcasts); + let ids = b.map(x => x.id); + for(let br of broadcasts) { + if (!ids.includes(br.id)) { + b.push(br); + } + } chrome.storage.sync.set({ unreadBroadcasts: b }, callback); }); } @@ -113,9 +118,16 @@ function createBroadcast(id, title, message, timestamp = Date.now()) { * @param {...number} ids Broadcasts to delete */ function deleteBroadcasts(...ids) { - chrome.storage.sync.get(["unreadBroadcasts"], v => { - chrome.storage.sync.set({ unreadBroadcasts: v.unreadBroadcasts.filter(x => !ids.includes(x.id)) }); - }); + for (let id of ids) { + let unreadBroadcasts = Setting.getValue("unreadBroadcasts"); + unreadBroadcasts.splice(unreadBroadcasts.findIndex(x => x.id == id), 1); + Setting.setValue("unreadBroadcasts", unreadBroadcasts); + + let broadcastElement = document.getElementById(`broadcast${id}`); + if (broadcastElement) { + broadcastElement.outerHTML = ""; + } + } } /* @@ -227,13 +239,45 @@ let migrationsTo = { new Date(2020, 9 /* October */, 19) ) ]); + }, + "6.6.4": function (currentVersion, previousVersion) { + if (currentVersion === "6.6.4") { + saveBroadcasts([ + createBroadcast( + 660, + "Checkmarks for submitted assignments!", + ` +
+ Schoology Plus now shows checkmarks for submitted assingments in the Upcoming box! + +

By default, green check marks are shown on all + assignments you've submitted. There are also options for putting a strikethrough + through the assignment title or hiding the assignments completely. Of course you can also turn this feature off in settings.

+ +

Click here to change this setting

+
+ + `, + new Date(2020, 9 /* October */, 19) + ), + createBroadcast( + 664, + "Checkmarks work now!", + `There was a major bug causing check marks not to appear in the last release (also sometimes causing Quick Access to disappear). + The bug has been fixed and both features should work again. Sorry about that!`, + new Date(2020, 9 /* October */, 20) + ) + ]); + + deleteBroadcasts(660); + } } }; function versionSpecificFirstLaunch(currentVersion, previousVersion) { Logger.log("[Updater] First launch after update, updating to ", currentVersion, " from ", previousVersion); - if(!previousVersion) { + if (!previousVersion) { trackEvent("Install", currentVersion, "Versions"); } else { trackEvent("Update", `${previousVersion} to ${currentVersion}`, "Versions"); @@ -241,7 +285,7 @@ function versionSpecificFirstLaunch(currentVersion, previousVersion) { // TODO add special handling if any migrations return a Promise such that we run in order for (let migrateTo in migrationsTo) { - if (!previousVersion) { + if (!previousVersion) { migrationsTo[migrateTo](currentVersion, previousVersion); } else if (compareVersions(migrateTo, currentVersion) <= 0 && compareVersions(migrateTo, previousVersion) > 0) { migrationsTo[migrateTo](currentVersion, previousVersion); From ac5582561d90479fcb6106e62c788312b7f93037 Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Mon, 19 Oct 2020 20:53:01 -0700 Subject: [PATCH 7/7] Fixed timers --- css/modern.css | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/css/modern.css b/css/modern.css index ca555b31..49d991b8 100644 --- a/css/modern.css +++ b/css/modern.css @@ -1923,9 +1923,9 @@ img#loader { background-color: var(--primary) !important; } -.dialogs { +/* .dialogs { background-color: var(--primary) !important; -} +} */ .lrn.lrn-assess .lrn-right-region .right-wrapper .lrn_btn, .lrn.lrn-assess .lrn-right-region .right-wrapper .lrn_widget.lrn_feature>button, .lrn.lrn-assess .lrn-right-region .right-wrapper .lrn_btn.lrn_btn_blue { background-color: var(--accent) !important; @@ -1987,14 +1987,6 @@ img#loader { box-shadow: inset 1px 1px 2px black; } -.lrn-assess .timer { - background: var(--text) !important; -} - -.lrn-timer-wrapper.pos-right { - background: var(--text) !important; -} - .lrn .modal-content { background-color: var(--accent) !important; /* Timeout Alert */