mirror of
https://github.com/miniflux/v2.git
synced 2025-08-11 17:51:01 +00:00
refactor(js): split openOriginalLink()
into smaller functions
This commit is contained in:
parent
5c3be3e74f
commit
f2e34cf07f
1 changed files with 50 additions and 32 deletions
|
@ -556,21 +556,6 @@ function toggleEntryStatus(element, toasting) {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark the entry as read if it is currently unread.
|
||||
*
|
||||
* @param {Element} element The entry element to mark as read.
|
||||
*/
|
||||
function markEntryAsRead(element) {
|
||||
if (element.classList.contains("item-status-unread")) {
|
||||
element.classList.remove("item-status-unread");
|
||||
element.classList.add("item-status-read");
|
||||
|
||||
const entryID = parseInt(element.dataset.id, 10);
|
||||
updateEntriesStatus([entryID], "read");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the refresh of all feeds.
|
||||
*
|
||||
|
@ -725,26 +710,59 @@ function handleFetchOriginalContent() {
|
|||
* @returns {void}
|
||||
*/
|
||||
function openOriginalLink(openLinkInCurrentTab) {
|
||||
const entryLink = document.querySelector(".entry h1 a");
|
||||
if (entryLink) {
|
||||
if (openLinkInCurrentTab) {
|
||||
window.location.href = entryLink.getAttribute("href");
|
||||
} else {
|
||||
openNewTab(entryLink.getAttribute("href"));
|
||||
}
|
||||
return;
|
||||
if (isEntryView()) {
|
||||
openOriginalLinkFromEntryView(openLinkInCurrentTab);
|
||||
} else if (isListView()) {
|
||||
openOriginalLinkFromListView();
|
||||
}
|
||||
}
|
||||
|
||||
const currentItemOriginalLink = document.querySelector(".current-item :is(a, button)[data-original-link]");
|
||||
if (currentItemOriginalLink) {
|
||||
openNewTab(currentItemOriginalLink.getAttribute("href"));
|
||||
/**
|
||||
* Open the original link from entry view.
|
||||
*
|
||||
* @param {boolean} openLinkInCurrentTab - Whether to open the link in the current tab.
|
||||
* @returns {void}
|
||||
*/
|
||||
function openOriginalLinkFromEntryView(openLinkInCurrentTab) {
|
||||
const entryLink = document.querySelector(".entry h1 a");
|
||||
if (!entryLink) return;
|
||||
|
||||
const currentItem = document.querySelector(".current-item");
|
||||
// If we are not on the list of starred items, move to the next item
|
||||
if (document.location.href !== document.querySelector(':is(a, button)[data-page=starred]').href) {
|
||||
goToListItem(1);
|
||||
}
|
||||
markEntryAsRead(currentItem);
|
||||
const url = entryLink.getAttribute("href");
|
||||
if (openLinkInCurrentTab) {
|
||||
window.location.href = url;
|
||||
} else {
|
||||
openNewTab(url);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the original link from list view.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
function openOriginalLinkFromListView() {
|
||||
const currentItem = document.querySelector(".current-item");
|
||||
const originalLink = currentItem?.querySelector(":is(a, button)[data-original-link]");
|
||||
|
||||
if (!currentItem || !originalLink) return;
|
||||
|
||||
// Open the link
|
||||
openNewTab(originalLink.getAttribute("href"));
|
||||
|
||||
// Don't navigate or mark as read on starred page
|
||||
const isStarredPage = document.location.href === document.querySelector(':is(a, button)[data-page=starred]').href;
|
||||
if (isStarredPage) return;
|
||||
|
||||
// Navigate to next item
|
||||
goToListItem(1);
|
||||
|
||||
// Mark as read if currently unread
|
||||
if (currentItem.classList.contains("item-status-unread")) {
|
||||
currentItem.classList.remove("item-status-unread");
|
||||
currentItem.classList.add("item-status-read");
|
||||
|
||||
const entryID = parseInt(currentItem.dataset.id, 10);
|
||||
updateEntriesStatus([entryID], "read");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue