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

Method performUpdateActions

launcher/minecraft/ComponentUpdateTask.cpp:547–658  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

545overload(Ts...) -> overload<Ts...>;
546
547void ComponentUpdateTask::performUpdateActions()
548{
549 auto& instance = d->m_profile->d->m_instance;
550 bool addedActions;
551 QStringList toRemove;
552 do {
553 addedActions = false;
554 toRemove.clear();
555 auto& components = d->m_profile->d->components;
556 auto& componentIndex = d->m_profile->d->componentIndex;
557 for (auto component : components) {
558 if (!component) {
559 continue;
560 }
561 auto action = component->getUpdateAction();
562 auto visitor =
563 overload{ [](const UpdateActionNone&) {
564 // noop
565 },
566 [&component, &instance](const UpdateActionChangeVersion& cv) {
567 qCDebug(instanceProfileResolveC) << instance->name() << "|"
568 << "UpdateActionChangeVersion" << component->getID() << ":"
569 << component->getVersion() << "change to" << cv.targetVersion;
570 component->setVersion(cv.targetVersion);
571 component->waitLoadMeta();
572 },
573 [&component, &instance](const UpdateActionLatestRecommendedCompatible lrc) {
574 qCDebug(instanceProfileResolveC)
575 << instance->name() << "|"
576 << "UpdateActionLatestRecommendedCompatible" << component->getID() << ":" << component->getVersion()
577 << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version;
578 auto versionList = APPLICATION->metadataIndex()->get(component->getID());
579 if (versionList) {
580 versionList->waitToLoad();
581 auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version);
582 if (!recommended) {
583 recommended = versionList->getLatestForParent(lrc.parentUid, lrc.version);
584 }
585 if (recommended) {
586 component->setVersion(recommended->version());
587 component->waitLoadMeta();
588 return;
589 } else {
590 component->addComponentProblem(ProblemSeverity::Error,
591 QObject::tr("No compatible version of %1 found for %2 %3")
592 .arg(component->getName(), lrc.parentName, lrc.version));
593 }
594 } else {
595 component->addComponentProblem(
596 ProblemSeverity::Error,
597 QObject::tr("No version list in metadata index for %1").arg(component->getID()));
598 }
599 },
600 [&component, &instance, &toRemove](const UpdateActionRemove&) {
601 qCDebug(instanceProfileResolveC)
602 << instance->name() << "|"
603 << "UpdateActionRemove" << component->getID() << ":" << component->getVersion() << "removing";
604 toRemove.append(component->getID());

Callers

nothing calls this directly

Calls 15

getUpdateActionMethod · 0.80
getIDMethod · 0.80
setVersionMethod · 0.80
waitLoadMetaMethod · 0.80
metadataIndexMethod · 0.80
waitToLoadMethod · 0.80
getLatestForParentMethod · 0.80
addComponentProblemMethod · 0.80
getNameMethod · 0.80
appendMethod · 0.80
getLoadedVersionMethod · 0.80

Tested by

no test coverage detected