/* * SPDX-FileCopyrightText: 2013 Aleix Pol Gonzalez * SPDX-FileCopyrightText: 2017 Jan Grulich * * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ #include "FlatpakRefreshAppstreamMetadataJob.h" #include "libdiscover_backend_flatpak_debug.h" FlatpakRefreshAppstreamMetadataJob::FlatpakRefreshAppstreamMetadataJob(FlatpakInstallation *installation, FlatpakRemote *remote) : QThread() , m_cancellable(g_cancellable_new()) , m_installation(g_object_ref(installation)) , m_remote(g_object_ref(remote)) { connect(this, &FlatpakRefreshAppstreamMetadataJob::finished, this, &QObject::deleteLater); } FlatpakRefreshAppstreamMetadataJob::~FlatpakRefreshAppstreamMetadataJob() { g_object_unref(m_cancellable); g_object_unref(m_installation); g_object_unref(m_remote); } void FlatpakRefreshAppstreamMetadataJob::cancel() { g_cancellable_cancel(m_cancellable); } void FlatpakRefreshAppstreamMetadataJob::run() { g_autoptr(GError) localError = nullptr; #if FLATPAK_CHECK_VERSION(0, 9, 4) // With Flatpak 0.9.4 we can use flatpak_installation_update_appstream_full_sync() providing progress reporting which we don't use at this moment, but // still better to use newer function in case the previous one gets deprecated if (!flatpak_installation_update_appstream_full_sync(m_installation, flatpak_remote_get_name(m_remote), nullptr, nullptr, nullptr, nullptr, m_cancellable, &localError)) { #else if (!flatpak_installation_update_appstream_sync(m_installation, flatpak_remote_get_name(m_remote), nullptr, nullptr, m_cancellable, &localError)) { #endif const QString error = localError ? QString::fromUtf8(localError->message) : QStringLiteral(""); qCWarning(LIBDISCOVER_BACKEND_FLATPAK_LOG).nospace() << "Failed to refresh appstream metadata for " << flatpak_remote_get_name(m_remote) << ": " << error; } Q_EMIT jobRefreshAppstreamMetadataFinished(m_installation, m_remote); } #include "moc_FlatpakRefreshAppstreamMetadataJob.cpp"