mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Merge branch 'master' into openpgp
This commit is contained in:
commit
8673488368
@ -280,42 +280,12 @@ sv_ev_contact_offline(char *barejid, char *resource, char *status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sv_ev_contact_online(char *barejid, Resource *resource,
|
sv_ev_contact_online(char *barejid, Resource *resource, GDateTime *last_activity)
|
||||||
GDateTime *last_activity)
|
|
||||||
{
|
{
|
||||||
gboolean updated = roster_update_presence(barejid, resource, last_activity);
|
gboolean updated = roster_update_presence(barejid, resource, last_activity);
|
||||||
|
|
||||||
if (updated) {
|
if (updated) {
|
||||||
char *show_console = prefs_get_string(PREF_STATUSES_CONSOLE);
|
ui_contact_online(barejid, resource, last_activity);
|
||||||
char *show_chat_win = prefs_get_string(PREF_STATUSES_CHAT);
|
|
||||||
PContact contact = roster_get_contact(barejid);
|
|
||||||
if (p_contact_subscription(contact)) {
|
|
||||||
if (strcmp(p_contact_subscription(contact), "none") != 0) {
|
|
||||||
|
|
||||||
// show in console if "all"
|
|
||||||
if (g_strcmp0(show_console, "all") == 0) {
|
|
||||||
cons_show_contact_online(contact, resource, last_activity);
|
|
||||||
|
|
||||||
// show in console of "online" and presence online
|
|
||||||
} else if (g_strcmp0(show_console, "online") == 0 &&
|
|
||||||
resource->presence == RESOURCE_ONLINE) {
|
|
||||||
cons_show_contact_online(contact, resource, last_activity);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// show in chat win if "all"
|
|
||||||
if (g_strcmp0(show_chat_win, "all") == 0) {
|
|
||||||
ui_chat_win_contact_online(contact, resource, last_activity);
|
|
||||||
|
|
||||||
// show in char win if "online" and presence online
|
|
||||||
} else if (g_strcmp0(show_chat_win, "online") == 0 &&
|
|
||||||
resource->presence == RESOURCE_ONLINE) {
|
|
||||||
ui_chat_win_contact_online(contact, resource, last_activity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
prefs_free_string(show_console);
|
|
||||||
prefs_free_string(show_chat_win);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rosterwin_roster();
|
rosterwin_roster();
|
||||||
|
@ -319,6 +319,42 @@ ui_chat_win_exists(const char * const barejid)
|
|||||||
return (chatwin != NULL);
|
return (chatwin != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ui_contact_online(char *barejid, Resource *resource, GDateTime *last_activity)
|
||||||
|
{
|
||||||
|
char *show_console = prefs_get_string(PREF_STATUSES_CONSOLE);
|
||||||
|
char *show_chat_win = prefs_get_string(PREF_STATUSES_CHAT);
|
||||||
|
PContact contact = roster_get_contact(barejid);
|
||||||
|
|
||||||
|
// show nothing
|
||||||
|
if (g_strcmp0(p_contact_subscription(contact), "none") == 0) {
|
||||||
|
free(show_console);
|
||||||
|
free(show_chat_win);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// show in console if "all"
|
||||||
|
if (g_strcmp0(show_console, "all") == 0) {
|
||||||
|
cons_show_contact_online(contact, resource, last_activity);
|
||||||
|
|
||||||
|
// show in console of "online" and presence online
|
||||||
|
} else if (g_strcmp0(show_console, "online") == 0 && resource->presence == RESOURCE_ONLINE) {
|
||||||
|
cons_show_contact_online(contact, resource, last_activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
// show in chat win if "all"
|
||||||
|
if (g_strcmp0(show_chat_win, "all") == 0) {
|
||||||
|
ui_chat_win_contact_online(contact, resource, last_activity);
|
||||||
|
|
||||||
|
// show in char win if "online" and presence online
|
||||||
|
} else if (g_strcmp0(show_chat_win, "online") == 0 && resource->presence == RESOURCE_ONLINE) {
|
||||||
|
ui_chat_win_contact_online(contact, resource, last_activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(show_console);
|
||||||
|
free(show_chat_win);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ui_contact_typing(const char * const barejid, const char * const resource)
|
ui_contact_typing(const char * const barejid, const char * const resource)
|
||||||
{
|
{
|
||||||
|
@ -112,6 +112,7 @@ char * ui_ask_password(void);
|
|||||||
void ui_handle_stanza(const char * const msg);
|
void ui_handle_stanza(const char * const msg);
|
||||||
|
|
||||||
// ui events
|
// ui events
|
||||||
|
void ui_contact_online(char *barejid, Resource *resource, GDateTime *last_activity);
|
||||||
void ui_contact_typing(const char * const barejid, const char * const resource);
|
void ui_contact_typing(const char * const barejid, const char * const resource);
|
||||||
void ui_incoming_msg(const char * const from, const char * const resource, const char * const message, GTimeVal *tv_stamp);
|
void ui_incoming_msg(const char * const from, const char * const resource, const char * const message, GTimeVal *tv_stamp);
|
||||||
void ui_incoming_private_msg(const char * const fulljid, const char * const message, GTimeVal *tv_stamp);
|
void ui_incoming_private_msg(const char * const fulljid, const char * const message, GTimeVal *tv_stamp);
|
||||||
|
@ -14,31 +14,19 @@
|
|||||||
#include "ui/stub_ui.h"
|
#include "ui/stub_ui.h"
|
||||||
#include "muc.h"
|
#include "muc.h"
|
||||||
|
|
||||||
void console_doesnt_show_online_presence_when_set_none(void **state)
|
|
||||||
{
|
|
||||||
prefs_set_string(PREF_STATUSES_CONSOLE, "none");
|
|
||||||
roster_init();
|
|
||||||
roster_add("test1@server", "bob", NULL, "both", FALSE);
|
|
||||||
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
|
|
||||||
|
|
||||||
sv_ev_contact_online("test1@server", resource, NULL);
|
|
||||||
|
|
||||||
roster_clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void console_shows_online_presence_when_set_online(void **state)
|
void console_shows_online_presence_when_set_online(void **state)
|
||||||
{
|
{
|
||||||
prefs_set_string(PREF_STATUSES_CONSOLE, "online");
|
prefs_set_string(PREF_STATUSES_CONSOLE, "online");
|
||||||
roster_init();
|
roster_init();
|
||||||
roster_add("test1@server", "bob", NULL, "both", FALSE);
|
char *barejid = "test1@server";
|
||||||
|
roster_add(barejid, "bob", NULL, "both", FALSE);
|
||||||
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
|
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
|
||||||
PContact contact = roster_get_contact("test1@server");
|
|
||||||
|
|
||||||
expect_memory(cons_show_contact_online, contact, contact, sizeof(contact));
|
expect_memory(ui_contact_online, barejid, barejid, sizeof(barejid));
|
||||||
expect_memory(cons_show_contact_online, resource, resource, sizeof(resource));
|
expect_memory(ui_contact_online, resource, resource, sizeof(resource));
|
||||||
expect_value(cons_show_contact_online, last_activity, NULL);
|
expect_value(ui_contact_online, last_activity, NULL);
|
||||||
|
|
||||||
sv_ev_contact_online("test1@server", resource, NULL);
|
sv_ev_contact_online(barejid, resource, NULL);
|
||||||
|
|
||||||
roster_clear();
|
roster_clear();
|
||||||
}
|
}
|
||||||
@ -47,39 +35,15 @@ void console_shows_online_presence_when_set_all(void **state)
|
|||||||
{
|
{
|
||||||
prefs_set_string(PREF_STATUSES_CONSOLE, "all");
|
prefs_set_string(PREF_STATUSES_CONSOLE, "all");
|
||||||
roster_init();
|
roster_init();
|
||||||
roster_add("test1@server", "bob", NULL, "both", FALSE);
|
char *barejid = "test1@server";
|
||||||
|
roster_add(barejid, "bob", NULL, "both", FALSE);
|
||||||
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
|
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
|
||||||
PContact contact = roster_get_contact("test1@server");
|
|
||||||
|
|
||||||
expect_memory(cons_show_contact_online, contact, contact, sizeof(contact));
|
expect_memory(ui_contact_online, barejid, barejid, sizeof(barejid));
|
||||||
expect_memory(cons_show_contact_online, resource, resource, sizeof(resource));
|
expect_memory(ui_contact_online, resource, resource, sizeof(resource));
|
||||||
expect_value(cons_show_contact_online, last_activity, NULL);
|
expect_value(ui_contact_online, last_activity, NULL);
|
||||||
|
|
||||||
sv_ev_contact_online("test1@server", resource, NULL);
|
sv_ev_contact_online(barejid, resource, NULL);
|
||||||
|
|
||||||
roster_clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void console_doesnt_show_dnd_presence_when_set_none(void **state)
|
|
||||||
{
|
|
||||||
prefs_set_string(PREF_STATUSES_CONSOLE, "none");
|
|
||||||
roster_init();
|
|
||||||
roster_add("test1@server", "bob", NULL, "both", FALSE);
|
|
||||||
Resource *resource = resource_new("resource", RESOURCE_DND, NULL, 10);
|
|
||||||
|
|
||||||
sv_ev_contact_online("test1@server", resource, NULL);
|
|
||||||
|
|
||||||
roster_clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void console_doesnt_show_dnd_presence_when_set_online(void **state)
|
|
||||||
{
|
|
||||||
prefs_set_string(PREF_STATUSES_CONSOLE, "online");
|
|
||||||
roster_init();
|
|
||||||
roster_add("test1@server", "bob", NULL, "both", FALSE);
|
|
||||||
Resource *resource = resource_new("resource", RESOURCE_DND, NULL, 10);
|
|
||||||
|
|
||||||
sv_ev_contact_online("test1@server", resource, NULL);
|
|
||||||
|
|
||||||
roster_clear();
|
roster_clear();
|
||||||
}
|
}
|
||||||
@ -88,15 +52,15 @@ void console_shows_dnd_presence_when_set_all(void **state)
|
|||||||
{
|
{
|
||||||
prefs_set_string(PREF_STATUSES_CONSOLE, "all");
|
prefs_set_string(PREF_STATUSES_CONSOLE, "all");
|
||||||
roster_init();
|
roster_init();
|
||||||
roster_add("test1@server", "bob", NULL, "both", FALSE);
|
char *barejid = "test1@server";
|
||||||
|
roster_add(barejid, "bob", NULL, "both", FALSE);
|
||||||
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
|
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
|
||||||
PContact contact = roster_get_contact("test1@server");
|
|
||||||
|
|
||||||
expect_memory(cons_show_contact_online, contact, contact, sizeof(contact));
|
expect_memory(ui_contact_online, barejid, barejid, sizeof(barejid));
|
||||||
expect_memory(cons_show_contact_online, resource, resource, sizeof(resource));
|
expect_memory(ui_contact_online, resource, resource, sizeof(resource));
|
||||||
expect_value(cons_show_contact_online, last_activity, NULL);
|
expect_value(ui_contact_online, last_activity, NULL);
|
||||||
|
|
||||||
sv_ev_contact_online("test1@server", resource, NULL);
|
sv_ev_contact_online(barejid, resource, NULL);
|
||||||
|
|
||||||
roster_clear();
|
roster_clear();
|
||||||
}
|
}
|
||||||
|
@ -425,21 +425,12 @@ int main(int argc, char* argv[]) {
|
|||||||
load_preferences,
|
load_preferences,
|
||||||
close_preferences),
|
close_preferences),
|
||||||
|
|
||||||
unit_test_setup_teardown(console_doesnt_show_online_presence_when_set_none,
|
|
||||||
load_preferences,
|
|
||||||
close_preferences),
|
|
||||||
unit_test_setup_teardown(console_shows_online_presence_when_set_online,
|
unit_test_setup_teardown(console_shows_online_presence_when_set_online,
|
||||||
load_preferences,
|
load_preferences,
|
||||||
close_preferences),
|
close_preferences),
|
||||||
unit_test_setup_teardown(console_shows_online_presence_when_set_all,
|
unit_test_setup_teardown(console_shows_online_presence_when_set_all,
|
||||||
load_preferences,
|
load_preferences,
|
||||||
close_preferences),
|
close_preferences),
|
||||||
unit_test_setup_teardown(console_doesnt_show_dnd_presence_when_set_none,
|
|
||||||
load_preferences,
|
|
||||||
close_preferences),
|
|
||||||
unit_test_setup_teardown(console_doesnt_show_dnd_presence_when_set_online,
|
|
||||||
load_preferences,
|
|
||||||
close_preferences),
|
|
||||||
unit_test_setup_teardown(console_shows_dnd_presence_when_set_all,
|
unit_test_setup_teardown(console_shows_dnd_presence_when_set_all,
|
||||||
load_preferences,
|
load_preferences,
|
||||||
close_preferences),
|
close_preferences),
|
||||||
|
@ -185,6 +185,13 @@ char * ui_ask_password(void)
|
|||||||
void ui_handle_stanza(const char * const msg) {}
|
void ui_handle_stanza(const char * const msg) {}
|
||||||
|
|
||||||
// ui events
|
// ui events
|
||||||
|
void ui_contact_online(char *barejid, Resource *resource, GDateTime *last_activity)
|
||||||
|
{
|
||||||
|
check_expected(barejid);
|
||||||
|
check_expected(resource);
|
||||||
|
check_expected(last_activity);
|
||||||
|
}
|
||||||
|
|
||||||
void ui_contact_typing(const char * const barejid, const char * const resource) {}
|
void ui_contact_typing(const char * const barejid, const char * const resource) {}
|
||||||
void ui_incoming_msg(const char * const from, const char * const resource, const char * const message, GTimeVal *tv_stamp) {}
|
void ui_incoming_msg(const char * const from, const char * const resource, const char * const message, GTimeVal *tv_stamp) {}
|
||||||
void ui_message_receipt(const char * const barejid, const char * const id) {}
|
void ui_message_receipt(const char * const barejid, const char * const id) {}
|
||||||
|
Loading…
Reference in New Issue
Block a user