Connected last fail signals
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
a7e0c9db96
commit
6cf7c0a647
@ -180,7 +180,9 @@ Task::Ptr GetModDependenciesTask::prepareDependencyTask(const ModPlatform::Depen
|
|||||||
|
|
||||||
ResourceAPI::DependencySearchArgs args = { dep, m_version, m_loaderType };
|
ResourceAPI::DependencySearchArgs args = { dep, m_version, m_loaderType };
|
||||||
ResourceAPI::DependencySearchCallbacks callbacks;
|
ResourceAPI::DependencySearchCallbacks callbacks;
|
||||||
|
callbacks.on_fail = [](QString reason, int) {
|
||||||
|
qCritical() << tr("A network error occurred. Could not load project dependenies:%1").arg(reason);
|
||||||
|
};
|
||||||
callbacks.on_succeed = [dep, provider, pDep, level, this](auto& doc, auto& pack) {
|
callbacks.on_succeed = [dep, provider, pDep, level, this](auto& doc, auto& pack) {
|
||||||
try {
|
try {
|
||||||
QJsonArray arr;
|
QJsonArray arr;
|
||||||
|
@ -99,6 +99,7 @@ class ResourceAPI {
|
|||||||
};
|
};
|
||||||
struct VersionSearchCallbacks {
|
struct VersionSearchCallbacks {
|
||||||
std::function<void(QJsonDocument&, ModPlatform::IndexedPack)> on_succeed;
|
std::function<void(QJsonDocument&, ModPlatform::IndexedPack)> on_succeed;
|
||||||
|
std::function<void(QString const& reason, int network_error_code)> on_fail;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ProjectInfoArgs {
|
struct ProjectInfoArgs {
|
||||||
@ -109,6 +110,7 @@ class ResourceAPI {
|
|||||||
};
|
};
|
||||||
struct ProjectInfoCallbacks {
|
struct ProjectInfoCallbacks {
|
||||||
std::function<void(QJsonDocument&, ModPlatform::IndexedPack)> on_succeed;
|
std::function<void(QJsonDocument&, ModPlatform::IndexedPack)> on_succeed;
|
||||||
|
std::function<void(QString const& reason)> on_fail;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DependencySearchArgs {
|
struct DependencySearchArgs {
|
||||||
@ -119,6 +121,7 @@ class ResourceAPI {
|
|||||||
|
|
||||||
struct DependencySearchCallbacks {
|
struct DependencySearchCallbacks {
|
||||||
std::function<void(QJsonDocument&, const ModPlatform::Dependency&)> on_succeed;
|
std::function<void(QJsonDocument&, const ModPlatform::Dependency&)> on_succeed;
|
||||||
|
std::function<void(QString const& reason, int network_error_code)> on_fail;
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -70,7 +70,7 @@ Task::Ptr NetworkResourceAPI::getProjectInfo(ProjectInfoArgs&& args, ProjectInfo
|
|||||||
|
|
||||||
callbacks.on_succeed(doc, args.pack);
|
callbacks.on_succeed(doc, args.pack);
|
||||||
});
|
});
|
||||||
|
QObject::connect(job.get(), &NetJob::failed, [callbacks](QString reason) { callbacks.on_fail(reason); });
|
||||||
return job;
|
return job;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,6 +99,13 @@ Task::Ptr NetworkResourceAPI::getProjectVersions(VersionSearchArgs&& args, Versi
|
|||||||
|
|
||||||
callbacks.on_succeed(doc, args.pack);
|
callbacks.on_succeed(doc, args.pack);
|
||||||
});
|
});
|
||||||
|
QObject::connect(netJob.get(), &NetJob::failed, [&netJob, callbacks](QString reason) {
|
||||||
|
int network_error_code = -1;
|
||||||
|
if (auto* failed_action = netJob->getFailedActions().at(0); failed_action && failed_action->m_reply)
|
||||||
|
network_error_code = failed_action->m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||||
|
|
||||||
|
callbacks.on_fail(reason, network_error_code);
|
||||||
|
});
|
||||||
|
|
||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
@ -143,6 +150,12 @@ Task::Ptr NetworkResourceAPI::getDependencyVersion(DependencySearchArgs&& args,
|
|||||||
|
|
||||||
callbacks.on_succeed(doc, args.dependency);
|
callbacks.on_succeed(doc, args.dependency);
|
||||||
});
|
});
|
||||||
|
QObject::connect(netJob.get(), &NetJob::failed, [&netJob, callbacks](QString reason) {
|
||||||
|
int network_error_code = -1;
|
||||||
|
if (auto* failed_action = netJob->getFailedActions().at(0); failed_action && failed_action->m_reply)
|
||||||
|
network_error_code = failed_action->m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||||
|
|
||||||
|
callbacks.on_fail(reason, network_error_code);
|
||||||
|
});
|
||||||
return netJob;
|
return netJob;
|
||||||
};
|
};
|
||||||
|
@ -178,6 +178,10 @@ void ResourceModel::loadEntry(QModelIndex& entry)
|
|||||||
return;
|
return;
|
||||||
versionRequestSucceeded(doc, pack, entry);
|
versionRequestSucceeded(doc, pack, entry);
|
||||||
};
|
};
|
||||||
|
if (!callbacks.on_fail)
|
||||||
|
callbacks.on_fail = [](QString reason, int) {
|
||||||
|
QMessageBox::critical(nullptr, tr("Error"), tr("A network error occurred. Could not load project versions:%1").arg(reason));
|
||||||
|
};
|
||||||
|
|
||||||
if (auto job = m_api->getProjectVersions(std::move(args), std::move(callbacks)); job)
|
if (auto job = m_api->getProjectVersions(std::move(args), std::move(callbacks)); job)
|
||||||
runInfoJob(job);
|
runInfoJob(job);
|
||||||
@ -194,6 +198,10 @@ void ResourceModel::loadEntry(QModelIndex& entry)
|
|||||||
return;
|
return;
|
||||||
infoRequestSucceeded(doc, pack, entry);
|
infoRequestSucceeded(doc, pack, entry);
|
||||||
};
|
};
|
||||||
|
if (!callbacks.on_fail)
|
||||||
|
callbacks.on_fail = [](QString reason) {
|
||||||
|
QMessageBox::critical(nullptr, tr("Error"), tr("A network error occurred. Could not load project info:%1").arg(reason));
|
||||||
|
};
|
||||||
|
|
||||||
if (auto job = m_api->getProjectInfo(std::move(args), std::move(callbacks)); job)
|
if (auto job = m_api->getProjectInfo(std::move(args), std::move(callbacks)); job)
|
||||||
runInfoJob(job);
|
runInfoJob(job);
|
||||||
|
Loading…
Reference in New Issue
Block a user