This commit is contained in:
2025-12-15 16:21:06 +01:00
parent 5d8441bf27
commit f1f95953dd
19 changed files with 429 additions and 144 deletions

View File

@@ -51,9 +51,10 @@ async function loadBookMetadata() {
return;
}
bookData = data;
const raw = Array.isArray(data) ? data[0] : data;
bookData = raw;
const metadata = MediaMetadataUtils.formatBookData(data, !!extensionName);
const metadata = MediaMetadataUtils.formatBookData(raw, !!extensionName);
updatePageTitle(metadata.title);
updateMetadata(metadata);

View File

@@ -332,11 +332,6 @@ async function loadExtensions() {
providerSelector.innerHTML = '';
const global = document.createElement('option');
global.value = '';
global.textContent = 'Global Search';
providerSelector.appendChild(global);
const favoritesOption = document.createElement('option');
favoritesOption.value = 'favorites';
favoritesOption.textContent = 'Favorites';

View File

@@ -106,7 +106,7 @@ function copyLink() {
async function loadSimilarImages(item) {
if (!item.tags || item.tags.length === 0) {
document.getElementById('similar-section').innerHTML = '<p style="text-align:center;color:var(--text-secondary);padding:3rem 0;">No tags available to search for similar images.</p>';
document.getElementById('similar-section').innerHTML = '<p style="text-align:center;color:var(--color-text-secondary);padding:3rem 0;">No tags available to search for similar images.</p>';
return;
}
@@ -123,13 +123,13 @@ async function loadSimilarImages(item) {
.slice(0, 15);
if (results.length === 0) {
container.innerHTML = '<p style="text-align:center;color:var(--text-secondary);padding:3rem 0;">No similar images found.</p>';
container.innerHTML = '<p style="text-align:center;color:var(--color-text-secondary);padding:3rem 0;">No similar images found.</p>';
return;
}
container.innerHTML = `
<h3 style="text-align:center;margin:2rem 0 1.5rem;font-size:1.7rem;">
More images tagged with "<span style="color:var(--accent);">${firstTag}</span>"
More images tagged with "<span style="color:var(--color-primary);">${firstTag}</span>"
</h3>
<div class="similar-grid">
${results.map(img => {
@@ -147,7 +147,7 @@ async function loadSimilarImages(item) {
`;
} catch (err) {
container.innerHTML = '<p style="text-align:center;color:var(--text-secondary);opacity:0.6;padding:3rem 0;">Could not load similar images.</p>';
container.innerHTML = '<p style="text-align:center;color:var(--color-text-secondary);opacity:0.6;padding:3rem 0;">Could not load similar images.</p>';
}
}
@@ -198,7 +198,7 @@ function renderItem(item) {
? item.tags.map(tag => `
<a class="tag-item">${tag}</a>
`).join('')
: '<span style="opacity:0.6;color:var(--text-secondary);">No tags</span>'
: '<span style="opacity:0.6;color:var(--color-text-secondary);">No tags</span>'
}
</div>
</div>
@@ -216,9 +216,9 @@ function renderError(msg) {
itemMainContentContainer.innerHTML = `
<div style="text-align:center;padding:8rem 1rem;">
<i class="fa-solid fa-heart-crack" style="font-size:5rem;color:#ff6b6b;opacity:0.7;"></i>
<h2 style="margin:2rem 0;color:var(--text-primary);">Image Not Available</h2>
<p style="color:var(--text-secondary);max-width:600px;margin:0 auto 2rem;">${msg}</p>
<a href="/gallery" style="padding:1rem 2.5rem;background:var(--accent);color:white;border-radius:99px;text-decoration:none;font-weight:600;">
<h2 style="margin:2rem 0;color:var(--color-text-primary);">Image Not Available</h2>
<p style="color:var(--color-text-secondary);max-width:600px;margin:0 auto 2rem;">${msg}</p>
<a href="/gallery" style="padding:1rem 2.5rem;background:var(--color-primary);color:white;border-radius:99px;text-decoration:none;font-weight:600;">
Back to Gallery
</a>
</div>
@@ -268,13 +268,14 @@ async function loadFromProvider(provider, id) {
if (!res.ok) throw new Error();
const data = await res.json();
if (!data.fullImage) throw new Error();
if (!data.image) throw new Error();
const item = {
id,
title: data.title || data.publishedBy || 'Beautiful Art',
fullImage: data.fullImage,
originalImage: data.fullImage,
title: data.title || 'Beautiful Art',
fullImage: data.image,
originalImage: data.image,
tags: data.tags || [],
provider,
headers: data.headers