| 84 | } |
| 85 | |
| 86 | void 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; |
nothing calls this directly
no test coverage detected