When renaming an account, copy all existing keys.

No need to have a fixed list of keys, we can simply copy all existing ones.

Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
This commit is contained in:
Steffen Jaeckel
2025-11-14 14:40:54 +01:00
parent bb964b2f1b
commit c61c72f2f0

View File

@@ -378,45 +378,11 @@ accounts_rename(const char* const account_name, const char* const new_name)
return FALSE; return FALSE;
} }
// treat all properties as strings for copy gsize nkeys;
gchar* string_keys[] = { auto_gcharv gchar** keys = g_key_file_get_keys(accounts, account_name, &nkeys, NULL);
"enabled", for (gsize i = 0; i < nkeys; i++) {
"jid", auto_gchar gchar* new_value = g_key_file_get_value(accounts, account_name, keys[i], NULL);
"server", g_key_file_set_value(accounts, new_name, keys[i], new_value);
"port",
"resource",
"password",
"eval_password",
"presence.last",
"presence.laststatus",
"presence.login",
"priority.online",
"priority.chat",
"priority.away",
"priority.xa",
"priority.dnd",
"muc.service",
"muc.nick",
"otr.policy",
"otr.manual",
"otr.opportunistic",
"otr.always",
"omemo.policy",
"omemo.enabled",
"omemo.disabled",
"ox.enabled",
"pgp.enabled",
"pgp.keyid",
"last.activity",
"script.start",
"tls.policy"
};
for (int i = 0; i < ARRAY_SIZE(string_keys); i++) {
auto_gchar gchar* value = g_key_file_get_string(accounts, account_name, string_keys[i], NULL);
if (value) {
g_key_file_set_string(accounts, new_name, string_keys[i], value);
}
} }
g_key_file_remove_group(accounts, account_name, NULL); g_key_file_remove_group(accounts, account_name, NULL);
@@ -424,9 +390,9 @@ accounts_rename(const char* const account_name, const char* const new_name)
_accounts_save(new_name); _accounts_save(new_name);
autocomplete_remove(all_ac, account_name); autocomplete_remove(all_ac, account_name);
autocomplete_remove(enabled_ac, account_name);
autocomplete_add(all_ac, new_name); autocomplete_add(all_ac, new_name);
if (g_key_file_get_boolean(accounts, new_name, "enabled", NULL)) { if (g_key_file_get_boolean(accounts, new_name, "enabled", NULL)) {
autocomplete_remove(enabled_ac, account_name);
autocomplete_add(enabled_ac, new_name); autocomplete_add(enabled_ac, new_name);
} }