libpurple/protocols/jabber/buddy.h

Fri, 30 Sep 2022 03:11:02 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Fri, 30 Sep 2022 03:11:02 -0500
changeset 41764
5d2bc2736da2
parent 41311
fe56d627c33a
child 41784
f864fee87775
permissions
-rw-r--r--

Remove PURPLE_NO_TZ_OFF

There is no `purple_str_to_time` any more, and Jabber can use a NULL pointer
instead for the same meaning.

Testing Done:
Compiled

Reviewed at https://reviews.imfreedom.org/r/1870/

7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
1 /**
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
2 * @file buddy.h Buddy handlers
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
5 *
28322
ac8fec1d2234 Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 28071
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
ac8fec1d2234 Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 28071
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
ac8fec1d2234 Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 28071
diff changeset
8 * source distribution.
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
9 *
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
13 * (at your option) any later version.
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
14 *
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
18 * GNU General Public License for more details.
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
19 *
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18235
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
23 */
39819
3554dac2991b Standardize all protocol header guard macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
24
3554dac2991b Standardize all protocol header guard macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
25 #ifndef PURPLE_JABBER_BUDDY_H
3554dac2991b Standardize all protocol header guard macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
26 #define PURPLE_JABBER_BUDDY_H
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
27
28071
a0706162fefd jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents: 27287
diff changeset
28 typedef struct _JabberBuddy JabberBuddy;
a0706162fefd jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents: 27287
diff changeset
29
40358
e6fe6fc1f516 move all protocols, purple plugins, and purple tests to use purple.h instead of including files individually
Gary Kramlich <grim@reaperworld.com>
parents: 40137
diff changeset
30 #include <purple.h>
39480
5e089a52b01b Move the ProtocolActionInterface to action.[ch]
Gary Kramlich <grim@reaperworld.com>
parents: 37134
diff changeset
31
17800
39a0f9ed0e26 Replaced a clean and simple API with a very weird hack due to vivid request on #pidgin by multiple devs. This avoids the change in PurplePluginProtocolInfo, but requires complicated change tracking in every prpl. The others prpl should add this change tracking, too (since otherwise the status gets changed even though nothing they care about changed), but that's not up to me.
Andreas Monitzer <am@adiumx.com>
parents: 17795
diff changeset
32 #include "jabber.h"
17816
1b7362b4a7a2 Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <am@adiumx.com>
parents: 17807
diff changeset
33 #include "caps.h"
29384
b7b6be8f77fd jabber: Move those functions to jutil.[ch]
Paul Aurich <darkrain42@pidgin.im>
parents: 29383
diff changeset
34 #include "jutil.h"
17800
39a0f9ed0e26 Replaced a clean and simple API with a very weird hack due to vivid request on #pidgin by multiple devs. This avoids the change in PurplePluginProtocolInfo, but requires complicated change tracking in every prpl. The others prpl should add this change tracking, too (since otherwise the status gets changed even though nothing they care about changed), but that's not up to me.
Andreas Monitzer <am@adiumx.com>
parents: 17795
diff changeset
35
28071
a0706162fefd jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents: 27287
diff changeset
36 struct _JabberBuddy {
29387
21ecdd98e791 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <darkrain42@pidgin.im>
parents: 29384
diff changeset
37 /**
21ecdd98e791 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <darkrain42@pidgin.im>
parents: 29384
diff changeset
38 * A sorted list of resources in priority descending order.
21ecdd98e791 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <darkrain42@pidgin.im>
parents: 29384
diff changeset
39 * This means that the first resource in the list is the
21ecdd98e791 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <darkrain42@pidgin.im>
parents: 29384
diff changeset
40 * "most available" (see resource_compare_cb in buddy.c for
21ecdd98e791 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <darkrain42@pidgin.im>
parents: 29384
diff changeset
41 * details). Don't play with this yourself, let
21ecdd98e791 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <darkrain42@pidgin.im>
parents: 29384
diff changeset
42 * jabber_buddy_track_resource and jabber_buddy_remove_resource do it.
21ecdd98e791 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <darkrain42@pidgin.im>
parents: 29384
diff changeset
43 */
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
44 GList *resources;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
45 char *error_msg;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
46 enum {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
47 JABBER_INVISIBLE_NONE = 0,
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
48 JABBER_INVISIBLE_SERVER = 1 << 1,
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
49 JABBER_INVIS_BUDDY = 1 << 2
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
50 } invisible;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
51 enum {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
52 JABBER_SUB_NONE = 0,
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
53 JABBER_SUB_PENDING = 1 << 1,
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
54 JABBER_SUB_TO = 1 << 2,
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
55 JABBER_SUB_FROM = 1 << 3,
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 7395
diff changeset
56 JABBER_SUB_BOTH = (JABBER_SUB_TO | JABBER_SUB_FROM),
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 7395
diff changeset
57 JABBER_SUB_REMOVE = 1 << 4
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
58 } subscription;
28071
a0706162fefd jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents: 27287
diff changeset
59 };
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
60
39556
622bf98df0ac Remove unnecessary struct tags.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39480
diff changeset
61 typedef struct {
7116
86c328e44c15 [gaim-migrate @ 7683]
Nathan Walp <nwalp@pidgin.im>
parents: 7014
diff changeset
62 JabberBuddy *jb;
86c328e44c15 [gaim-migrate @ 7683]
Nathan Walp <nwalp@pidgin.im>
parents: 7014
diff changeset
63 char *name;
86c328e44c15 [gaim-migrate @ 7683]
Nathan Walp <nwalp@pidgin.im>
parents: 7014
diff changeset
64 int priority;
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
65 JabberBuddyState state;
7116
86c328e44c15 [gaim-migrate @ 7683]
Nathan Walp <nwalp@pidgin.im>
parents: 7014
diff changeset
66 char *status;
24676
27ea4d447838 A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <malu@pidgin.im>
parents: 24251
diff changeset
67 time_t idle;
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8194
diff changeset
68 JabberCapabilities capabilities;
8400
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8312
diff changeset
69 char *thread_id;
13708
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
70 enum {
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
71 JABBER_CHAT_STATES_UNKNOWN,
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
72 JABBER_CHAT_STATES_UNSUPPORTED,
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
73 JABBER_CHAT_STATES_SUPPORTED
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
74 } chat_states;
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
75 struct {
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
76 char *version;
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
77 char *name;
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
78 char *os;
37d5bc24e5bf [gaim-migrate @ 16110]
Nathan Walp <nwalp@pidgin.im>
parents: 12683
diff changeset
79 } client;
41764
5d2bc2736da2 Remove PURPLE_NO_TZ_OFF
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41311
diff changeset
80 GTimeZone *tz_off;
24880
ae4e8598d0bf Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <darkrain42@pidgin.im>
parents: 24878
diff changeset
81 struct {
ae4e8598d0bf Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <darkrain42@pidgin.im>
parents: 24878
diff changeset
82 JabberCapsClientInfo *info;
ae4e8598d0bf Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <darkrain42@pidgin.im>
parents: 24878
diff changeset
83 GList *exts;
ae4e8598d0bf Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <darkrain42@pidgin.im>
parents: 24878
diff changeset
84 } caps;
17816
1b7362b4a7a2 Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <am@adiumx.com>
parents: 17807
diff changeset
85 GList *commands;
27073
09bf5e6921e4 Only try to fetch adhoc commands from buddies once. Pushed updates (which we support now) are far superior.
Paul Aurich <darkrain42@pidgin.im>
parents: 26958
diff changeset
86 gboolean commands_fetched;
7116
86c328e44c15 [gaim-migrate @ 7683]
Nathan Walp <nwalp@pidgin.im>
parents: 7014
diff changeset
87 } JabberBuddyResource;
86c328e44c15 [gaim-migrate @ 7683]
Nathan Walp <nwalp@pidgin.im>
parents: 7014
diff changeset
88
86c328e44c15 [gaim-migrate @ 7683]
Nathan Walp <nwalp@pidgin.im>
parents: 7014
diff changeset
89 void jabber_buddy_free(JabberBuddy *jb);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
90 JabberBuddy *jabber_buddy_find(JabberStream *js, const char *name,
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
91 gboolean create);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
92 JabberBuddyResource *jabber_buddy_find_resource(JabberBuddy *jb,
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
93 const char *resource);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
94 JabberBuddyResource *jabber_buddy_track_resource(JabberBuddy *jb, const char *resource,
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
95 int priority, JabberBuddyState state, const char *status);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
96 void jabber_buddy_remove_resource(JabberBuddy *jb, const char *resource);
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
97 void jabber_buddy_get_info(PurpleProtocolServer *protocol_server, PurpleConnection *gc, const char *who);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
98
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40358
diff changeset
99 GList *jabber_blist_node_menu(PurpleProtocolClient *client, PurpleBlistNode *node);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
100
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
101 void jabber_set_info(PurpleProtocolServer *protocol_server, PurpleConnection *gc, const char *info);
36496
e7fe371c60a6 Refactored jabber to use the new API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
102 void jabber_setup_set_info(PurpleProtocolAction *action);
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
103 void jabber_set_buddy_icon(PurpleProtocolServer *protocol_server, PurpleConnection *gc, PurpleImage *img);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents:
diff changeset
104
17807
d98844d33c37 Exposed the user search function, so that directory searches can be performed directly when the jid is known.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
105 void jabber_user_search(JabberStream *js, const char *directory);
36496
e7fe371c60a6 Refactored jabber to use the new API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
106 void jabber_user_search_begin(PurpleProtocolAction *);
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 10189
diff changeset
107
15363
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 14254
diff changeset
108 void jabber_buddy_remove_all_pending_buddy_info_requests(JabberStream *js);
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 14254
diff changeset
109
18235
60a9bd99f035 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 16538
diff changeset
110 void jabber_vcard_fetch_mine(JabberStream *js);
60a9bd99f035 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 16538
diff changeset
111
28879
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28322
diff changeset
112 gboolean jabber_resource_know_capabilities(const JabberBuddyResource *jbr);
23626
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 19897
diff changeset
113 gboolean jabber_resource_has_capability(const JabberBuddyResource *jbr,
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 19897
diff changeset
114 const gchar *cap);
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 19897
diff changeset
115 gboolean jabber_buddy_has_capability(const JabberBuddy *jb, const gchar *cap);
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 19897
diff changeset
116
25577
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 24251
diff changeset
117 const gchar *
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 24251
diff changeset
118 jabber_resource_get_identity_category_type(const JabberBuddyResource *jbr,
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 24251
diff changeset
119 const gchar *category);
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 24251
diff changeset
120
39819
3554dac2991b Standardize all protocol header guard macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
121 #endif /* PURPLE_JABBER_BUDDY_H */

mercurial