feat: lazy-load CF mod descriptions
Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
parent
368a0ddd44
commit
6aaf1f4f21
@ -30,10 +30,11 @@ void FlameMod::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
|||||||
pack.authors.append(packAuthor);
|
pack.authors.append(packAuthor);
|
||||||
}
|
}
|
||||||
|
|
||||||
loadExtraPackData(pack, obj);
|
pack.extraDataLoaded = false;
|
||||||
|
loadURLs(pack, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlameMod::loadExtraPackData(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
void FlameMod::loadURLs(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
auto links_obj = Json::ensureObject(obj, "links");
|
auto links_obj = Json::ensureObject(obj, "links");
|
||||||
|
|
||||||
@ -49,8 +50,15 @@ void FlameMod::loadExtraPackData(ModPlatform::IndexedPack& pack, QJsonObject& ob
|
|||||||
if(pack.extraData.wikiUrl.endsWith('/'))
|
if(pack.extraData.wikiUrl.endsWith('/'))
|
||||||
pack.extraData.wikiUrl.chop(1);
|
pack.extraData.wikiUrl.chop(1);
|
||||||
|
|
||||||
|
if (!pack.extraData.body.isEmpty())
|
||||||
|
pack.extraDataLoaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FlameMod::loadBody(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||||
|
{
|
||||||
pack.extraData.body = api.getModDescription(pack.addonId.toInt());
|
pack.extraData.body = api.getModDescription(pack.addonId.toInt());
|
||||||
|
|
||||||
|
if (!pack.extraData.issuesUrl.isEmpty() || !pack.extraData.sourceUrl.isEmpty() || !pack.extraData.wikiUrl.isEmpty())
|
||||||
pack.extraDataLoaded = true;
|
pack.extraDataLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,8 @@
|
|||||||
namespace FlameMod {
|
namespace FlameMod {
|
||||||
|
|
||||||
void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj);
|
void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj);
|
||||||
void loadExtraPackData(ModPlatform::IndexedPack& m, QJsonObject& obj);
|
void loadURLs(ModPlatform::IndexedPack& m, QJsonObject& obj);
|
||||||
|
void loadBody(ModPlatform::IndexedPack& m, QJsonObject& obj);
|
||||||
void loadIndexedPackVersions(ModPlatform::IndexedPack& pack,
|
void loadIndexedPackVersions(ModPlatform::IndexedPack& pack,
|
||||||
QJsonArray& arr,
|
QJsonArray& arr,
|
||||||
const shared_qobject_ptr<QNetworkAccessManager>& network,
|
const shared_qobject_ptr<QNetworkAccessManager>& network,
|
||||||
|
@ -12,6 +12,12 @@ void ListModel::loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj)
|
|||||||
FlameMod::loadIndexedPack(m, obj);
|
FlameMod::loadIndexedPack(m, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We already deal with the URLs when initializing the pack, due to the API response's structure
|
||||||
|
void ListModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonObject& obj)
|
||||||
|
{
|
||||||
|
FlameMod::loadBody(m, obj);
|
||||||
|
}
|
||||||
|
|
||||||
void ListModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr)
|
void ListModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr)
|
||||||
{
|
{
|
||||||
FlameMod::loadIndexedPackVersions(m, arr, APPLICATION->network(), m_parent->m_instance);
|
FlameMod::loadIndexedPackVersions(m, arr, APPLICATION->network(), m_parent->m_instance);
|
||||||
|
@ -13,6 +13,7 @@ class ListModel : public ModPlatform::ListModel {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj) override;
|
void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj) override;
|
||||||
|
void loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonObject& obj) override;
|
||||||
void loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) override;
|
void loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) override;
|
||||||
|
|
||||||
auto documentToArray(QJsonDocument& obj) const -> QJsonArray override;
|
auto documentToArray(QJsonDocument& obj) const -> QJsonArray override;
|
||||||
|
Loading…
Reference in New Issue
Block a user