Extract url comparison

This commit is contained in:
Idrees Hassan
2025-08-16 18:39:47 -04:00
parent b10cc684b9
commit 027a78b43c
4 changed files with 125 additions and 5 deletions

42
dist/birb.js vendored
View File

@@ -1175,6 +1175,46 @@ Promise.all([loadSpriteSheetPixels(SPRITE_SHEET), loadSpriteSheetPixels(DECORATI
save();
}
/**
* @param {StickyNote} stickyNote
* @returns {boolean} Whether the given sticky note is applicable to the current site/page
*/
function isStickyNoteApplicable(stickyNote) {
const stickyNoteUrl = stickyNote.site;
const currentUrl = window.location.href;
const stickyNoteWebsite = stickyNoteUrl.split("?")[0];
const currentWebsite = currentUrl.split("?")[0];
debug("Comparing " + stickyNoteUrl + " with " + currentUrl);
if (stickyNoteWebsite !== currentWebsite) {
return false;
}
/** @type {Record<string, string>} */
const stickyNoteParams = stickyNoteUrl.split("?")[1]?.split("&").reduce((params, param) => {
const [key, value] = param.split("=");
params[key] = value;
return params;
}, {});
/** @type {Record<string, string>} */
const currentParams = currentUrl.split("?")[1]?.split("&").reduce((params, param) => {
const [key, value] = param.split("=");
params[key] = value;
return params;
}, {});
debug("Comparing params: ", stickyNoteParams, currentParams);
if (window.location.hostname === "www.youtube.com") {
if (currentParams.v !== undefined && currentParams.v !== stickyNoteParams.v) {
return false;
}
}
return true;
}
function init() {
if (window !== window.top) {
// Skip installation if within an iframe
@@ -1229,7 +1269,7 @@ Promise.all([loadSpriteSheetPixels(SPRITE_SHEET), loadSpriteSheetPixels(DECORATI
// Render all sticky notes
for (let stickyNote of stickyNotes) {
if (stickyNote.site.split("?")[0] === window.location.href.split("?")[0]) {
if (isStickyNoteApplicable(stickyNote)) {
renderStickyNote(stickyNote);
}
}