From 535675afdb0fce40121ccafa06909b61ad057895 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Tue, 6 Feb 2024 18:45:14 +0400 Subject: [PATCH] Fixed fetching of favicons from debug server When using a debug server (enabled by the environment variables KIWIX_CATALOG_HOST and KIWIX_CATALOG_PORT) the URLs of the favicons must be composed correspondingly. --- src/contentmanager.cpp | 16 +++++++++++++++- src/contentmanagermodel.cpp | 4 ++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index a0e58b6..3378382 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -679,12 +679,26 @@ void ContentManager::updateLibrary() { } catch (std::runtime_error&) {} } +namespace +{ + +QString makeHttpUrl(QString host, int port) +{ + return port == 443 + ? "https://" + host + : "http://" + host + ":" + QString::number(port); +} + +} // unnamed namespace + void ContentManager::updateRemoteLibrary(const QString& content) { QtConcurrent::run([=]() { QMutexLocker locker(&remoteLibraryLocker); mp_remoteLibrary = kiwix::Library::create(); kiwix::Manager manager(mp_remoteLibrary); - const auto catalogUrl = m_remoteLibraryManager.getCatalogHost(); + const auto catalogHost = m_remoteLibraryManager.getCatalogHost(); + const auto catalogPort = m_remoteLibraryManager.getCatalogPort(); + const auto catalogUrl = makeHttpUrl(catalogHost, catalogPort); manager.readOpds(content.toStdString(), catalogUrl.toStdString()); emit(this->booksChanged()); emit(this->pendingRequest(false)); diff --git a/src/contentmanagermodel.cpp b/src/contentmanagermodel.cpp index 11daf42..6f361dd 100644 --- a/src/contentmanagermodel.cpp +++ b/src/contentmanagermodel.cpp @@ -112,7 +112,7 @@ void ContentManagerModel::setBooksData(const BookInfoList& data) std::shared_ptr ContentManagerModel::createNode(BookInfo bookItem, QMap iconMap) const { - auto faviconUrl = "https://" + bookItem["faviconUrl"].toString(); + const auto faviconUrl = bookItem["faviconUrl"].toString(); QString id = bookItem["id"].toString(); QByteArray bookIcon; try { @@ -168,7 +168,7 @@ void ContentManagerModel::refreshIcons() for (auto i = 0; i < rowCount() && i < m_data.size(); i++) { auto bookItem = m_data[i]; auto id = bookItem["id"].toString(); - auto faviconUrl = "https://" + bookItem["faviconUrl"].toString(); + const auto faviconUrl = bookItem["faviconUrl"].toString(); auto app = KiwixApp::instance(); try { auto book = app->getLibrary()->getBookById(id);