Skip to content

Commit

Permalink
More progress towards trusted-types
Browse files Browse the repository at this point in the history
Create a new function `addIcon` and use it to add icons, instead of
operating on raw html.
  • Loading branch information
jvoisin committed Mar 13, 2024
1 parent 8429c6b commit 73cbd95
Showing 1 changed file with 21 additions and 7 deletions.
28 changes: 21 additions & 7 deletions internal/ui/static/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,14 @@ function handleEntryStatus(item, element, setToRead) {
}
}

// Add a span-icon with a `label` to `element` as a child
function addIcon(element, label) {
const span = document.createElement('span');
span.classList.add('icon-label');
span.textContent = label;
element.appendChild(span);
}

// Change the entry status to the opposite value.
function toggleEntryStatus(element, toasting) {
const entryID = parseInt(element.dataset.id, 10);
Expand All @@ -193,7 +201,8 @@ function toggleEntryStatus(element, toasting) {
}
}

link.innerHTML = iconElement.innerHTML + '<span class="icon-label">' + label + '</span>';
link.innerHTML = iconElement.innerHTML
addIcon(link, label);
link.dataset.value = newStatus;

if (element.classList.contains("item-status-" + currentStatus)) {
Expand Down Expand Up @@ -258,11 +267,13 @@ function saveEntry(element, toasting) {
return;
}

element.innerHTML = '<span class="icon-label">' + element.dataset.labelLoading + '</span>';
element.textContent = "";
addIcon(element, element.dataset.labelLoading);

const request = new RequestBuilder(element.dataset.saveUrl);
request.withCallback(() => {
element.innerHTML = '<span class="icon-label">' + element.dataset.labelDone + '</span>';
element.textContent = "";
addIcon(element, element.dataset.labelDone);
element.dataset.completed = true;
if (toasting) {
const iconElement = document.querySelector("template#icon-save");
Expand All @@ -288,7 +299,8 @@ function toggleBookmark(parentElement, toasting) {
return;
}

element.innerHTML = '<span class="icon-label">' + element.dataset.labelLoading + '</span>';
element.textContent = "";
addIcon(element, element.dataset.labelLoading);

const request = new RequestBuilder(element.dataset.bookmarkUrl);
request.withCallback(() => {
Expand All @@ -310,7 +322,8 @@ function toggleBookmark(parentElement, toasting) {
}
}

element.innerHTML = iconElement.innerHTML + '<span class="icon-label">' + label + '</span>';
element.innerHTML = iconElement.innerHTML;
addIcon(element, label);
element.dataset.value = newStarStatus;
});
request.execute();
Expand All @@ -328,7 +341,7 @@ function handleFetchOriginalContent() {
}

const previousElement = element.cloneNode(true);
element.innerHTML = '<span class="icon-label">' + element.dataset.labelLoading + '</span>';
addIcon(element, element.dataset.labelLoading);

const request = new RequestBuilder(element.dataset.fetchContentUrl);
request.withCallback((response) => {
Expand Down Expand Up @@ -615,7 +628,8 @@ function showToast(label, iconElement) {

const toastMsgElement = document.getElementById("toast-msg");
if (toastMsgElement) {
toastMsgElement.innerHTML = iconElement.innerHTML + '<span class="icon-label">' + label + '</span>';
toastMsgElement.innerHTML = iconElement.innerHTML
addIcon(toastMsgElement, label)

const toastElementWrapper = document.getElementById("toast-wrapper");
if (toastElementWrapper) {
Expand Down

0 comments on commit 73cbd95

Please sign in to comment.