comparison libpurple/protocols/jabber/presence.c @ 27497:9a5a9a4e7626

Simplify the fake_to_self function. The majority of the changes are indentation (since I don't expect the jabber_buddy_find to fail, it's now a g_return_if_fail).
author Paul Aurich <paul@darkrain42.org>
date Sun, 07 Jun 2009 06:17:29 +0000
parents c8390dc125c1
children 6d26258e9f1d
comparison
equal deleted inserted replaced
27496:e3c2c3e72d7a 27497:9a5a9a4e7626
57 xmlnode_set_attrib(presence, "to", chat_full_jid); 57 xmlnode_set_attrib(presence, "to", chat_full_jid);
58 jabber_send(chat->js, presence); 58 jabber_send(chat->js, presence);
59 g_free(chat_full_jid); 59 g_free(chat_full_jid);
60 } 60 }
61 61
62 void jabber_presence_fake_to_self(JabberStream *js, const PurpleStatus *gstatus) { 62 void jabber_presence_fake_to_self(JabberStream *js, PurpleStatus *status)
63 char *my_base_jid; 63 {
64 64 PurpleAccount *account;
65 if(!js->user) 65 const char *username;
66 return; 66
67 67 g_return_if_fail(js->user != NULL);
68 my_base_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); 68
69 if(purple_find_buddy(js->gc->account, my_base_jid)) { 69 account = purple_connection_get_account(js->gc);
70 JabberBuddy *jb; 70 username = purple_account_get_username(account);
71 if (status == NULL)
72 status = purple_account_get_active_status(account);
73
74 if (purple_find_buddy(account, username)) {
75 JabberBuddy *jb = jabber_buddy_find(js, username, TRUE);
71 JabberBuddyResource *jbr; 76 JabberBuddyResource *jbr;
72 if((jb = jabber_buddy_find(js, my_base_jid, TRUE))) { 77 JabberBuddyState state;
73 JabberBuddyState state; 78 char *msg;
74 char *msg; 79 int priority;
75 int priority; 80
76 81 g_return_if_fail(jb != NULL);
77 purple_status_to_jabber(gstatus, &state, &msg, &priority); 82
78 83 purple_status_to_jabber(status, &state, &msg, &priority);
79 if (state == JABBER_BUDDY_STATE_UNAVAILABLE || state == JABBER_BUDDY_STATE_UNKNOWN) { 84
80 jabber_buddy_remove_resource(jb, js->user->resource); 85 if (state == JABBER_BUDDY_STATE_UNAVAILABLE ||
81 } else { 86 state == JABBER_BUDDY_STATE_UNKNOWN) {
82 jabber_buddy_track_resource(jb, js->user->resource, priority, state, msg); 87 jabber_buddy_remove_resource(jb, js->user->resource);
83 } 88 } else {
84 if((jbr = jabber_buddy_find_resource(jb, NULL))) { 89 jabber_buddy_track_resource(jb, js->user->resource, priority,
85 purple_prpl_got_user_status(js->gc->account, my_base_jid, jabber_buddy_state_get_status_id(jbr->state), "priority", jbr->priority, jbr->status ? "message" : NULL, jbr->status, NULL); 90 state, msg);
86 } else { 91 }
87 purple_prpl_got_user_status(js->gc->account, my_base_jid, "offline", msg ? "message" : NULL, msg, NULL); 92
88 } 93 if ((jbr = jabber_buddy_find_resource(jb, NULL))) {
89 94 purple_prpl_got_user_status(js->gc->account, username, jabber_buddy_state_get_status_id(jbr->state), "priority", jbr->priority, jbr->status ? "message" : NULL, jbr->status, NULL);
90 g_free(msg); 95 } else {
91 } 96 purple_prpl_got_user_status(js->gc->account, username, "offline", msg ? "message" : NULL, msg, NULL);
92 } 97 }
93 g_free(my_base_jid); 98 g_free(msg);
99 }
94 } 100 }
95 101
96 void jabber_set_status(PurpleAccount *account, PurpleStatus *status) 102 void jabber_set_status(PurpleAccount *account, PurpleStatus *status)
97 { 103 {
98 PurpleConnection *gc; 104 PurpleConnection *gc;