Kaynağa Gözat

refactor(js): combine `handleBookmark` and `toggleBookmark` functions

Frédéric Guillot 8 ay önce
ebeveyn
işleme
391792a424
1 değiştirilmiş dosya ile 10 ekleme ve 22 silme
  1. 10 22
      internal/ui/static/js/app.js

+ 10 - 22
internal/ui/static/js/app.js

@@ -619,23 +619,11 @@ function handleSaveEntryAction(element = null) {
  *
  * @param {Element} element - The element that triggered the bookmark action.
  */
-function handleBookmark(element) {
-    const toasting = !element;
+function handleBookmarkAction(element) {
     const currentEntry = findEntry(element);
-    if (currentEntry) {
-        toggleBookmark(currentEntry, toasting);
-    }
-}
+    if (!currentEntry) return;
 
-/**
- * Toggle the bookmark status of an entry.
- *
- * @param {Element} parentElement - The parent element containing the bookmark button.
- * @param {boolean} toasting - Whether to show a toast notification.
- * @returns {void}
- */
-function toggleBookmark(parentElement, toasting) {
-    const buttonElement = parentElement.querySelector(":is(a, button)[data-toggle-bookmark]");
+    const buttonElement = currentEntry.querySelector(":is(a, button)[data-toggle-bookmark]");
     if (!buttonElement) return;
 
     insertIconLabelElement(buttonElement, buttonElement.dataset.labelLoading);
@@ -648,14 +636,14 @@ function toggleBookmark(parentElement, toasting) {
         const iconElement = document.querySelector(isStarred ? "template#icon-star" : "template#icon-unstar");
         const label = isStarred ? buttonElement.dataset.labelStar : buttonElement.dataset.labelUnstar;
 
-        if (toasting) {
+        buttonElement.replaceChildren(iconElement.content.cloneNode(true));
+        insertIconLabelElement(buttonElement, label, false);
+        buttonElement.dataset.value = newStarStatus;
+
+        if (!element) {
             const toastKey = isStarred ? "toastUnstar" : "toastStar";
             showToast(buttonElement.dataset[toastKey], iconElement);
         }
-
-        buttonElement.replaceChildren(iconElement.content.cloneNode(true));
-        insertIconLabelElement(buttonElement, label);
-        buttonElement.dataset.value = newStarStatus;
     });
 }
 
@@ -1146,7 +1134,7 @@ function initializeKeyboardShortcuts() {
     keyboardHandler.on("A", markPageAsRead);
     keyboardHandler.on("s", () => handleSaveEntryAction());
     keyboardHandler.on("d", handleFetchOriginalContent);
-    keyboardHandler.on("f", () => handleBookmark());
+    keyboardHandler.on("f", () => handleBookmarkAction());
 
     // Feed actions
     keyboardHandler.on("F", goToFeedPage);
@@ -1181,7 +1169,7 @@ function initializeTouchHandler() {
 function initializeClickHandlers() {
     // Entry actions
     onClick(":is(a, button)[data-save-entry]", (event) => handleSaveEntryAction(event.target));
-    onClick(":is(a, button)[data-toggle-bookmark]", (event) => handleBookmark(event.target));
+    onClick(":is(a, button)[data-toggle-bookmark]", (event) => handleBookmarkAction(event.target));
     onClick(":is(a, button)[data-toggle-status]", (event) => handleEntryStatus("next", event.target));
     onClick(":is(a, button)[data-fetch-content-entry]", handleFetchOriginalContent);
     onClick(":is(a, button)[data-share-status]", handleEntryShareAction);