diff --git a/resources/icons.qrc b/resources/icons.qrc
index 4633dfd68..f1dac90e4 100644
--- a/resources/icons.qrc
+++ b/resources/icons.qrc
@@ -4,7 +4,6 @@
./graphics/Faenza/actions/64/back.png
./graphics/Faenza/actions/64/call-start.png
./graphics/Faenza/actions/64/dialog-no.png
- ./graphics/Faenza/actions/64/dialog-ok.png
./graphics/Faenza/actions/64/dialog-yes.png
./graphics/Faenza/actions/64/document-edit.png
./graphics/Faenza/actions/64/document-export.png
@@ -75,7 +74,6 @@
./graphics/Numix/22/actions/back.svg
./graphics/Numix/22/actions/call-start.svg
./graphics/Numix/22/actions/dialog-no.svg
- ./graphics/Numix/22/actions/dialog-ok.svg
./graphics/Numix/22/actions/dialog-yes.svg
./graphics/Numix/22/actions/document-edit.svg
./graphics/Numix/22/actions/document-export.svg
diff --git a/src/librssguard/services/abstract/serviceroot.cpp b/src/librssguard/services/abstract/serviceroot.cpp
index 91a65dabf..4e0351d58 100644
--- a/src/librssguard/services/abstract/serviceroot.cpp
+++ b/src/librssguard/services/abstract/serviceroot.cpp
@@ -81,10 +81,25 @@ QList ServiceRoot::contextMenuMessagesList(const QList& messa
}
QList ServiceRoot::serviceMenu() {
- if (m_serviceMenu.isEmpty() && isSyncable()) {
- m_actionSyncIn = new QAction(qApp->icons()->fromTheme(QSL("view-refresh")), tr("Sync in"), this);
- connect(m_actionSyncIn, &QAction::triggered, this, &ServiceRoot::syncIn);
- m_serviceMenu.append(m_actionSyncIn);
+ if (m_serviceMenu.isEmpty()) {
+ if (isSyncable()) {
+ auto* act_sync_tree = new QAction(qApp->icons()->fromTheme(QSL("view-refresh")), tr("Sync in"), this);
+
+ connect(act_sync_tree, &QAction::triggered, this, &ServiceRoot::syncIn);
+ m_serviceMenu.append(act_sync_tree);
+
+ auto* cache = toCache();
+
+ if (cache != nullptr) {
+ auto* act_sync_cache = new QAction(qApp->icons()->fromTheme(QSL("view-refresh")), tr("Synchronize message cache"), this);
+
+ connect(act_sync_cache, &QAction::triggered, this, [cache]() {
+ cache->saveAllCachedData();
+ });
+
+ m_serviceMenu.append(act_sync_cache);
+ }
+ }
}
return m_serviceMenu;
diff --git a/src/librssguard/services/abstract/serviceroot.h b/src/librssguard/services/abstract/serviceroot.h
index 23c65ad67..ea7d50ee3 100644
--- a/src/librssguard/services/abstract/serviceroot.h
+++ b/src/librssguard/services/abstract/serviceroot.h
@@ -244,7 +244,6 @@ class ServiceRoot : public RootItem {
ImportantNode* m_importantNode;
LabelsNode* m_labelsNode;
int m_accountId;
- QAction* m_actionSyncIn;
QList m_serviceMenu;
};
diff --git a/src/librssguard/services/inoreader/network/inoreadernetworkfactory.cpp b/src/librssguard/services/inoreader/network/inoreadernetworkfactory.cpp
index 171fc8883..9b10e4d92 100644
--- a/src/librssguard/services/inoreader/network/inoreadernetworkfactory.cpp
+++ b/src/librssguard/services/inoreader/network/inoreadernetworkfactory.cpp
@@ -220,8 +220,10 @@ void InoreaderNetworkFactory::editLabels(const QString& state, bool assign, cons
for (const QString& id : msg_custom_ids) {
QString simplified_id = regex_short_id.match(id).captured();
+ auto numeric_id = simplified_id.toLongLong(nullptr, 16);
+ QString decimal_id = QString::number(numeric_id);
- trimmed_ids.append(QString("i=") + simplified_id);
+ trimmed_ids.append(QString("i=") + decimal_id);
}
QStringList working_subset; working_subset.reserve(std::min(200, trimmed_ids.size()));
@@ -230,7 +232,7 @@ void InoreaderNetworkFactory::editLabels(const QString& state, bool assign, cons
// Now, we perform messages update in batches (max 200 messages per batch).
while (!trimmed_ids.isEmpty()) {
// We take 200 IDs.
- for (int i = 0; i < 200 && !trimmed_ids.isEmpty(); i++) {
+ for (int i = 0; i < 50 && !trimmed_ids.isEmpty(); i++) {
working_subset.append(trimmed_ids.takeFirst());
}