Refator task to work with multiple providers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
@ -449,46 +449,4 @@ void ResourceModel::infoRequestSucceeded(QJsonDocument& doc, ModPlatform::Indexe
|
||||
emit projectInfoUpdated();
|
||||
}
|
||||
|
||||
QList<ModPlatform::IndexedVersion> ResourceModel::getDependecies(QDir& dir, QList<ModPlatform::IndexedVersion> selected)
|
||||
{
|
||||
auto task = std::make_unique<GetModDependenciesTask>(
|
||||
dir, selected,
|
||||
[this](const ModPlatform::Dependency& dependency, std::function<void(const ModPlatform::IndexedVersion&)> succeeded) -> Task::Ptr {
|
||||
auto args{ createDependecyArguments(dependency) };
|
||||
auto callbacks{ createDependecyCallbacks() };
|
||||
|
||||
// Use default if no callbacks are set
|
||||
if (!callbacks.on_succeed)
|
||||
callbacks.on_succeed = [this, dependency, succeeded](auto& doc, auto& pack) {
|
||||
ModPlatform::IndexedVersion ver;
|
||||
try {
|
||||
QJsonArray arr;
|
||||
if (dependency.version.length() != 0 && doc.isObject()) {
|
||||
arr.append(doc.object());
|
||||
} else {
|
||||
arr = doc.isObject() ? Json::ensureArray(doc.object(), "data") : doc.array();
|
||||
}
|
||||
ver = loadDependencyVersions(dependency, arr);
|
||||
if (!ver.addonId.isValid()) {
|
||||
qWarning() << "Error while reading " << debugName() << " resource version empty ";
|
||||
qDebug() << doc;
|
||||
return;
|
||||
}
|
||||
} catch (const JSONValidationError& e) {
|
||||
qDebug() << doc;
|
||||
qWarning() << "Error while reading " << debugName() << " resource version: " << e.cause();
|
||||
return;
|
||||
}
|
||||
|
||||
succeeded(ver);
|
||||
};
|
||||
|
||||
return m_api->getDependencyVersion(std::move(args), std::move(callbacks));
|
||||
});
|
||||
|
||||
task->start();
|
||||
|
||||
return task->getDependecies();
|
||||
};
|
||||
|
||||
} // namespace ResourceDownload
|
||||
|
@ -85,8 +85,6 @@ class ResourceModel : public QAbstractListModel {
|
||||
/** Gets the icon at the URL for the given index. If it's not fetched yet, fetch it and update when fisinhed. */
|
||||
std::optional<QIcon> getIcon(QModelIndex&, const QUrl&);
|
||||
|
||||
QList<ModPlatform::IndexedVersion> getDependecies(QDir& dir, QList<ModPlatform::IndexedVersion> m_selected);
|
||||
|
||||
protected:
|
||||
/** Resets the model's data. */
|
||||
void clearData();
|
||||
|
@ -405,9 +405,4 @@ void ResourcePage::openUrl(const QUrl& url)
|
||||
QDesktopServices::openUrl(url);
|
||||
}
|
||||
|
||||
QList<ModPlatform::IndexedVersion> ResourcePage::getDependecies(QDir& dir, QList<ModPlatform::IndexedVersion> selected)
|
||||
{
|
||||
return m_model->getDependecies(dir, selected);
|
||||
};
|
||||
|
||||
} // namespace ResourceDownload
|
||||
|
@ -75,8 +75,6 @@ class ResourcePage : public QWidget, public BasePage {
|
||||
virtual void addResourceToDialog(ModPlatform::IndexedPack&, ModPlatform::IndexedVersion&);
|
||||
virtual void removeResourceFromDialog(ModPlatform::IndexedPack&, ModPlatform::IndexedVersion&);
|
||||
|
||||
QList<ModPlatform::IndexedVersion> getDependecies(QDir& dir, QList<ModPlatform::IndexedVersion> m_selected);
|
||||
|
||||
protected slots:
|
||||
virtual void triggerSearch() {}
|
||||
|
||||
|
Reference in New Issue
Block a user