Update to Modrinth API V2
This commit is contained in:
parent
efc44c56a6
commit
aa2c27bf69
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
void Modrinth::loadIndexedPack(Modrinth::IndexedPack & pack, QJsonObject & obj)
|
void Modrinth::loadIndexedPack(Modrinth::IndexedPack & pack, QJsonObject & obj)
|
||||||
{
|
{
|
||||||
pack.addonId = Json::requireString(obj, "mod_id");
|
pack.addonId = Json::requireString(obj, "project_id");
|
||||||
pack.name = Json::requireString(obj, "title");
|
pack.name = Json::requireString(obj, "title");
|
||||||
pack.websiteUrl = Json::ensureString(obj, "page_url", "");
|
pack.websiteUrl = Json::ensureString(obj, "page_url", "");
|
||||||
pack.description = Json::ensureString(obj, "description", "");
|
pack.description = Json::ensureString(obj, "description", "");
|
||||||
@ -20,7 +20,7 @@ void Modrinth::loadIndexedPack(Modrinth::IndexedPack & pack, QJsonObject & obj)
|
|||||||
|
|
||||||
Modrinth::ModpackAuthor modAuthor;
|
Modrinth::ModpackAuthor modAuthor;
|
||||||
modAuthor.name = Json::requireString(obj, "author");
|
modAuthor.name = Json::requireString(obj, "author");
|
||||||
modAuthor.url = Json::requireString(obj, "author_url");
|
modAuthor.url = "https://modrinth.com/user/"+modAuthor.name;
|
||||||
pack.author = modAuthor;
|
pack.author = modAuthor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ void Modrinth::loadIndexedPackVersions(Modrinth::IndexedPack & pack, QJsonArray
|
|||||||
for(auto versionIter: arr) {
|
for(auto versionIter: arr) {
|
||||||
auto obj = versionIter.toObject();
|
auto obj = versionIter.toObject();
|
||||||
Modrinth::IndexedVersion file;
|
Modrinth::IndexedVersion file;
|
||||||
file.addonId = Json::requireString(obj,"mod_id") ;
|
file.addonId = Json::requireString(obj,"project_id") ;
|
||||||
file.fileId = Json::requireString(obj, "id");
|
file.fileId = Json::requireString(obj, "id");
|
||||||
file.date = Json::requireString(obj, "date_published");
|
file.date = Json::requireString(obj, "date_published");
|
||||||
auto versionArray = Json::requireArray(obj, "game_versions");
|
auto versionArray = Json::requireArray(obj, "game_versions");
|
||||||
|
@ -157,7 +157,7 @@ void ListModel::fetchMore(const QModelIndex& parent)
|
|||||||
}
|
}
|
||||||
performPaginatedSearch();
|
performPaginatedSearch();
|
||||||
}
|
}
|
||||||
const char* sorts[4]{"relevance","downloads","updated","newest"};
|
const char* sorts[5]{"relevance","downloads","follows","updated","newest"};
|
||||||
|
|
||||||
void ListModel::performPaginatedSearch()
|
void ListModel::performPaginatedSearch()
|
||||||
{
|
{
|
||||||
@ -166,12 +166,12 @@ void ListModel::performPaginatedSearch()
|
|||||||
bool hasFabric = !((MinecraftInstance *)((ModrinthPage *)parent())->m_instance)->getPackProfile()->getComponentVersion("net.fabricmc.fabric-loader").isEmpty();
|
bool hasFabric = !((MinecraftInstance *)((ModrinthPage *)parent())->m_instance)->getPackProfile()->getComponentVersion("net.fabricmc.fabric-loader").isEmpty();
|
||||||
auto netJob = new NetJob("Modrinth::Search", APPLICATION->network());
|
auto netJob = new NetJob("Modrinth::Search", APPLICATION->network());
|
||||||
auto searchUrl = QString(
|
auto searchUrl = QString(
|
||||||
"https://api.modrinth.com/api/v1/mod?"
|
"https://api.modrinth.com/v2/search?"
|
||||||
"offset=%1&"
|
"offset=%1&"
|
||||||
"limit=25&"
|
"limit=25&"
|
||||||
"query=%2&"
|
"query=%2&"
|
||||||
"index=%3&"
|
"index=%3&"
|
||||||
"filters=categories=\"%4\" AND versions=\"%5\""
|
"facets=[[\"categories:%4\"],[\"versions:%5\"],[\"project_type:mod\"]]"
|
||||||
)
|
)
|
||||||
.arg(nextSearchOffset)
|
.arg(nextSearchOffset)
|
||||||
.arg(currentSearchTerm)
|
.arg(currentSearchTerm)
|
||||||
|
@ -27,6 +27,7 @@ ModrinthPage::ModrinthPage(ModDownloadDialog *dialog, BaseInstance *instance)
|
|||||||
// index is used to set the sorting with the modrinth api
|
// index is used to set the sorting with the modrinth api
|
||||||
ui->sortByBox->addItem(tr("Sort by Relevence"));
|
ui->sortByBox->addItem(tr("Sort by Relevence"));
|
||||||
ui->sortByBox->addItem(tr("Sort by Downloads"));
|
ui->sortByBox->addItem(tr("Sort by Downloads"));
|
||||||
|
ui->sortByBox->addItem(tr("Sort by Follows"));
|
||||||
ui->sortByBox->addItem(tr("Sort by last updated"));
|
ui->sortByBox->addItem(tr("Sort by last updated"));
|
||||||
ui->sortByBox->addItem(tr("Sort by newest"));
|
ui->sortByBox->addItem(tr("Sort by newest"));
|
||||||
|
|
||||||
@ -99,8 +100,7 @@ void ModrinthPage::onSelectionChanged(QModelIndex first, QModelIndex second)
|
|||||||
auto netJob = new NetJob(QString("Modrinth::ModVersions(%1)").arg(current.name), APPLICATION->network());
|
auto netJob = new NetJob(QString("Modrinth::ModVersions(%1)").arg(current.name), APPLICATION->network());
|
||||||
std::shared_ptr<QByteArray> response = std::make_shared<QByteArray>();
|
std::shared_ptr<QByteArray> response = std::make_shared<QByteArray>();
|
||||||
QString addonId = current.addonId;
|
QString addonId = current.addonId;
|
||||||
addonId.remove(0,6);
|
netJob->addNetAction(Net::Download::makeByteArray(QString("https://api.modrinth.com/v2/project/%1/version").arg(addonId), response.get()));
|
||||||
netJob->addNetAction(Net::Download::makeByteArray(QString("https://api.modrinth.com/api/v1/mod/%1/version").arg(addonId), response.get()));
|
|
||||||
|
|
||||||
QObject::connect(netJob, &NetJob::succeeded, this, [this, response, netJob]
|
QObject::connect(netJob, &NetJob::succeeded, this, [this, response, netJob]
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user