From e16fd156299ec49dbd09bdfa78abb2ef3ec207b0 Mon Sep 17 00:00:00 2001 From: Vladimir Vaskov Date: Sat, 30 Nov 2024 00:45:44 +0300 Subject: [PATCH] feat: eliminate repetitions when adding elements --- lib/folder.vala | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/lib/folder.vala b/lib/folder.vala index bd3dad1..1149db3 100644 --- a/lib/folder.vala +++ b/lib/folder.vala @@ -51,8 +51,14 @@ namespace Foldy.Folder { public static void add_folder_categories (string folder_id, string[] folder_categories) { var builder = new StrvBuilder (); - builder.addv (get_folder_categories (folder_id)); - builder.addv (folder_categories); + var current_categories = get_folder_categories (folder_id); + + builder.addv (current_categories); + foreach (string category in folder_categories) { + if (!(category in current_categories)) { + builder.add (category); + } + } set_folder_categories (folder_id, builder.end ()); } @@ -94,8 +100,14 @@ namespace Foldy.Folder { public static void add_folder_apps (string folder_id, string[] folder_apps) { var builder = new StrvBuilder (); - builder.addv (get_folder_apps (folder_id)); - builder.addv (folder_apps); + var current_apps = get_folder_apps (folder_id); + + builder.addv (current_apps); + foreach (string app in folder_apps) { + if (!(app in current_apps)) { + builder.add (app); + } + } set_folder_apps (folder_id, builder.end ()); } @@ -126,8 +138,14 @@ namespace Foldy.Folder { public static void add_folder_excluded_apps (string folder_id, string[] folder_excluded_apps) { var builder = new StrvBuilder (); - builder.addv (get_folder_apps (folder_id)); - builder.addv (folder_excluded_apps); + var current_excluded_apps = get_folder_apps (folder_id); + + builder.addv (current_excluded_apps); + foreach (string excluded_app in folder_excluded_apps) { + if (!(excluded_app in current_excluded_apps)) { + builder.add (excluded_app); + } + } set_folder_apps (folder_id, builder.end ()); }