* @brief Returns detailed info for a specific extension by ID. */
| 189 | * @brief Returns detailed info for a specific extension by ID. |
| 190 | */ |
| 191 | API::CommandResponse API::Handlers::ExtensionHandler::getAddonInfo(const QString& id, |
| 192 | const QJsonObject& params) |
| 193 | { |
| 194 | const auto extensionId = params.value("extensionId").toString(); |
| 195 | if (extensionId.isEmpty()) |
| 196 | return CommandResponse::makeError( |
| 197 | id, QStringLiteral("INVALID_PARAMS"), "Missing extensionId parameter"); |
| 198 | |
| 199 | auto& mgr = Misc::ExtensionManager::instance(); |
| 200 | for (const auto& addon : mgr.extensions()) { |
| 201 | const auto map = addon.toMap(); |
| 202 | if (map.value("id").toString() == extensionId) { |
| 203 | auto data = QJsonObject::fromVariantMap(map); |
| 204 | data.insert("installed", mgr.isInstalled(extensionId)); |
| 205 | data.insert("updateAvailable", mgr.hasUpdate(extensionId)); |
| 206 | data.insert("installedVersion", mgr.installedVersion(extensionId)); |
| 207 | return CommandResponse::makeSuccess(id, data); |
| 208 | } |
| 209 | } |
| 210 | |
| 211 | return CommandResponse::makeError( |
| 212 | id, QStringLiteral("NOT_FOUND"), "Extension not found: " + extensionId); |
| 213 | } |
| 214 | |
| 215 | /** |
| 216 | * @brief Installs an extension by setting the selected index and triggering install. |
nothing calls this directly
no test coverage detected