diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml
index 5ea1b3006..14673e950 100644
--- a/resources/desktop/com.github.rssguard.appdata.xml
+++ b/resources/desktop/com.github.rssguard.appdata.xml
@@ -26,7 +26,7 @@
https://github.com/sponsors/martinrotter
-
+
none
diff --git a/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp b/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp
index 80318707c..4927897f4 100644
--- a/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp
+++ b/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp
@@ -677,17 +677,16 @@ TtRssGetFeedsCategoriesResponse::TtRssGetFeedsCategoriesResponse(const QString&
TtRssGetFeedsCategoriesResponse::~TtRssGetFeedsCategoriesResponse() = default;
-RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QString base_address) const {
+RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, const QNetworkProxy& proxy, const QString& base_address) const {
auto* parent = new RootItem();
// Chop the "api/" from the end of the address.
- base_address.chop(4);
- qDebug("TT-RSS: Chopped base address to '%s' to get feed icons.", qPrintable(base_address));
+ qDebug("TT-RSS: Base address to '%s' to get feed icons.", qPrintable(base_address));
if (status() == TTRSS_API_STATUS_OK) {
// We have data, construct object tree according to data.
QJsonArray items_to_process = m_rawContent[QSL("content")].toObject()[QSL("categories")].toObject()[QSL("items")].toArray();
- QVector> pairs;
+ QVector> pairs; pairs.reserve(items_to_process.size());
for (const QJsonValue& item : items_to_process) {
pairs.append(QPair(parent, item));
@@ -697,7 +696,7 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
QPair pair = pairs.takeFirst();
RootItem* act_parent = pair.first;
QJsonObject item = pair.second.toObject();
- int item_id = item["bare_id"].toInt();
+ int item_id = item[QSL("bare_id")].toInt();
bool is_category = item.contains(QSL("type")) && item[QSL("type")].toString() == QSL(TTRSS_GFT_TYPE_CATEGORY);
if (item_id >= 0) {
@@ -732,22 +731,21 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
// We have feed.
auto* feed = new TtRssFeed();
+ IOFactory::writeFile("aa.json", QJsonDocument(item).toJson());
+
if (obtain_icons) {
QString icon_path = item[QSL("icon")].type() == QJsonValue::String ? item[QSL("icon")].toString() : QString();
if (!icon_path.isEmpty()) {
// Chop the "api/" suffix out and append
QString full_icon_address = base_address + QL1C('/') + icon_path;
- QByteArray icon_data;
+ QIcon icon;
- if (NetworkFactory::performNetworkOperation(full_icon_address, DOWNLOAD_TIMEOUT,
- QByteArray(), icon_data,
- QNetworkAccessManager::GetOperation).first == QNetworkReply::NoError) {
- // Icon downloaded, set it up.
- QPixmap icon_pixmap;
-
- icon_pixmap.loadFromData(icon_data);
- feed->setIcon(QIcon(icon_pixmap));
+ if (NetworkFactory::downloadIcon({ { full_icon_address, true } },
+ DOWNLOAD_TIMEOUT,
+ icon,
+ proxy) == QNetworkReply::NoError) {
+ feed->setIcon(icon);
}
}
}
diff --git a/src/librssguard/services/tt-rss/ttrssnetworkfactory.h b/src/librssguard/services/tt-rss/ttrssnetworkfactory.h
index e49f0ef2b..95cf0e46b 100644
--- a/src/librssguard/services/tt-rss/ttrssnetworkfactory.h
+++ b/src/librssguard/services/tt-rss/ttrssnetworkfactory.h
@@ -56,7 +56,7 @@ class TtRssGetFeedsCategoriesResponse : public TtRssResponse {
// Returns tree of feeds/categories.
// Top-level root of the tree is not needed here.
// Returned items do not have primary IDs assigned.
- RootItem* feedsCategories(bool obtain_icons, QString base_address = QString()) const;
+ RootItem* feedsCategories(bool obtain_icons, const QNetworkProxy& proxy, const QString& base_address = QString()) const;
};
class ServiceRoot;
diff --git a/src/librssguard/services/tt-rss/ttrssserviceroot.cpp b/src/librssguard/services/tt-rss/ttrssserviceroot.cpp
index 3edde1447..e8b2907e2 100644
--- a/src/librssguard/services/tt-rss/ttrssserviceroot.cpp
+++ b/src/librssguard/services/tt-rss/ttrssserviceroot.cpp
@@ -276,7 +276,7 @@ RootItem* TtRssServiceRoot::obtainNewTreeForSyncIn() const {
TtRssGetLabelsResponse labels = m_network->getLabels(networkProxy());
if (m_network->lastError() == QNetworkReply::NoError) {
- auto* tree = feed_cats.feedsCategories(true, m_network->url());
+ auto* tree = feed_cats.feedsCategories(true, networkProxy(), m_network->url());
auto* lblroot = new LabelsNode(tree);
lblroot->setChildItems(labels.labels());