MCPcopy Create free account
hub / github.com/ElyPrismLauncher/Launcher / performUpdateActions

Method performUpdateActions

launcher/minecraft/ComponentUpdateTask.cpp:582–693  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

580overload(Ts...) -> overload<Ts...>;
581
582void ComponentUpdateTask::performUpdateActions()
583{
584 auto& instance = d->m_profile->d->m_instance;
585 bool addedActions;
586 QStringList toRemove;
587 do {
588 addedActions = false;
589 toRemove.clear();
590 auto& components = d->m_profile->d->components;
591 auto& componentIndex = d->m_profile->d->componentIndex;
592 for (auto component : components) {
593 if (!component) {
594 continue;
595 }
596 auto action = component->getUpdateAction();
597 auto visitor =
598 overload{ [](const UpdateActionNone&) {
599 // noop
600 },
601 [&component, &instance](const UpdateActionChangeVersion& cv) {
602 qCDebug(instanceProfileResolveC) << instance->name() << "|"
603 << "UpdateActionChangeVersion" << component->getID() << ":"
604 << component->getVersion() << "change to" << cv.targetVersion;
605 component->setVersion(cv.targetVersion);
606 component->waitLoadMeta();
607 },
608 [&component, &instance](const UpdateActionLatestRecommendedCompatible& lrc) {
609 qCDebug(instanceProfileResolveC)
610 << instance->name() << "|"
611 << "UpdateActionLatestRecommendedCompatible" << component->getID() << ":" << component->getVersion()
612 << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version;
613 auto versionList = APPLICATION->metadataIndex()->get(component->getID());
614 if (versionList) {
615 versionList->waitToLoad();
616 auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version);
617 if (!recommended) {
618 recommended = versionList->getLatestForParent(lrc.parentUid, lrc.version);
619 }
620 if (recommended) {
621 component->setVersion(recommended->version());
622 component->waitLoadMeta();
623 return;
624 } else {
625 component->addComponentProblem(ProblemSeverity::Error,
626 QObject::tr("No compatible version of %1 found for %2 %3")
627 .arg(component->getName(), lrc.parentName, lrc.version));
628 }
629 } else {
630 component->addComponentProblem(
631 ProblemSeverity::Error,
632 QObject::tr("No version list in metadata index for %1").arg(component->getID()));
633 }
634 },
635 [&component, &instance, &toRemove](const UpdateActionRemove&) {
636 qCDebug(instanceProfileResolveC)
637 << instance->name() << "|"
638 << "UpdateActionRemove" << component->getID() << ":" << component->getVersion() << "removing";
639 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