diff options
author | Aylur <[email protected]> | 2024-11-01 13:44:03 +0000 |
---|---|---|
committer | Aylur <[email protected]> | 2024-11-01 13:44:03 +0000 |
commit | e5d183860e6b21fee97e427ecac4867559b1c6e4 (patch) | |
tree | 382317f4186ed23e25266127eb59930d4c067757 /lib | |
parent | f679c48a24b200195ca703bf673a2ae72dc65d1c (diff) |
fix: trailing empty category
Diffstat (limited to 'lib')
-rw-r--r-- | lib/apps/application.vala | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/lib/apps/application.vala b/lib/apps/application.vala index 07b44e4..75b47e9 100644 --- a/lib/apps/application.vala +++ b/lib/apps/application.vala @@ -50,13 +50,16 @@ public class AstalApps.Application : Object { /** * `Categories` field from the desktop file. */ - public string[] categories { owned get { - var categories = app.get_categories(); - if (categories != null) - return categories.split(";"); - - return new string[0]; - } } + public string[] categories { + owned get { + if (app.get_categories() == null) + return {}; + + var categories = app.get_categories(); + var arr = categories.split(";"); + return categories.has_suffix(";") ? arr[0:arr.length-1] : arr; + } + } internal Application(string id, int? frequency = 0) { Object(app: new DesktopAppInfo(id)); @@ -144,28 +147,26 @@ public class AstalApps.Application : Object { } internal Json.Node to_json() { - var builder = new Json.Builder() - .begin_object() - .set_member_name("name").add_string_value(name) - .set_member_name("entry").add_string_value(entry) - .set_member_name("executable").add_string_value(executable) - .set_member_name("description").add_string_value(description) - .set_member_name("icon_name").add_string_value(icon_name) - .set_member_name("frequency").add_int_value(frequency); - - builder.set_member_name("keywords").begin_array(); + var keyword_arr = new Json.Builder().begin_array(); foreach (string keyword in keywords) { - builder.add_string_value(keyword); + keyword_arr.add_string_value(keyword); } - builder.end_array(); - builder.set_member_name("categories").begin_array(); + var category_arr = new Json.Builder().begin_array(); foreach (string category in categories) { - builder.add_string_value(category); + category_arr.add_string_value(category); } - builder.end_array(); - return builder + return new Json.Builder() + .begin_object() + .set_member_name("name").add_string_value(name) + .set_member_name("entry").add_string_value(entry) + .set_member_name("executable").add_string_value(executable) + .set_member_name("description").add_string_value(description) + .set_member_name("icon_name").add_string_value(icon_name) + .set_member_name("frequency").add_int_value(frequency) + .set_member_name("keywords").add_value(keyword_arr.end_array().get_root()) + .set_member_name("categories").add_value(category_arr.end_array().get_root()) .end_object() .get_root(); } |