feat: cache mod versions
Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
parent
6f052baa94
commit
0808a10b7b
@ -96,12 +96,12 @@ bool ListModel::setData(const QModelIndex &index, const QVariant &value, int rol
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ListModel::requestModVersions(ModPlatform::IndexedPack const& current)
|
void ListModel::requestModVersions(ModPlatform::IndexedPack const& current, QModelIndex index)
|
||||||
{
|
{
|
||||||
auto profile = (dynamic_cast<MinecraftInstance*>((dynamic_cast<ModPage*>(parent()))->m_instance))->getPackProfile();
|
auto profile = (dynamic_cast<MinecraftInstance*>((dynamic_cast<ModPage*>(parent()))->m_instance))->getPackProfile();
|
||||||
|
|
||||||
m_parent->apiProvider()->getVersions({ current.addonId.toString(), getMineVersions(), profile->getModLoaders() },
|
m_parent->apiProvider()->getVersions({ current.addonId.toString(), getMineVersions(), profile->getModLoaders() },
|
||||||
[this, current](QJsonDocument& doc, QString addonId) { versionRequestSucceeded(doc, addonId); });
|
[this, current, index](QJsonDocument& doc, QString addonId) { versionRequestSucceeded(doc, addonId, index); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void ListModel::performPaginatedSearch()
|
void ListModel::performPaginatedSearch()
|
||||||
@ -293,7 +293,7 @@ void ListModel::infoRequestFinished(QJsonDocument& doc, ModPlatform::IndexedPack
|
|||||||
m_parent->updateUi();
|
m_parent->updateUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ListModel::versionRequestSucceeded(QJsonDocument doc, QString addonId)
|
void ListModel::versionRequestSucceeded(QJsonDocument doc, QString addonId, const QModelIndex& index)
|
||||||
{
|
{
|
||||||
auto& current = m_parent->getCurrent();
|
auto& current = m_parent->getCurrent();
|
||||||
if (addonId != current.addonId) {
|
if (addonId != current.addonId) {
|
||||||
@ -309,6 +309,14 @@ void ListModel::versionRequestSucceeded(QJsonDocument doc, QString addonId)
|
|||||||
qWarning() << "Error while reading " << debugName() << " mod version: " << e.cause();
|
qWarning() << "Error while reading " << debugName() << " mod version: " << e.cause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cache info :^)
|
||||||
|
QVariant new_pack;
|
||||||
|
new_pack.setValue(current);
|
||||||
|
if (!setData(index, new_pack, Qt::UserRole)) {
|
||||||
|
qWarning() << "Failed to cache mod versions!";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
m_parent->updateModVersions();
|
m_parent->updateModVersions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ class ListModel : public QAbstractListModel {
|
|||||||
void refresh();
|
void refresh();
|
||||||
void searchWithTerm(const QString& term, const int sort, const bool filter_changed);
|
void searchWithTerm(const QString& term, const int sort, const bool filter_changed);
|
||||||
void requestModInfo(ModPlatform::IndexedPack& current, QModelIndex index);
|
void requestModInfo(ModPlatform::IndexedPack& current, QModelIndex index);
|
||||||
void requestModVersions(const ModPlatform::IndexedPack& current);
|
void requestModVersions(const ModPlatform::IndexedPack& current, QModelIndex index);
|
||||||
|
|
||||||
virtual void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj) = 0;
|
virtual void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj) = 0;
|
||||||
virtual void loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonObject& obj) {};
|
virtual void loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonObject& obj) {};
|
||||||
@ -54,7 +54,7 @@ class ListModel : public QAbstractListModel {
|
|||||||
|
|
||||||
void infoRequestFinished(QJsonDocument& doc, ModPlatform::IndexedPack& pack, const QModelIndex& index);
|
void infoRequestFinished(QJsonDocument& doc, ModPlatform::IndexedPack& pack, const QModelIndex& index);
|
||||||
|
|
||||||
void versionRequestSucceeded(QJsonDocument doc, QString addonId);
|
void versionRequestSucceeded(QJsonDocument doc, QString addonId, const QModelIndex& index);
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ void ModPage::onSelectionChanged(QModelIndex curr, QModelIndex prev)
|
|||||||
ui->modSelectionButton->setText(tr("Loading versions..."));
|
ui->modSelectionButton->setText(tr("Loading versions..."));
|
||||||
ui->modSelectionButton->setEnabled(false);
|
ui->modSelectionButton->setEnabled(false);
|
||||||
|
|
||||||
listModel->requestModVersions(current);
|
listModel->requestModVersions(current, curr);
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < current.versions.size(); i++) {
|
for (int i = 0; i < current.versions.size(); i++) {
|
||||||
ui->versionSelectionBox->addItem(current.versions[i].version, QVariant(i));
|
ui->versionSelectionBox->addItem(current.versions[i].version, QVariant(i));
|
||||||
|
Loading…
Reference in New Issue
Block a user