[gnome-software/1237-fedora-rpm-repo-hidden-by-rpm-fusion-repo: 71/72] gs-plugin-appstream: Search with appstream origin, if available
- From: Phaedrus Leeds <mwleeds src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/1237-fedora-rpm-repo-hidden-by-rpm-fusion-repo: 71/72] gs-plugin-appstream: Search with appstream origin, if available
- Date: Tue, 1 Jun 2021 23:31:16 +0000 (UTC)
commit 2e5305d9017882fc3bfa42c3d46d9c9b543e0e67
Author: Milan Crha <mcrha redhat com>
Date: Wed May 5 18:42:52 2021 +0200
gs-plugin-appstream: Search with appstream origin, if available
When the app has set an appstream origin, then search with it, to better
match the application in case it's provided by multiple repositories.
plugins/core/gs-plugin-appstream.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/plugins/core/gs-plugin-appstream.c b/plugins/core/gs-plugin-appstream.c
index c771f74a5..000509421 100644
--- a/plugins/core/gs-plugin-appstream.c
+++ b/plugins/core/gs-plugin-appstream.c
@@ -809,7 +809,7 @@ gs_plugin_refine_from_id (GsPlugin *plugin,
GError **error)
{
GsPluginData *priv = gs_plugin_get_data (plugin);
- const gchar *id;
+ const gchar *id, *origin;
g_autoptr(GError) error_local = NULL;
g_autoptr(GRWLockReaderLocker) locker = NULL;
g_autoptr(GString) xpath = g_string_new (NULL);
@@ -822,9 +822,16 @@ gs_plugin_refine_from_id (GsPlugin *plugin,
locker = g_rw_lock_reader_locker_new (&priv->silo_lock);
+ origin = gs_app_get_origin_appstream (app);
+
/* look in AppStream then fall back to AppData */
- xb_string_append_union (xpath, "components/component/id[text()='%s']/../pkgname/..", id);
- xb_string_append_union (xpath, "components/component[@type='webapp']/id[text()='%s']/..", id);
+ if (origin && *origin) {
+ xb_string_append_union (xpath,
"components[@origin='%s']/component/id[text()='%s']/../pkgname/..", origin, id);
+ xb_string_append_union (xpath,
"components[@origin='%s']/component[@type='webapp']/id[text()='%s']/..", origin, id);
+ } else {
+ xb_string_append_union (xpath, "components/component/id[text()='%s']/../pkgname/..", id);
+ xb_string_append_union (xpath, "components/component[@type='webapp']/id[text()='%s']/..", id);
+ }
xb_string_append_union (xpath, "component/id[text()='%s']/..", id);
components = xb_silo_query (priv->silo, xpath->str, 0, &error_local);
if (components == NULL) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]