From d011d6707c59b39dec9e83611592ee9c4b0b5a4d Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Thu, 5 May 2022 23:41:45 +0200 Subject: ox: Add /ox log command --- src/command/cmd_ac.c | 6 ++++++ src/command/cmd_defs.c | 3 ++- src/command/cmd_funcs.c | 25 +++++++++++++++++++++++++ src/command/cmd_funcs.h | 1 + src/config/preferences.c | 6 ++++++ src/config/preferences.h | 1 + 6 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/command/cmd_ac.c b/src/command/cmd_ac.c index 1a29c9cc..508c6f21 100644 --- a/src/command/cmd_ac.c +++ b/src/command/cmd_ac.c @@ -893,6 +893,11 @@ cmd_ac_init(void) autocomplete_add(ox_ac, "announce"); autocomplete_add(ox_ac, "discover"); autocomplete_add(ox_ac, "request"); + + ox_log_ac = autocomplete_new(); + autocomplete_add(ox_log_ac, "on"); + autocomplete_add(ox_log_ac, "off"); + autocomplete_add(ox_log_ac, "redact"); #endif tls_ac = autocomplete_new(); @@ -1443,6 +1448,7 @@ cmd_ac_reset(ProfWin* window) autocomplete_reset(pgp_log_ac); autocomplete_reset(pgp_sendfile_ac); autocomplete_reset(ox_ac); + autocomplete_reset(ox_log_ac); #endif autocomplete_reset(tls_ac); autocomplete_reset(titlebar_ac); diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c index b816ddcc..f2cc1513 100644 --- a/src/command/cmd_defs.c +++ b/src/command/cmd_defs.c @@ -1715,7 +1715,8 @@ static struct cmd_t command_defs[] = { #ifdef HAVE_LIBGPGME { "/ox", parse_args, 1, 3, NULL, - CMD_NOSUBFUNCS + CMD_SUBFUNCS( + { "log", cmd_ox_log }) CMD_MAINFUNC(cmd_ox) CMD_TAGS( CMD_TAG_CHAT, diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index f1fa37f1..9d6441b1 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -7725,6 +7725,31 @@ cmd_ox(ProfWin* window, const char* const command, gchar** args) } return TRUE; } + +gboolean +cmd_ox_log(ProfWin* window, const char* const command, gchar** args) +{ + char* choice = args[1]; + if (g_strcmp0(choice, "on") == 0) { + prefs_set_string(PREF_OX_LOG, "on"); + cons_show("OX messages will be logged as plaintext."); + if (!prefs_get_boolean(PREF_CHLOG)) { + cons_show("Chat logging is currently disabled, use '/logging chat on' to enable."); + } + } else if (g_strcmp0(choice, "off") == 0) { + prefs_set_string(PREF_OX_LOG, "off"); + cons_show("OX message logging disabled."); + } else if (g_strcmp0(choice, "redact") == 0) { + prefs_set_string(PREF_OX_LOG, "redact"); + cons_show("OX messages will be logged as '[redacted]'."); + if (!prefs_get_boolean(PREF_CHLOG)) { + cons_show("Chat logging is currently disabled, use '/logging chat on' to enable."); + } + } else { + cons_bad_cmd_usage(command); + } + return TRUE; +} #endif // HAVE_LIBGPGME gboolean diff --git a/src/command/cmd_funcs.h b/src/command/cmd_funcs.h index 41074720..d0a6a543 100644 --- a/src/command/cmd_funcs.h +++ b/src/command/cmd_funcs.h @@ -110,6 +110,7 @@ gboolean cmd_notify(ProfWin* window, const char* const command, gchar** args); gboolean cmd_pgp(ProfWin* window, const char* const command, gchar** args); #ifdef HAVE_LIBGPGME gboolean cmd_ox(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_ox_log(ProfWin* window, const char* const command, gchar** args); #endif // HAVE_LIBGPGME gboolean cmd_outtype(ProfWin* window, const char* const command, gchar** args); gboolean cmd_prefs(ProfWin* window, const char* const command, gchar** args); diff --git a/src/config/preferences.c b/src/config/preferences.c index 62b75051..47be88fd 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -1882,6 +1882,8 @@ _get_group(preference_t pref) case PREF_OMEMO_POLICY: case PREF_OMEMO_TRUST_MODE: return PREF_GROUP_OMEMO; + case PREF_OX_LOG: + return PREF_GROUP_OX; default: return NULL; } @@ -2153,6 +2155,8 @@ _get_key(preference_t pref) return "stamp.outgoing"; case PREF_INCOMING_STAMP: return "stamp.incoming"; + case PREF_OX_LOG: + return "log"; default: return NULL; } @@ -2297,6 +2301,8 @@ _get_default_string(preference_t pref) return NULL; case PREF_URL_SAVE_CMD: return NULL; // Default to built-in method. + case PREF_OX_LOG: + return "redact"; default: return NULL; } diff --git a/src/config/preferences.h b/src/config/preferences.h index 46f2669a..5fef498d 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -179,6 +179,7 @@ typedef enum { PREF_OUTGOING_STAMP, PREF_INCOMING_STAMP, PREF_NOTIFY_ROOM_OFFLINE, + PREF_OX_LOG, } preference_t; typedef struct prof_alias_t -- cgit 1.4.1-2-gfad0