aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/helpers
diff options
context:
space:
mode:
authorkumquat-ir <66188216+kumquat-ir@users.noreply.github.com>2022-07-18 14:05:23 -0400
committerkumquat-ir <66188216+kumquat-ir@users.noreply.github.com>2022-07-18 14:05:23 -0400
commit20b1723e78149c1f2ac4072cbd46997e9c5160fa (patch)
tree7d97c8bc2edfe5cb41b91e6d04ba36da8aa163e6 /launcher/modplatform/helpers
parentbe78afeee54a19cd0115e1d2ec63f3a3201a3940 (diff)
parentdec81c4f274dd8388d442062cf9fa18600aa850d (diff)
downloadPrismLauncher-20b1723e78149c1f2ac4072cbd46997e9c5160fa.tar.gz
PrismLauncher-20b1723e78149c1f2ac4072cbd46997e9c5160fa.tar.bz2
PrismLauncher-20b1723e78149c1f2ac4072cbd46997e9c5160fa.zip
merge origin/develop
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
Diffstat (limited to 'launcher/modplatform/helpers')
-rw-r--r--launcher/modplatform/helpers/NetworkModAPI.cpp29
-rw-r--r--launcher/modplatform/helpers/NetworkModAPI.h2
2 files changed, 22 insertions, 9 deletions
diff --git a/launcher/modplatform/helpers/NetworkModAPI.cpp b/launcher/modplatform/helpers/NetworkModAPI.cpp
index d7abd10f..90edfe31 100644
--- a/launcher/modplatform/helpers/NetworkModAPI.cpp
+++ b/launcher/modplatform/helpers/NetworkModAPI.cpp
@@ -33,18 +33,14 @@ void NetworkModAPI::searchMods(CallerType* caller, SearchArgs&& args) const
void NetworkModAPI::getModInfo(CallerType* caller, ModPlatform::IndexedPack& pack)
{
- auto id_str = pack.addonId.toString();
- auto netJob = new NetJob(QString("%1::ModInfo").arg(id_str), APPLICATION->network());
- auto searchUrl = getModInfoURL(id_str);
-
auto response = new QByteArray();
- netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), response));
+ auto job = getProject(pack.addonId.toString(), response);
- QObject::connect(netJob, &NetJob::succeeded, [response, &pack, caller] {
+ QObject::connect(job, &NetJob::succeeded, caller, [caller, &pack, response] {
QJsonParseError parse_error{};
- auto doc = QJsonDocument::fromJson(*response, &parse_error);
+ QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
if (parse_error.error != QJsonParseError::NoError) {
- qWarning() << "Error while parsing JSON response for " << pack.name << " at " << parse_error.offset
+ qWarning() << "Error while parsing JSON response from " << caller->debugName() << " at " << parse_error.offset
<< " reason: " << parse_error.errorString();
qWarning() << *response;
return;
@@ -53,7 +49,7 @@ void NetworkModAPI::getModInfo(CallerType* caller, ModPlatform::IndexedPack& pac
caller->infoRequestFinished(doc, pack);
});
- netJob->start();
+ job->start();
}
void NetworkModAPI::getVersions(CallerType* caller, VersionSearchArgs&& args) const
@@ -83,3 +79,18 @@ void NetworkModAPI::getVersions(CallerType* caller, VersionSearchArgs&& args) co
netJob->start();
}
+
+auto NetworkModAPI::getProject(QString addonId, QByteArray* response) const -> NetJob*
+{
+ auto netJob = new NetJob(QString("%1::GetProject").arg(addonId), APPLICATION->network());
+ auto searchUrl = getModInfoURL(addonId);
+
+ netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), response));
+
+ QObject::connect(netJob, &NetJob::finished, [response, netJob] {
+ netJob->deleteLater();
+ delete response;
+ });
+
+ return netJob;
+}
diff --git a/launcher/modplatform/helpers/NetworkModAPI.h b/launcher/modplatform/helpers/NetworkModAPI.h
index 87d77ad1..989bcec4 100644
--- a/launcher/modplatform/helpers/NetworkModAPI.h
+++ b/launcher/modplatform/helpers/NetworkModAPI.h
@@ -8,6 +8,8 @@ class NetworkModAPI : public ModAPI {
void getModInfo(CallerType* caller, ModPlatform::IndexedPack& pack) override;
void getVersions(CallerType* caller, VersionSearchArgs&& args) const override;
+ auto getProject(QString addonId, QByteArray* response) const -> NetJob* override;
+
protected:
virtual auto getModSearchURL(SearchArgs& args) const -> QString = 0;
virtual auto getModInfoURL(QString& id) const -> QString = 0;