Add fallback if metadata (title, description, language, tags)

This provides a workaround the crash happening because of missing metadata.
Language div is set to be hidden if no language data is found
This commit is contained in:
Nikhil Tanwar 2021-12-29 00:03:50 +05:30
parent 843d315b93
commit 9c047844c0
1 changed files with 4 additions and 2 deletions

View File

@ -67,7 +67,8 @@
} }
function getInnerHtml(node, query) { function getInnerHtml(node, query) {
return node.querySelector(query).innerHTML; const queryNode = node.querySelector(query);
return queryNode != null ? queryNode.innerHTML : "";
} }
function generateBookHtml(book, sort = false) { function generateBookHtml(book, sort = false) {
@ -103,6 +104,7 @@
if (sort) { if (sort) {
divTag.setAttribute('data-idx', bookOrderMap.get(id)); divTag.setAttribute('data-idx', bookOrderMap.get(id));
} }
const languageAttr = language != '' ? '' : 'style="background-color: transparent"';
divTag.innerHTML = `<a class="book__link" href="${root}${link}" data-hover="Preview"> divTag.innerHTML = `<a class="book__link" href="${root}${link}" data-hover="Preview">
<div class="book__wrapper"> <div class="book__wrapper">
<div class="book__icon"><img class="book__icon--image" src="${root}${iconUrl}"></div> <div class="book__icon"><img class="book__icon--image" src="${root}${iconUrl}"></div>
@ -111,7 +113,7 @@
${downloadLink ? `<div class="book__download"><span data-link="${downloadLink}">Download ${humanFriendlyZimSize ? ` - ${humanFriendlyZimSize}</span></div>`: ''}` : ''} ${downloadLink ? `<div class="book__download"><span data-link="${downloadLink}">Download ${humanFriendlyZimSize ? ` - ${humanFriendlyZimSize}</span></div>`: ''}` : ''}
</div> </div>
<div class="book__description" title="${description}">${description}</div> <div class="book__description" title="${description}">${description}</div>
<div class="book__languageTag">${language.substr(0, 2).toUpperCase()}</div> <div class="book__languageTag" ${languageAttr}>${language.substr(0, 2).toUpperCase()}</div>
<div class="book__tags"><div class="book__tags--wrapper">${tagHtml}</div></div> <div class="book__tags"><div class="book__tags--wrapper">${tagHtml}</div></div>
</div></div></a>`; </div></div></a>`;
return divTag; return divTag;