MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / executeTask

Method executeTask

launcher/modplatform/EnsureMetadataTask.cpp:86–169  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84}
85
86void EnsureMetadataTask::executeTask()
87{
88 setStatus(tr("Checking if mods have metadata..."));
89
90 for (auto* mod : m_mods) {
91 if (!mod->valid()) {
92 qDebug() << "Mod" << mod->name() << "is invalid!";
93 emitFail(mod);
94 continue;
95 }
96
97 // They already have the right metadata :o
98 if (mod->status() != ModStatus::NoMetadata && mod->metadata() && mod->metadata()->provider == m_provider) {
99 qDebug() << "Mod" << mod->name() << "already has metadata!";
100 emitReady(mod);
101 continue;
102 }
103
104 // Folders don't have metadata
105 if (mod->type() == ResourceType::FOLDER) {
106 emitReady(mod);
107 }
108 }
109
110 NetJob::Ptr version_task;
111
112 switch (m_provider) {
113 case (ModPlatform::Provider::MODRINTH):
114 version_task = modrinthVersionsTask();
115 break;
116 case (ModPlatform::Provider::FLAME):
117 version_task = flameVersionsTask();
118 break;
119 }
120
121 auto invalidade_leftover = [this] {
122 for (auto mod = m_mods.constBegin(); mod != m_mods.constEnd(); mod++)
123 emitFail(mod.value(), mod.key(), RemoveFromList::No);
124 m_mods.clear();
125
126 emitSucceeded();
127 };
128
129 connect(version_task.get(), &Task::finished, this, [this, invalidade_leftover] {
130 NetJob::Ptr project_task;
131
132 switch (m_provider) {
133 case (ModPlatform::Provider::MODRINTH):
134 project_task = modrinthProjectsTask();
135 break;
136 case (ModPlatform::Provider::FLAME):
137 project_task = flameProjectsTask();
138 break;
139 }
140
141 if (!project_task) {
142 invalidade_leftover();
143 return;

Callers

nothing calls this directly

Calls 12

metadataMethod · 0.80
readableNameMethod · 0.80
beginMethod · 0.80
validMethod · 0.45
nameMethod · 0.45
statusMethod · 0.45
typeMethod · 0.45
clearMethod · 0.45
getMethod · 0.45
startMethod · 0.45
sizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected