mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Added desktop notification option for subscription requests
closes #166
This commit is contained in:
parent
04c6f2d7b0
commit
441422ddc8
@ -522,6 +522,9 @@ static struct cmd_t setting_commands[] =
|
||||
"invite : Notifications for chat room invites.",
|
||||
" : on|off",
|
||||
"",
|
||||
"sub : Notifications for subscription requests.",
|
||||
" : on|off",
|
||||
"",
|
||||
"Example : /notify message on (enable message notifications)",
|
||||
"Example : /notify remind 10 (remind every 10 seconds)",
|
||||
"Example : /notify remind 0 (switch off reminders)",
|
||||
@ -807,6 +810,7 @@ cmd_init(void)
|
||||
autocomplete_add(notify_ac, strdup("typing"));
|
||||
autocomplete_add(notify_ac, strdup("remind"));
|
||||
autocomplete_add(notify_ac, strdup("invite"));
|
||||
autocomplete_add(notify_ac, strdup("sub"));
|
||||
autocomplete_add(notify_ac, strdup("status"));
|
||||
|
||||
sub_ac = autocomplete_new();
|
||||
@ -2513,7 +2517,8 @@ _cmd_set_notify(gchar **args, struct cmd_help_t help)
|
||||
|
||||
// bad kind
|
||||
if ((strcmp(kind, "message") != 0) && (strcmp(kind, "typing") != 0) &&
|
||||
(strcmp(kind, "remind") != 0) && (strcmp(kind, "invite") != 0)) {
|
||||
(strcmp(kind, "remind") != 0) && (strcmp(kind, "invite") != 0) &&
|
||||
(strcmp(kind, "sub") != 0)) {
|
||||
cons_show("Usage: %s", help.usage);
|
||||
|
||||
// set message setting
|
||||
@ -2552,6 +2557,18 @@ _cmd_set_notify(gchar **args, struct cmd_help_t help)
|
||||
cons_show("Usage: /notify invite on|off");
|
||||
}
|
||||
|
||||
// set subscription setting
|
||||
} else if (strcmp(kind, "sub") == 0) {
|
||||
if (strcmp(value, "on") == 0) {
|
||||
cons_show("Subscription notifications enabled.");
|
||||
prefs_set_boolean(PREF_NOTIFY_SUB, TRUE);
|
||||
} else if (strcmp(value, "off") == 0) {
|
||||
cons_show("Subscription notifications disabled.");
|
||||
prefs_set_boolean(PREF_NOTIFY_SUB, FALSE);
|
||||
} else {
|
||||
cons_show("Usage: /notify sub on|off");
|
||||
}
|
||||
|
||||
// set remind setting
|
||||
} else if (strcmp(kind, "remind") == 0) {
|
||||
gint period = atoi(value);
|
||||
@ -3008,6 +3025,34 @@ _notify_autocomplete(char *input, int *size)
|
||||
free(auto_msg);
|
||||
free(found);
|
||||
}
|
||||
} else if ((strncmp(input, "/notify invite ", 15) == 0) && (*size > 15)) {
|
||||
for(i = 15; i < *size; i++) {
|
||||
inp_cpy[i-15] = input[i];
|
||||
}
|
||||
inp_cpy[(*size) - 15] = '\0';
|
||||
found = prefs_autocomplete_boolean_choice(inp_cpy);
|
||||
if (found != NULL) {
|
||||
auto_msg = (char *) malloc((15 + (strlen(found) + 1)) * sizeof(char));
|
||||
strcpy(auto_msg, "/notify invite ");
|
||||
strcat(auto_msg, found);
|
||||
inp_replace_input(input, auto_msg, size);
|
||||
free(auto_msg);
|
||||
free(found);
|
||||
}
|
||||
} else if ((strncmp(input, "/notify sub ", 12) == 0) && (*size > 12)) {
|
||||
for(i = 12; i < *size; i++) {
|
||||
inp_cpy[i-12] = input[i];
|
||||
}
|
||||
inp_cpy[(*size) - 12] = '\0';
|
||||
found = prefs_autocomplete_boolean_choice(inp_cpy);
|
||||
if (found != NULL) {
|
||||
auto_msg = (char *) malloc((12 + (strlen(found) + 1)) * sizeof(char));
|
||||
strcpy(auto_msg, "/notify sub ");
|
||||
strcat(auto_msg, found);
|
||||
inp_replace_input(input, auto_msg, size);
|
||||
free(auto_msg);
|
||||
free(found);
|
||||
}
|
||||
} else if ((strncmp(input, "/notify ", 8) == 0) && (*size > 8)) {
|
||||
_parameter_autocomplete_with_ac(input, size, "/notify", notify_ac);
|
||||
}
|
||||
|
@ -300,6 +300,7 @@ _get_group(preference_t pref)
|
||||
case PREF_NOTIFY_TYPING:
|
||||
case PREF_NOTIFY_MESSAGE:
|
||||
case PREF_NOTIFY_INVITE:
|
||||
case PREF_NOTIFY_SUB:
|
||||
return "notifications";
|
||||
case PREF_CHLOG:
|
||||
return "logging";
|
||||
@ -347,6 +348,8 @@ _get_key(preference_t pref)
|
||||
return "message";
|
||||
case PREF_NOTIFY_INVITE:
|
||||
return "invite";
|
||||
case PREF_NOTIFY_SUB:
|
||||
return "sub";
|
||||
case PREF_CHLOG:
|
||||
return "chlog";
|
||||
case PREF_AUTOAWAY_CHECK:
|
||||
|
@ -51,6 +51,7 @@ typedef enum {
|
||||
PREF_NOTIFY_TYPING,
|
||||
PREF_NOTIFY_MESSAGE,
|
||||
PREF_NOTIFY_INVITE,
|
||||
PREF_NOTIFY_SUB,
|
||||
PREF_CHLOG,
|
||||
PREF_AUTOAWAY_CHECK,
|
||||
PREF_AUTOAWAY_MODE,
|
||||
|
@ -169,6 +169,9 @@ prof_handle_subscription(const char *from, jabber_subscr_t type)
|
||||
log_info("Received authorization request from %s", from);
|
||||
ui_print_system_msg_from_recipient(from, "Authorization request, type '/sub allow' to accept or '/sub deny' to reject");
|
||||
ui_current_page_off();
|
||||
if (prefs_get_boolean(PREF_NOTIFY_SUB)) {
|
||||
notify_subscription(from);
|
||||
}
|
||||
break;
|
||||
case PRESENCE_SUBSCRIBED:
|
||||
cons_show("Subscription received from %s", from);
|
||||
|
@ -92,6 +92,15 @@ notify_message(const char * const short_from)
|
||||
_notify(message, 10000, "Incoming message");
|
||||
}
|
||||
|
||||
void
|
||||
notify_subscription(const char * const from)
|
||||
{
|
||||
GString *message = g_string_new("Subscription request: \n");
|
||||
g_string_append(message, from);
|
||||
_notify(message->str, 10000, "Incomming message");
|
||||
g_string_free(message, FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
notify_remind(void)
|
||||
{
|
||||
|
@ -28,3 +28,4 @@ void notify_message(const char * const short_from);
|
||||
void notify_remind(void);
|
||||
void notify_invite(const char * const from, const char * const room,
|
||||
const char * const reason);
|
||||
void notify_subscription(const char * const from);
|
||||
|
Loading…
Reference in New Issue
Block a user