Thu, 24 Apr 2025 22:19:39 -0500
IRCv3: check if a member is in a conversation before adding them
Awhile ago we update the NAMREPLY handler to build a separate
Purple.ConversationMembers and then splice that onto the existing one to help
with sorting and other performance issues. However, we didn't check if the
users already existed in the existing list, so we would get duplicates. This
address that.
Also fixed a reference leak.
Testing Done:
Joined a channel and sent `/quote names #channel` multiple times and verified that the member list did not grow to include a bunch of duplicates.
Reviewed at https://reviews.imfreedom.org/r/3987/
|
41783
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
1 | /* |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
2 | * Purple - Internet Messaging Library |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
3 | * Copyright (C) Pidgin Developers <devel@pidgin.im> |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
4 | * |
|
42568
31e8c7c92e2f
Make sure all of the license headers for IRCv3 are GPLv2
Gary Kramlich <grim@reaperworld.com>
parents:
42543
diff
changeset
|
5 | * Purple is the legal property of its developers, whose names are too numerous |
|
31e8c7c92e2f
Make sure all of the license headers for IRCv3 are GPLv2
Gary Kramlich <grim@reaperworld.com>
parents:
42543
diff
changeset
|
6 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
31e8c7c92e2f
Make sure all of the license headers for IRCv3 are GPLv2
Gary Kramlich <grim@reaperworld.com>
parents:
42543
diff
changeset
|
7 | * source distribution. |
|
31e8c7c92e2f
Make sure all of the license headers for IRCv3 are GPLv2
Gary Kramlich <grim@reaperworld.com>
parents:
42543
diff
changeset
|
8 | * |
|
31e8c7c92e2f
Make sure all of the license headers for IRCv3 are GPLv2
Gary Kramlich <grim@reaperworld.com>
parents:
42543
diff
changeset
|
9 | * This library is free software; you can redistribute it and/or modify |
|
41783
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
10 | * it under the terms of the GNU General Public License as published by |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
11 | * the Free Software Foundation; either version 2 of the License, or |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
12 | * (at your option) any later version. |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
13 | * |
|
42568
31e8c7c92e2f
Make sure all of the license headers for IRCv3 are GPLv2
Gary Kramlich <grim@reaperworld.com>
parents:
42543
diff
changeset
|
14 | * This library is distributed in the hope that it will be useful, |
|
41783
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
17 | * GNU General Public License for more details. |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
18 | * |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
19 | * You should have received a copy of the GNU General Public License |
|
42568
31e8c7c92e2f
Make sure all of the license headers for IRCv3 are GPLv2
Gary Kramlich <grim@reaperworld.com>
parents:
42543
diff
changeset
|
20 | * along with this library; if not, see <https://www.gnu.org/licenses/>. |
|
41783
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
21 | */ |
|
42568
31e8c7c92e2f
Make sure all of the license headers for IRCv3 are GPLv2
Gary Kramlich <grim@reaperworld.com>
parents:
42543
diff
changeset
|
22 | |
|
42229
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
23 | #if !defined(PURPLE_IRCV3_GLOBAL_HEADER_INSIDE) && \ |
|
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
24 | !defined(PURPLE_IRCV3_COMPILATION) |
|
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
25 | # error "only <libpurple/protocols/ircv3.h> may be included directly" |
|
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
26 | #endif |
|
41783
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
27 | |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
28 | #ifndef PURPLE_IRCV3_CONNECTION_H |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
29 | #define PURPLE_IRCV3_CONNECTION_H |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
30 | |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
31 | #include <glib.h> |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
32 | #include <glib-object.h> |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
33 | |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
34 | #include <gplugin.h> |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
35 | #include <gplugin-native.h> |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
36 | |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
37 | #include <purple.h> |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
38 | |
|
42769
c488d7af2923
Move the IRCv3 protocol plugin to our new Ibis library
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
39 | #include <ibis.h> |
|
c488d7af2923
Move the IRCv3 protocol plugin to our new Ibis library
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
40 | |
|
42472
409148c5c5b7
Add symbol visibility on IRCv3 protocol plugin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42333
diff
changeset
|
41 | #include "purpleircv3version.h" |
|
409148c5c5b7
Add symbol visibility on IRCv3 protocol plugin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42333
diff
changeset
|
42 | |
|
41783
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
43 | G_BEGIN_DECLS |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
44 | |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
45 | #define PURPLE_IRCV3_TYPE_CONNECTION (purple_ircv3_connection_get_type()) |
|
42474
a9285192c3d3
IRCv3: fix introspection
Gary Kramlich <grim@reaperworld.com>
parents:
42472
diff
changeset
|
46 | |
|
a9285192c3d3
IRCv3: fix introspection
Gary Kramlich <grim@reaperworld.com>
parents:
42472
diff
changeset
|
47 | PURPLE_IRCV3_AVAILABLE_IN_ALL |
|
42879
dc1e61fb9f00
Make PurpleIRCv3.Protocol and PurpleIRCv3.Connection Final
Gary Kramlich <grim@reaperworld.com>
parents:
42815
diff
changeset
|
48 | G_DECLARE_FINAL_TYPE(PurpleIRCv3Connection, purple_ircv3_connection, |
|
dc1e61fb9f00
Make PurpleIRCv3.Protocol and PurpleIRCv3.Connection Final
Gary Kramlich <grim@reaperworld.com>
parents:
42815
diff
changeset
|
49 | PURPLE_IRCV3, CONNECTION, PurpleConnection) |
|
42030
7af8ab97086d
Make PurpleIRCv3Connection Derivable
Gary Kramlich <grim@reaperworld.com>
parents:
42023
diff
changeset
|
50 | |
|
42229
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
51 | /** |
|
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
52 | * purple_ircv3_connection_register: (skip) |
|
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
53 | * @plugin: The GTypeModule |
|
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
54 | * |
|
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
55 | * Registers the dynamic type using @plugin. |
|
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
56 | * |
|
42619
3dd7cd0eabf1
Remove the micro version from Since tags in IRCv3 prpl
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42568
diff
changeset
|
57 | * Since: 3.0 |
|
42229
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
58 | */ |
|
41783
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
59 | G_GNUC_INTERNAL void purple_ircv3_connection_register(GPluginNativePlugin *plugin); |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
60 | |
|
42229
605f8cba9704
Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents:
42220
diff
changeset
|
61 | /** |
|
42769
c488d7af2923
Move the IRCv3 protocol plugin to our new Ibis library
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
62 | * purple_ircv3_connection_get_client: |
|
42530
55b30ce86f17
IRCv3: Implement basic CTCP support
Gary Kramlich <grim@reaperworld.com>
parents:
42513
diff
changeset
|
63 | * @connection: The instance. |
|
55b30ce86f17
IRCv3: Implement basic CTCP support
Gary Kramlich <grim@reaperworld.com>
parents:
42513
diff
changeset
|
64 | * |
|
42769
c488d7af2923
Move the IRCv3 protocol plugin to our new Ibis library
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
65 | * Gets the [class@Ibis.Client] from @connection. |
|
42543
6dcf672547fe
IRCv3: Update the signals so that handlers can inhibit the message from being displayed
Gary Kramlich <grim@reaperworld.com>
parents:
42542
diff
changeset
|
66 | * |
|
42769
c488d7af2923
Move the IRCv3 protocol plugin to our new Ibis library
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
67 | * Returns: (transfer none): The client instance if connected, otherwise %NULL. |
|
42530
55b30ce86f17
IRCv3: Implement basic CTCP support
Gary Kramlich <grim@reaperworld.com>
parents:
42513
diff
changeset
|
68 | * |
|
42619
3dd7cd0eabf1
Remove the micro version from Since tags in IRCv3 prpl
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42568
diff
changeset
|
69 | * Since: 3.0 |
|
42530
55b30ce86f17
IRCv3: Implement basic CTCP support
Gary Kramlich <grim@reaperworld.com>
parents:
42513
diff
changeset
|
70 | */ |
|
43084
80bdedb243d7
Fix some ircv3 function prototypes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
43069
diff
changeset
|
71 | PURPLE_IRCV3_AVAILABLE_IN_ALL |
|
42769
c488d7af2923
Move the IRCv3 protocol plugin to our new Ibis library
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
72 | IbisClient *purple_ircv3_connection_get_client(PurpleIRCv3Connection *connection); |
|
42530
55b30ce86f17
IRCv3: Implement basic CTCP support
Gary Kramlich <grim@reaperworld.com>
parents:
42513
diff
changeset
|
73 | |
|
55b30ce86f17
IRCv3: Implement basic CTCP support
Gary Kramlich <grim@reaperworld.com>
parents:
42513
diff
changeset
|
74 | /** |
|
42275
7568bf87e388
Add a basic status window to the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42229
diff
changeset
|
75 | * purple_ircv3_connection_add_status_message: |
|
7568bf87e388
Add a basic status window to the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42229
diff
changeset
|
76 | * @connection: The instance. |
|
42333
a34601ac633c
Add PurpleIRCv3Message represent messages rather than multiple variables
Gary Kramlich <grim@reaperworld.com>
parents:
42275
diff
changeset
|
77 | * @message: The message. |
|
42275
7568bf87e388
Add a basic status window to the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42229
diff
changeset
|
78 | * |
|
7568bf87e388
Add a basic status window to the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42229
diff
changeset
|
79 | * Adds a message to the status conversation/window for @connection. |
|
7568bf87e388
Add a basic status window to the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42229
diff
changeset
|
80 | * |
|
42619
3dd7cd0eabf1
Remove the micro version from Since tags in IRCv3 prpl
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42568
diff
changeset
|
81 | * Since: 3.0 |
|
42275
7568bf87e388
Add a basic status window to the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42229
diff
changeset
|
82 | */ |
|
42472
409148c5c5b7
Add symbol visibility on IRCv3 protocol plugin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42333
diff
changeset
|
83 | PURPLE_IRCV3_AVAILABLE_IN_ALL |
|
42769
c488d7af2923
Move the IRCv3 protocol plugin to our new Ibis library
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
84 | void purple_ircv3_connection_add_status_message(PurpleIRCv3Connection *connection, IbisMessage *message); |
|
42275
7568bf87e388
Add a basic status window to the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42229
diff
changeset
|
85 | |
|
42494
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
86 | /** |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
87 | * purple_ircv3_connection_find_or_create_conversation: |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
88 | * @connection: The instance. |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
89 | * @id: The id of the conversation. |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
90 | * |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
91 | * Looks for an existing conversation belonging to @connection and returns it |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
92 | * if found. If not found a new conversation will be created. |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
93 | * |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
94 | * This will only ever return %NULL if @connection is invalid or @id is %NULL. |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
95 | * |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
96 | * Note that ownership of the conversation remains with the default |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
97 | * [class@Purple.ConversationManager]. |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
98 | * |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
99 | * Returns: (transfer none) (nullable): The conversation. |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
100 | * |
|
42619
3dd7cd0eabf1
Remove the micro version from Since tags in IRCv3 prpl
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42568
diff
changeset
|
101 | * Since: 3.0 |
|
42494
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
102 | */ |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
103 | PURPLE_IRCV3_AVAILABLE_IN_ALL |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
104 | PurpleConversation *purple_ircv3_connection_find_or_create_conversation(PurpleIRCv3Connection *connection, const char *id); |
|
4d6baa511e52
IRCv3: create some helper functions for finding/creating conversations
Gary Kramlich <grim@reaperworld.com>
parents:
42474
diff
changeset
|
105 | |
|
42513
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
106 | /** |
|
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
107 | * purple_ircv3_connection_find_or_create_contact: |
|
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
108 | * @connection: The instance. |
|
42815
95bb2ae83de7
IRCv3: Use Ibis.Message in PurpleIRCv3.Connection.find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42769
diff
changeset
|
109 | * @message: The message to get the contact for. |
|
42513
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
110 | * |
|
42815
95bb2ae83de7
IRCv3: Use Ibis.Message in PurpleIRCv3.Connection.find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42769
diff
changeset
|
111 | * Looks for an existing contact from @message belonging to @connection and |
|
95bb2ae83de7
IRCv3: Use Ibis.Message in PurpleIRCv3.Connection.find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42769
diff
changeset
|
112 | * returns it if found. If not a new contact will be created. |
|
42513
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
113 | * |
|
42815
95bb2ae83de7
IRCv3: Use Ibis.Message in PurpleIRCv3.Connection.find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42769
diff
changeset
|
114 | * This will only ever return %NULL if @connection is invalid or @message is |
|
42513
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
115 | * %NULL. |
|
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
116 | * |
|
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
117 | * Note that the ownership of the contact remains with the default |
|
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
118 | * [class@Purple.ContactManager]. |
|
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
119 | * |
|
43067
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
120 | * Returns: (transfer none): The contact. |
|
42513
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
121 | * |
|
42619
3dd7cd0eabf1
Remove the micro version from Since tags in IRCv3 prpl
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42568
diff
changeset
|
122 | * Since: 3.0 |
|
42513
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
123 | */ |
|
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
124 | PURPLE_IRCV3_AVAILABLE_IN_ALL |
|
42815
95bb2ae83de7
IRCv3: Use Ibis.Message in PurpleIRCv3.Connection.find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42769
diff
changeset
|
125 | PurpleContact *purple_ircv3_connection_find_or_create_contact(PurpleIRCv3Connection *connection, IbisMessage *message); |
|
42513
482ba61e5123
IRCv3: Add an ircv3_connection_find_or_create_contact
Gary Kramlich <grim@reaperworld.com>
parents:
42494
diff
changeset
|
126 | |
|
42926
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
127 | /** |
|
43067
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
128 | * purple_ircv3_connection_find_or_create_contact_from_nick: |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
129 | * @connection: The instance. |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
130 | * @nick: The nick to find or create a contact for. |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
131 | * |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
132 | * Finds an existing contact or creates one for @nick. |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
133 | * |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
134 | * Returns: (transfer none): The contact. |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
135 | * |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
136 | * Since: 3.0 |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
137 | */ |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
138 | PURPLE_IRCV3_AVAILABLE_IN_ALL |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
139 | PurpleContact *purple_ircv3_connection_find_or_create_contact_from_nick(PurpleIRCv3Connection *connection, const char *nick); |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
140 | |
|
7e8b86e7dc43
IRCv3: Implement the KICK command
Gary Kramlich <grim@reaperworld.com>
parents:
42926
diff
changeset
|
141 | /** |
|
42926
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
142 | * purple_ircv3_connection_get_status_conversation: (skip) |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
143 | * @connection: The instance. |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
144 | * |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
145 | * Gets the status conversation from @connection. |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
146 | * |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
147 | * Returns: (transfer none): The status conversation. |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
148 | * |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
149 | * Since: 3.0 |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
150 | */ |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
151 | G_GNUC_INTERNAL |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
152 | PurpleConversation *purple_ircv3_connection_get_status_conversation(PurpleIRCv3Connection *connection); |
|
c63faf01193e
Display CTCP requests in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
42896
diff
changeset
|
153 | |
|
43069
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
154 | /** |
|
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
155 | * purple_ircv3_connection_write_status_message: (skip) |
|
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
156 | * @connection: The instance. |
|
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
157 | * @ibis_message: The message to write. |
|
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
158 | * @show_command: Whether or not to display the command. |
|
43195
10a8a087d356
IRCv3: mark ping and pong messages as events
Gary Kramlich <grim@reaperworld.com>
parents:
43084
diff
changeset
|
159 | * @event: whether the message is an event |
|
43069
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
160 | * |
|
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
161 | * Writes @ibis_message to the status window of @connection. |
|
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
162 | * |
|
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
163 | * Since: 3.0 |
|
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
164 | */ |
|
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
165 | G_GNUC_INTERNAL |
|
43195
10a8a087d356
IRCv3: mark ping and pong messages as events
Gary Kramlich <grim@reaperworld.com>
parents:
43084
diff
changeset
|
166 | void purple_ircv3_connection_write_status_message(PurpleIRCv3Connection *connection, IbisMessage *ibis_message, gboolean show_command, gboolean event); |
|
43069
cc8ba79c350e
IRCv3: Display the contents of ERROR messages in the status window
Gary Kramlich <grim@reaperworld.com>
parents:
43067
diff
changeset
|
167 | |
|
41783
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
168 | G_END_DECLS |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
169 | |
|
5ea6c18ef7a8
Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
170 | #endif /* PURPLE_IRCV3_CONNECTION_H */ |