瀏覽代碼

refactor(js): combine `handleShare()` and `triggerWebShare()` functions

Frédéric Guillot 8 月之前
父節點
當前提交
5c3be3e74f
共有 1 個文件被更改,包括 16 次插入26 次删除
  1. 16 26
      internal/ui/static/js/app.js

+ 16 - 26
internal/ui/static/js/app.js

@@ -323,35 +323,25 @@ function goToListItem(offset) {
  * If the share status is "share", it will send an Ajax request to fetch the share URL and then trigger the Web Share API.
  * If the Web Share API is not supported, it will redirect to the entry URL.
  */
-async function handleShare() {
+async function handleEntryShareAction() {
     const link = document.querySelector(':is(a, button)[data-share-status]');
     if (link.dataset.shareStatus === "shared") {
         const title = document.querySelector(".entry-header > h1 > a");
-        await triggerWebShare(title, link.href);
-    }
-}
+        const url = link.href;
 
-/**
- * Trigger the Web Share API to share the entry.
- *
- * If the Web Share API is not supported, it will redirect to the entry URL.
- *
- * @param {Element} title - The title element of the entry.
- * @param {string} url - The URL of the entry to share.
- */
-async function triggerWebShare(title, url) {
-    if (!navigator.canShare) {
-        console.error("Your browser doesn't support the Web Share API.");
-        window.location = url;
-        return;
-    }
-    try {
-        await navigator.share({
-            title: title ? title.textContent : url,
-            url: url
-        });
-    } catch (err) {
-        console.error(err);
+        if (!navigator.canShare) {
+            console.error("Your browser doesn't support the Web Share API.");
+            window.location = url;
+            return;
+        }
+        try {
+            await navigator.share({
+                title: title ? title.textContent : url,
+                url: url
+            });
+        } catch (err) {
+            console.error(err);
+        }
     }
 }
 
@@ -1189,7 +1179,7 @@ function initializeClickHandlers() {
     onClick(":is(a, button)[data-toggle-bookmark]", (event) => handleBookmark(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]", handleShare);
+    onClick(":is(a, button)[data-share-status]", handleEntryShareAction);
 
     // Page actions with confirmation
     onClick(":is(a, button)[data-action=markPageAsRead]", (event) =>