MCPcopy Create free account
hub / github.com/FreesmTeam/FreesmLauncher / installMod

Method installMod

launcher/minecraft/mod/ModFolderModel.cpp:388–429  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

386
387static const FlameAPI flameAPI;
388bool ModFolderModel::installMod(QString file_path, ModPlatform::IndexedVersion& vers)
389{
390 if (vers.addonId.isValid()) {
391 ModPlatform::IndexedPack pack{
392 vers.addonId,
393 ModPlatform::ResourceProvider::FLAME,
394 };
395
396 QEventLoop loop;
397
398 auto response = std::make_shared<QByteArray>();
399 auto job = flameAPI.getProject(vers.addonId.toString(), response);
400
401 QObject::connect(job.get(), &Task::failed, [&loop] { loop.quit(); });
402 QObject::connect(job.get(), &Task::aborted, &loop, &QEventLoop::quit);
403 QObject::connect(job.get(), &Task::succeeded, [response, this, &vers, &loop, &pack] {
404 QJsonParseError parse_error{};
405 QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
406 if (parse_error.error != QJsonParseError::NoError) {
407 qWarning() << "Error while parsing JSON response for mod info at " << parse_error.offset
408 << " reason: " << parse_error.errorString();
409 qDebug() << *response;
410 return;
411 }
412 try {
413 auto obj = Json::requireObject(Json::requireObject(doc), "data");
414 FlameMod::loadIndexedPack(pack, obj);
415 } catch (const JSONValidationError& e) {
416 qDebug() << doc;
417 qWarning() << "Error while reading mod info: " << e.cause();
418 }
419 LocalModUpdateTask update_metadata(indexDir(), pack, vers);
420 QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit);
421 update_metadata.start();
422 });
423
424 job->start();
425
426 loop.exec();
427 }
428 return ResourceFolderModel::installResource(file_path);
429}

Callers 2

processURLsMethod · 0.45

Calls 11

requireObjectFunction · 0.85
loadIndexedPackFunction · 0.85
quitMethod · 0.80
errorStringMethod · 0.80
causeMethod · 0.80
isValidMethod · 0.45
getProjectMethod · 0.45
toStringMethod · 0.45
getMethod · 0.45
startMethod · 0.45
execMethod · 0.45

Tested by

no test coverage detected