Sun, 03 Nov 2024 00:05:44 -0500
remove purple3-url-handler.desktop.in.in
The application that did the launching was removed long ago. Also this should
be implemented by the user interfaces and they might provide separate files to
groups schemas as well.
Testing Done:
Called in the turtles.
Reviewed at https://reviews.imfreedom.org/r/3640/
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
1 | /* |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
2 | * Purple - Internet Messaging Library |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
3 | * Copyright (C) Pidgin Developers <devel@pidgin.im> |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
4 | * |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
5 | * This library is free software; you can redistribute it and/or |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
6 | * modify it under the terms of the GNU Lesser General Public |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
7 | * License as published by the Free Software Foundation; either |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
8 | * version 2 of the License, or (at your option) any later version. |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
9 | * |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
10 | * This library is distributed in the hope that it will be useful, |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
13 | * Lesser General Public License for more details. |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
14 | * |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
15 | * You should have received a copy of the GNU Lesser General Public |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
16 | * License along with this library; if not, see <https://www.gnu.org/licenses/>. |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
17 | */ |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
18 | |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
19 | #include <glib/gi18n-lib.h> |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
20 | |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
21 | #include "purpledemoprotocolconversation.h" |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
22 | |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
23 | #include "purpledemoplugin.h" |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
24 | #include "purpledemoprotocol.h" |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
25 | |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
26 | typedef struct { |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
27 | PurpleConversation *conversation; |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
28 | PurpleMessage *message; |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
29 | } PurpleDemoProtocolIMInfo; |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
30 | |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
31 | /****************************************************************************** |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
32 | * Helpers |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
33 | *****************************************************************************/ |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
34 | static void |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
35 | purple_demo_protocol_im_info_free(PurpleDemoProtocolIMInfo *info) { |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
36 | g_clear_object(&info->conversation); |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
37 | g_clear_object(&info->message); |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
38 | g_free(info); |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
39 | } |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
40 | |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
41 | static gint |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
42 | purple_demo_protocol_contact_sort(gconstpointer a, gconstpointer b, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
43 | G_GNUC_UNUSED gpointer data) |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
44 | { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
45 | return purple_contact_info_compare(PURPLE_CONTACT_INFO((gpointer)a), |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
46 | PURPLE_CONTACT_INFO((gpointer)b)); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
47 | } |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
48 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
49 | static char * |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
50 | purple_demo_protocol_generate_conversation_id(PurpleAccount *account, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
51 | PurpleCreateConversationDetails *details) |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
52 | { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
53 | GChecksum *checksum = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
54 | GListModel *participants = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
55 | GListStore *sorted = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
56 | char *ret = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
57 | const char *id = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
58 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
59 | /* Sort the participants. */ |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
60 | sorted = g_list_store_new(PURPLE_TYPE_CONTACT); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
61 | participants = purple_create_conversation_details_get_participants(details); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
62 | for(guint i = 0; i < g_list_model_get_n_items(participants); i++) { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
63 | PurpleContactInfo *info = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
64 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
65 | info = g_list_model_get_item(participants, i); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
66 | g_list_store_insert_sorted(sorted, info, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
67 | purple_demo_protocol_contact_sort, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
68 | NULL); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
69 | g_clear_object(&info); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
70 | } |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
71 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
72 | /* Build a checksum of the account and the sorted participants. */ |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
73 | checksum = g_checksum_new(G_CHECKSUM_SHA256); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
74 | |
|
42803
984f8dfabb47
Update the protocols to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents:
42738
diff
changeset
|
75 | id = purple_account_get_id(account); |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
76 | g_checksum_update(checksum, (guchar *)id, -1); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
77 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
78 | for(guint i = 0; i < g_list_model_get_n_items(G_LIST_MODEL(sorted)); i++) { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
79 | PurpleContactInfo *info = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
80 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
81 | info = g_list_model_get_item(G_LIST_MODEL(sorted), i); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
82 | id = purple_contact_info_get_id(info); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
83 | g_checksum_update(checksum, (guchar *)id, -1); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
84 | g_clear_object(&info); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
85 | } |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
86 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
87 | ret = g_strdup(g_checksum_get_string(checksum)); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
88 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
89 | g_clear_pointer(&checksum, g_checksum_free); |
|
42888
ed22ea598bec
Fix a couple of memory leaks in the demo plugin
Markus Fischer <ivanhoe@fiscari.de>
parents:
42826
diff
changeset
|
90 | g_clear_object(&sorted); |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
91 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
92 | return ret; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
93 | } |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
94 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
95 | /****************************************************************************** |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
96 | * Callbacks |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
97 | *****************************************************************************/ |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
98 | static gboolean |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
99 | purple_demo_protocol_echo_im_cb(gpointer data) { |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
100 | PurpleDemoProtocolIMInfo *info = data; |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
101 | |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
102 | purple_conversation_write_message(info->conversation, info->message); |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
103 | |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
104 | return G_SOURCE_REMOVE; |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
105 | } |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
106 | |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
107 | /****************************************************************************** |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
108 | * PurpleProtocolConversation Implementation |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
109 | *****************************************************************************/ |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
110 | static PurpleCreateConversationDetails * |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
111 | purple_demo_protocol_get_create_conversation_details(G_GNUC_UNUSED PurpleProtocolConversation *protocol, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
112 | G_GNUC_UNUSED PurpleAccount *account) |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
113 | { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
114 | return purple_create_conversation_details_new(9); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
115 | } |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
116 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
117 | static void |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
118 | purple_demo_protocol_create_conversation_async(PurpleProtocolConversation *protocol, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
119 | PurpleAccount *account, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
120 | PurpleCreateConversationDetails *details, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
121 | GCancellable *cancellable, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
122 | GAsyncReadyCallback callback, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
123 | gpointer data) |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
124 | { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
125 | PurpleConversation *conversation = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
126 | PurpleConversationManager *manager = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
127 | PurpleConversationType type = PURPLE_CONVERSATION_TYPE_UNSET; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
128 | GListModel *participants = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
129 | GTask *task = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
130 | char *id = NULL; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
131 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
132 | task = g_task_new(protocol, cancellable, callback, data); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
133 | g_task_set_source_tag(task, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
134 | purple_demo_protocol_create_conversation_async); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
135 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
136 | participants = purple_create_conversation_details_get_participants(details); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
137 | if(g_list_model_get_n_items(participants) == 1) { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
138 | type = PURPLE_CONVERSATION_TYPE_DM; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
139 | } else { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
140 | type = PURPLE_CONVERSATION_TYPE_GROUP_DM; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
141 | } |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
142 | id = purple_demo_protocol_generate_conversation_id(account, details); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
143 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
144 | conversation = g_object_new( |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
145 | PURPLE_TYPE_CONVERSATION, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
146 | "account", account, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
147 | "id", id, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
148 | "type", type, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
149 | NULL); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
150 | g_clear_pointer(&id, g_free); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
151 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
152 | for(guint i = 0; i < g_list_model_get_n_items(participants); i++) { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
153 | PurpleContactInfo *info = NULL; |
|
42892
ca6c19529734
Port the Demo protocol plugin to Purple.ConversationMembers
Gary Kramlich <grim@reaperworld.com>
parents:
42888
diff
changeset
|
154 | PurpleConversationMembers *members = NULL; |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
155 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
156 | info = g_list_model_get_item(participants, i); |
|
42892
ca6c19529734
Port the Demo protocol plugin to Purple.ConversationMembers
Gary Kramlich <grim@reaperworld.com>
parents:
42888
diff
changeset
|
157 | members = purple_conversation_get_members(conversation); |
|
ca6c19529734
Port the Demo protocol plugin to Purple.ConversationMembers
Gary Kramlich <grim@reaperworld.com>
parents:
42888
diff
changeset
|
158 | purple_conversation_members_add_member(members, info, FALSE, NULL); |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
159 | g_clear_object(&info); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
160 | } |
|
42888
ed22ea598bec
Fix a couple of memory leaks in the demo plugin
Markus Fischer <ivanhoe@fiscari.de>
parents:
42826
diff
changeset
|
161 | g_clear_object(&details); |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
162 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
163 | manager = purple_conversation_manager_get_default(); |
|
43030
97ed7473351f
Update the protocols for the ConversationManager deprecations
Gary Kramlich <grim@reaperworld.com>
parents:
42924
diff
changeset
|
164 | if(!purple_conversation_manager_add(manager, conversation)) { |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
165 | g_task_return_new_error(task, PURPLE_DEMO_DOMAIN, 0, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
166 | _("This conversation already exists.")); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
167 | g_clear_object(&task); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
168 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
169 | return; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
170 | } |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
171 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
172 | g_task_return_pointer(task, conversation, g_object_unref); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
173 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
174 | g_clear_object(&task); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
175 | } |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
176 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
177 | static PurpleConversation * |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
178 | purple_demo_protocol_create_conversation_finish(G_GNUC_UNUSED PurpleProtocolConversation *protocol, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
179 | GAsyncResult *result, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
180 | GError **error) |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
181 | { |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
182 | GTask *task = G_TASK(result); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
183 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
184 | g_return_val_if_fail(g_task_get_source_tag(task) == |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
185 | purple_demo_protocol_create_conversation_async, |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
186 | NULL); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
187 | |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
188 | return g_task_propagate_pointer(task, error); |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
189 | } |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
190 | |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
191 | static void |
|
42924
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
192 | purple_demo_protocol_conversation_leave_conversation_async(PurpleProtocolConversation *protocol, |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
193 | G_GNUC_UNUSED PurpleConversation *conversation, |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
194 | GCancellable *cancellable, |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
195 | GAsyncReadyCallback callback, |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
196 | gpointer data) |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
197 | { |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
198 | GTask *task = NULL; |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
199 | |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
200 | task = g_task_new(protocol, cancellable, callback, data); |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
201 | g_task_set_source_tag(task, |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
202 | purple_demo_protocol_conversation_leave_conversation_async); |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
203 | |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
204 | g_task_return_boolean(task, TRUE); |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
205 | g_clear_object(&task); |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
206 | } |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
207 | |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
208 | static gboolean |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
209 | purple_demo_protocol_conversation_leave_conversation_finish(G_GNUC_UNUSED PurpleProtocolConversation *protocol, |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
210 | GAsyncResult *result, |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
211 | GError **error) |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
212 | { |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
213 | gpointer tag = purple_demo_protocol_conversation_leave_conversation_async; |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
214 | |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
215 | g_return_val_if_fail(g_async_result_is_tagged(result, tag), FALSE); |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
216 | |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
217 | return g_task_propagate_boolean(G_TASK(result), error); |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
218 | } |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
219 | |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
220 | static void |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
221 | purple_demo_protocol_send_message_async(G_GNUC_UNUSED PurpleProtocolConversation *protocol, |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
222 | PurpleConversation *conversation, |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
223 | PurpleMessage *message, |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
224 | GCancellable *cancellable, |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
225 | GAsyncReadyCallback callback, |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
226 | gpointer data) |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
227 | { |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
228 | GTask *task = NULL; |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
229 | |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
230 | if(purple_conversation_is_dm(conversation)) { |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
231 | PurpleAccount *account = NULL; |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
232 | PurpleContact *contact = NULL; |
|
42906
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
233 | PurpleContactInfo *contact_info = NULL; |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
234 | PurpleContactManager *manager = NULL; |
|
42892
ca6c19529734
Port the Demo protocol plugin to Purple.ConversationMembers
Gary Kramlich <grim@reaperworld.com>
parents:
42888
diff
changeset
|
235 | PurpleConversationMembers *members = NULL; |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
236 | |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
237 | account = purple_conversation_get_account(conversation); |
|
42892
ca6c19529734
Port the Demo protocol plugin to Purple.ConversationMembers
Gary Kramlich <grim@reaperworld.com>
parents:
42888
diff
changeset
|
238 | members = purple_conversation_get_members(conversation); |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
239 | |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
240 | manager = purple_contact_manager_get_default(); |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
241 | |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
242 | /* Check if this dm is with echo. */ |
|
42906
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
243 | contact = purple_contact_manager_find_with_id(manager, account, |
|
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
244 | "echo"); |
|
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
245 | contact_info = PURPLE_CONTACT_INFO(contact); |
|
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
246 | if(purple_conversation_members_has_member(members, contact_info, NULL)) |
|
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
247 | { |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
248 | PurpleDemoProtocolIMInfo *info = NULL; |
|
42906
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
249 | const char *contents = purple_message_get_contents(message); |
|
42598
5e42cba3e8ad
Add an offline contact in the Demo protocol
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42323
diff
changeset
|
250 | |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
251 | info = g_new(PurpleDemoProtocolIMInfo, 1); |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
252 | info->conversation = g_object_ref(conversation); |
|
42906
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
253 | info->message = purple_message_new(contact_info, contents); |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
254 | |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
255 | g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
256 | purple_demo_protocol_echo_im_cb, info, |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
257 | (GDestroyNotify)purple_demo_protocol_im_info_free); |
|
42598
5e42cba3e8ad
Add an offline contact in the Demo protocol
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42323
diff
changeset
|
258 | } |
|
5e42cba3e8ad
Add an offline contact in the Demo protocol
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42323
diff
changeset
|
259 | |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
260 | /* Check if this dm is with aegina. */ |
|
42906
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
261 | contact = purple_contact_manager_find_with_id(manager, account, |
|
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
262 | "aegina"); |
|
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
263 | contact_info = PURPLE_CONTACT_INFO(contact); |
|
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
264 | if(purple_conversation_members_has_member(members, contact_info, NULL)) |
|
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
265 | { |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
266 | PurpleDemoProtocolIMInfo *info = g_new(PurpleDemoProtocolIMInfo, 1); |
|
42906
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
267 | PurpleContactInfo *author = purple_message_get_author(message); |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
268 | const char *contents = NULL; |
|
42906
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
269 | const char *author_id = NULL; |
|
42598
5e42cba3e8ad
Add an offline contact in the Demo protocol
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42323
diff
changeset
|
270 | |
|
42906
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
271 | author_id = purple_contact_info_get_id(author); |
|
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
272 | if(purple_strequal(author_id, "hades")) { |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
273 | contents = "🫥️"; |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
274 | } else { |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
275 | /* TRANSLATORS: This is a reference to the Cap of Invisibility owned by |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
276 | * various Greek gods, such as Hades, as mentioned. */ |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
277 | contents = _("Don't tell Hades I have his Cap"); |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
278 | } |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
279 | |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
280 | info->conversation = g_object_ref(conversation); |
|
42906
e0d5b79e7431
Fix some issues with Purple.Message in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42892
diff
changeset
|
281 | info->message = purple_message_new(contact_info, contents); |
|
42738
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
282 | |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
283 | g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, purple_demo_protocol_echo_im_cb, |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
284 | info, (GDestroyNotify)purple_demo_protocol_im_info_free); |
|
f755b10c05a3
Update the demo protocol plugin to not depend on conversation names
Gary Kramlich <grim@reaperworld.com>
parents:
42675
diff
changeset
|
285 | } |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
286 | } |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
287 | |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
288 | purple_conversation_write_message(conversation, message); |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
289 | |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
290 | task = g_task_new(protocol, cancellable, callback, data); |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
291 | g_task_return_boolean(task, TRUE); |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
292 | |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
293 | g_clear_object(&task); |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
294 | } |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
295 | |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
296 | static gboolean |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
297 | purple_demo_protocol_send_message_finish(G_GNUC_UNUSED PurpleProtocolConversation *protocol, |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
298 | GAsyncResult *result, |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
299 | GError **error) |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
300 | { |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
301 | g_return_val_if_fail(G_IS_TASK(result), FALSE); |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
302 | |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
303 | return g_task_propagate_boolean(G_TASK(result), error); |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
304 | } |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
305 | |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
306 | void |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
307 | purple_demo_protocol_conversation_init(PurpleProtocolConversationInterface *iface) { |
|
42675
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
308 | iface->get_create_conversation_details = |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
309 | purple_demo_protocol_get_create_conversation_details; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
310 | iface->create_conversation_async = |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
311 | purple_demo_protocol_create_conversation_async; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
312 | iface->create_conversation_finish = |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
313 | purple_demo_protocol_create_conversation_finish; |
|
69e078981440
Implement conversation create for the demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42652
diff
changeset
|
314 | |
|
42924
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
315 | iface->leave_conversation_async = |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
316 | purple_demo_protocol_conversation_leave_conversation_async; |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
317 | iface->leave_conversation_finish = |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
318 | purple_demo_protocol_conversation_leave_conversation_finish; |
|
8091ed36e8b0
Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
42906
diff
changeset
|
319 | |
|
42323
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
320 | iface->send_message_async = purple_demo_protocol_send_message_async; |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
321 | iface->send_message_finish = purple_demo_protocol_send_message_finish; |
|
119cc14f9c12
Port the Demo protocol plugin to PurpleProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
322 | } |