Skip to content

Commit

Permalink
Add support for AppStream 1.0 (#2099)
Browse files Browse the repository at this point in the history
  • Loading branch information
meisenzahl committed Feb 6, 2024
1 parent 5e273a9 commit fce55d9
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 2 deletions.
33 changes: 33 additions & 0 deletions src/Core/FlatpakBackend.vala
Original file line number Diff line number Diff line change
Expand Up @@ -400,8 +400,13 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {

var category_array = new GLib.GenericArray<AppStream.Category> ();
category_array.add (category);
#if HAS_APPSTREAM_1_0
AppStream.utils_sort_components_into_categories (user_appstream_pool.get_components ().as_array (), category_array, false);
AppStream.utils_sort_components_into_categories (system_appstream_pool.get_components ().as_array (), category_array, false);
#else
AppStream.utils_sort_components_into_categories (user_appstream_pool.get_components (), category_array, false);
AppStream.utils_sort_components_into_categories (system_appstream_pool.get_components (), category_array, false);
#endif
components = category.get_components ();

var apps = new Gee.TreeSet<AppCenterCore.Package> ();
Expand All @@ -417,13 +422,21 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {
var apps = new Gee.TreeSet<AppCenterCore.Package> ();
var comps = user_appstream_pool.search (query);
if (category == null) {
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var packages = get_packages_for_component_id (comp.get_id ());
apps.add_all (packages);
});
} else {
var cat_packages = get_applications_for_category (category);
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var packages = get_packages_for_component_id (comp.get_id ());
foreach (var package in packages) {
if (package in cat_packages) {
Expand All @@ -435,13 +448,21 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {

comps = system_appstream_pool.search (query);
if (category == null) {
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var packages = get_packages_for_component_id (comp.get_id ());
apps.add_all (packages);
});
} else {
var cat_packages = get_applications_for_category (category);
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var packages = get_packages_for_component_id (comp.get_id ());
foreach (var package in packages) {
if (package in cat_packages) {
Expand Down Expand Up @@ -510,7 +531,11 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {
continue;
}

#if HAS_APPSTREAM_1_0
if (package.component.get_developer ().get_name () == author) {
#else
if (package.component.developer_name == author) {
#endif
package_ids.add (package.component.id);

AppCenterCore.Package? user_package = null;
Expand Down Expand Up @@ -1095,7 +1120,11 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {
warning ("Errors found in flatpak appdata, some components may be incomplete/missing: %s", e.message);
} finally {
var comp_validator = ComponentValidator.get_default ();
#if HAS_APPSTREAM_1_0
user_appstream_pool.get_components ().as_array ().foreach ((comp) => {
#else
user_appstream_pool.get_components ().foreach ((comp) => {
#endif
if (!comp_validator.validate (comp)) {
return;
}
Expand Down Expand Up @@ -1133,7 +1162,11 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {
warning ("Errors found in flatpak appdata, some components may be incomplete/missing: %s", e.message);
} finally {
var comp_validator = ComponentValidator.get_default ();
#if HAS_APPSTREAM_1_0
system_appstream_pool.get_components ().as_array ().foreach ((comp) => {
#else
system_appstream_pool.get_components ().foreach ((comp) => {
#endif
if (!comp_validator.validate (comp)) {
return;
}
Expand Down
12 changes: 12 additions & 0 deletions src/Core/Package.vala
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,11 @@ public class AppCenterCore.Package : Object {
return _author;
}

#if HAS_APPSTREAM_1_0
_author = component.get_developer ().get_name ();
#else
_author = component.developer_name;
#endif

if (_author == null) {
var project_group = component.project_group;
Expand Down Expand Up @@ -677,7 +681,11 @@ public class AppCenterCore.Package : Object {
}

try {
#if HAS_APPSTREAM_1_0
description = AppStream.markup_convert (description, TEXT);
#else
description = AppStream.markup_convert_simple (description);
#endif
} catch (Error e) {
warning ("Failed to convert description to markup: %s", e.message);
}
Expand Down Expand Up @@ -919,7 +927,11 @@ public class AppCenterCore.Package : Object {
}

public AppStream.Release? get_newest_release () {
#if HAS_APPSTREAM_1_0
var releases = component.get_releases_plain ().get_entries ();
#else
var releases = component.get_releases ();
#endif
releases.sort_with_data ((a, b) => {
if (a.get_version () == null || b.get_version () == null) {
if (a.get_version () != null) {
Expand Down
27 changes: 26 additions & 1 deletion src/Core/PackageKitBackend.vala
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,11 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {
} finally {
var new_package_list = new Gee.HashMap<string, Package> ();
var comp_validator = ComponentValidator.get_default ();
#if HAS_APPSTREAM_1_0
appstream_pool.get_components ().as_array ().foreach ((comp) => {
#else
appstream_pool.get_components ().foreach ((comp) => {
#endif
if (!comp_validator.validate (comp)) {
return;
}
Expand Down Expand Up @@ -317,7 +321,12 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {
component.set_id (id);
component.set_origin (Package.APPCENTER_PACKAGE_ORIGIN);

#if HAS_APPSTREAM_0_15
#if HAS_APPSTREAM_1_0
var components = new AppStream.ComponentBox (AppStream.ComponentBoxFlags.NONE);
components.add (component);

appstream_pool.add_components (components);
#elif HAS_APPSTREAM_0_15
var components = new GenericArray<AppStream.Component> ();
components.add (component);

Expand Down Expand Up @@ -430,7 +439,11 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {
break;
}

#if HAS_APPSTREAM_1_0
if (package.component.get_developer ().get_name () == author) {
#else
if (package.component.developer_name == author) {
#endif
packages.add (package);
}
}
Expand All @@ -447,7 +460,11 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {

var category_array = new GLib.GenericArray<AppStream.Category> ();
category_array.add (category);
#if HAS_APPSTREAM_1_0
AppStream.utils_sort_components_into_categories (appstream_pool.get_components ().as_array (), category_array, true);
#else
AppStream.utils_sort_components_into_categories (appstream_pool.get_components (), category_array, true);
#endif
components = category.get_components ();

var apps = new Gee.TreeSet<AppCenterCore.Package> ();
Expand All @@ -465,15 +482,23 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {
var apps = new Gee.TreeSet<AppCenterCore.Package> ();
var comps = appstream_pool.search (query);
if (category == null) {
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var package = get_package_for_component_id (comp.get_id ());
if (package != null) {
apps.add (package);
}
});
} else {
var cat_packages = get_applications_for_category (category);
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var package = get_package_for_component_id (comp.get_id ());
if (package != null && package in cat_packages) {
apps.add (package);
Expand Down
22 changes: 21 additions & 1 deletion src/Views/AppInfoView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,16 @@ public class AppCenter.Views.AppInfoView : AppCenter.AbstractAppContainer {
oars_flowbox.add (uncurated);
}
#endif

#if HAS_APPSTREAM_1_0
var active_locale = "en-US";
if (package_component.get_context () != null) {
active_locale = package_component.get_context ().get_locale () ?? "en-US";
}
#else
var active_locale = package_component.get_active_locale ();
if (active_locale != "en_US") {
#endif
if (active_locale != "en_US" && active_locale != "en-US") {
var percent_translated = package_component.get_language (
// Expects language without locale
active_locale.split ("_")[0]
Expand Down Expand Up @@ -492,7 +500,11 @@ public class AppCenter.Views.AppInfoView : AppCenter.AbstractAppContainer {
}
}

#if HAS_APPSTREAM_1_0
screenshots = package_component.get_screenshots_all ();
#else
screenshots = package_component.get_screenshots ();
#endif

if (screenshots.length > 0) {
screenshot_carousel = new Hdy.Carousel () {
Expand Down Expand Up @@ -1030,7 +1042,11 @@ public class AppCenter.Views.AppInfoView : AppCenter.AbstractAppContainer {
get_app_download_size.begin ();

Idle.add (() => {
#if HAS_APPSTREAM_1_0
var releases = package.component.get_releases_plain ().get_entries ();
#else
var releases = package.component.get_releases ();
#endif

foreach (unowned var release in releases) {
if (release.get_version () == null) {
Expand All @@ -1049,7 +1065,11 @@ public class AppCenter.Views.AppInfoView : AppCenter.AbstractAppContainer {

release_carousel.add (release_row);

#if HAS_APPSTREAM_1_0
if (package.installed && AppStream.vercmp_simple (release.get_version (), package.get_version ()) <= 0) {
#else
if (package.installed && AppStream.utils_compare_versions (release.get_version (), package.get_version ()) <= 0) {
#endif
break;
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/Widgets/ReleaseRow.vala
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,11 @@ public class AppCenter.Widgets.ReleaseRow : Gtk.Box {
private string format_release_description (string? description ) {
if (description != null) {
try {
#if HAS_APPSTREAM_1_0
var markup = AppStream.markup_convert (description, TEXT);
#else
var markup = AppStream.markup_convert_simple (description);
#endif

if (markup.strip () != "") {
return markup;
Expand Down
4 changes: 4 additions & 0 deletions src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ if appstream.version().version_compare('>=0.16')
args += '--define=HAS_APPSTREAM_0_16'
endif

if appstream.version().version_compare('>=1.0')
args += '--define=HAS_APPSTREAM_1_0'
endif

if get_option('packagekit_backend')
appcenter_files += files(
'Core/PackageKitBackend.vala',
Expand Down

0 comments on commit fce55d9

Please sign in to comment.