Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/EionRobb/skype4pidgin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEion Robb <eion@robbmob.com>2019-03-06 23:41:25 +0300
committerEion Robb <eion@robbmob.com>2019-03-06 23:41:25 +0300
commit14f1b69b6292bbdc98cca484b050ec8359394c4e (patch)
tree2697eb5d1f7ffc2bd8f058ab98cb22329eedefd5
parentd25047d94e0fb24db2a4433d51e9b63b124c5c23 (diff)
Purple3 compat
-rw-r--r--skypeweb/libskypeweb.c19
-rw-r--r--skypeweb/purplecompat.h17
-rw-r--r--skypeweb/skypeweb_contacts.c41
-rw-r--r--skypeweb/skypeweb_contacts.h20
-rw-r--r--skypeweb/skypeweb_messages.c6
5 files changed, 79 insertions, 24 deletions
diff --git a/skypeweb/libskypeweb.c b/skypeweb/libskypeweb.c
index bb43b96..43a3cbc 100644
--- a/skypeweb/libskypeweb.c
+++ b/skypeweb/libskypeweb.c
@@ -35,9 +35,9 @@ skypeweb_do_all_the_things(SkypeWebAccount *sa)
skypeweb_get_self_details(sa);
if (sa->authcheck_timeout)
- purple_timeout_remove(sa->authcheck_timeout);
+ g_source_remove(sa->authcheck_timeout);
skypeweb_check_authrequests(sa);
- sa->authcheck_timeout = purple_timeout_add_seconds(120, (GSourceFunc)skypeweb_check_authrequests, sa);
+ sa->authcheck_timeout = g_timeout_add_seconds(120, (GSourceFunc)skypeweb_check_authrequests, sa);
purple_connection_set_state(sa->pc, PURPLE_CONNECTION_CONNECTED);
skypeweb_get_friend_list(sa);
@@ -382,9 +382,9 @@ skypeweb_close(PurpleConnection *pc)
sa = purple_connection_get_protocol_data(pc);
g_return_if_fail(sa != NULL);
- purple_timeout_remove(sa->authcheck_timeout);
- purple_timeout_remove(sa->poll_timeout);
- purple_timeout_remove(sa->watchdog_timeout);
+ g_source_remove(sa->authcheck_timeout);
+ g_source_remove(sa->poll_timeout);
+ g_source_remove(sa->watchdog_timeout);
skypeweb_logout(sa);
@@ -891,17 +891,16 @@ skypeweb_protocol_privacy_iface_init(PurpleProtocolPrivacyIface *prpl_info)
}
static void
-skypeweb_protocol_xfer_iface_init(PurpleProtocolXferIface *prpl_info)
+skypeweb_protocol_xfer_iface_init(PurpleProtocolXferInterface *prpl_info)
{
#endif
- //PurpleProtocolXferIface
+ //PurpleProtocolXferInterface
prpl_info->new_xfer = skypeweb_new_xfer;
-#if !PURPLE_VERSION_CHECK(3, 0, 0)
prpl_info->send_file = skypeweb_send_file;
+#if !PURPLE_VERSION_CHECK(3, 0, 0)
prpl_info->can_receive_file = skypeweb_can_receive_file;
#else
- prpl_info->send = skypeweb_send_file;
prpl_info->can_receive = skypeweb_can_receive_file;
#endif
@@ -973,7 +972,7 @@ PURPLE_DEFINE_TYPE_EXTENDED(
PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_ROOMLIST_IFACE,
skypeweb_protocol_roomlist_iface_init)
- PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_XFER_IFACE,
+ PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_XFER,
skypeweb_protocol_xfer_iface_init)
);
diff --git a/skypeweb/purplecompat.h b/skypeweb/purplecompat.h
index d545685..c6afb9b 100644
--- a/skypeweb/purplecompat.h
+++ b/skypeweb/purplecompat.h
@@ -122,6 +122,18 @@ purple_message_new_outgoing(const gchar *who, const gchar *contents, PurpleMessa
return message;
}
static inline PurpleMessage *
+purple_message_new_incoming(const gchar *who, const gchar *contents, PurpleMessageFlags flags, guint64 timestamp)
+{
+ PurpleMessage *message = g_new0(PurpleMessage, 1);
+
+ message->who = g_strdup(who);
+ message->what = g_strdup(contents);
+ message->flags = flags | PURPLE_MESSAGE_RECV;
+ message->when = timestamp;
+
+ return message;
+}
+static inline PurpleMessage *
purple_message_new_system(const gchar *contents, PurpleMessageFlags flags)
{
PurpleMessage *message = g_new0(PurpleMessage, 1);
@@ -255,6 +267,11 @@ purple_xfer_read_file(PurpleXfer *xfer, guchar *buffer, gsize size) {
#define PURPLE_XFER_TYPE_RECEIVE PURPLE_XFER_RECEIVE
#define PURPLE_XFER_TYPE_SEND PURPLE_XFER_SEND
+// Kinda gross, since we can technically use the glib mainloop from purple2
+#define g_timeout_add_seconds purple_timeout_add_seconds
+#define g_timeout_add purple_timeout_add
+#define g_source_remove purple_timeout_remove
+
#endif
#endif /*_PURPLECOMPAT_H_*/
diff --git a/skypeweb/skypeweb_contacts.c b/skypeweb/skypeweb_contacts.c
index e6623e8..14cfdcb 100644
--- a/skypeweb/skypeweb_contacts.c
+++ b/skypeweb/skypeweb_contacts.c
@@ -36,7 +36,16 @@ static void purple_conversation_write_system_message_ts(
static void purple_conversation_write_img_message(
PurpleConversation *conv, const char* who, const gchar *msg,
PurpleMessageFlags flags, time_t ts) {
- purple_conversation_write(conv, who, msg, flags, ts);
+ PurpleMessage *pmsg;
+
+ if (flags & PURPLE_MESSAGE_SEND) {
+ pmsg = purple_message_new_outgoing(who, msg, flags);
+ purple_message_set_time(pmsg, ts);
+ } else {
+ pmsg = purple_message_new_incoming(who, msg, flags, ts);
+ }
+
+ purple_conversation_write_message(conv, pmsg);
}
// Check that the conversation hasn't been closed
@@ -126,7 +135,7 @@ skypeweb_get_icon(PurpleBuddy *buddy)
{
if (!buddy) return;
- purple_timeout_add(100, skypeweb_get_icon_queuepop, (gpointer)buddy);
+ g_timeout_add(100, skypeweb_get_icon_queuepop, (gpointer)buddy);
}
typedef struct SkypeImgMsgContext_ {
@@ -640,7 +649,7 @@ skypeweb_xfer_send_contents_reader(PurpleHttpConnection *con, gchar *buf, size_t
PurpleXfer *xfer = swft->xfer;
gsize read;
- purple_debug_info("skypeweb", "Asked %" PRI_SIZET " bytes from offset %" PRI_SIZET "\n", len, offset);
+ purple_debug_info("skypeweb", "Asked %" G_GSIZE_FORMAT " bytes from offset %" G_GSIZE_FORMAT "\n", len, offset);
purple_xfer_set_bytes_sent(xfer, offset);
read = purple_xfer_read_file(xfer, (guchar *)buf, len);
purple_debug_info("skypeweb", "Read %" G_GSIZE_FORMAT " bytes\n", read);
@@ -657,7 +666,7 @@ skypeweb_xfer_send_done(PurpleHttpConnection *conn, PurpleHttpResponse *resp, gp
int code = purple_http_response_get_code(resp);
purple_debug_info("skypeweb", "Finished [%d]: %s\n", code, error);
purple_debug_info("skypeweb", "Server message: %s\n", data);
- purple_timeout_add_seconds(1, poll_file_send_progress, user_data);
+ g_timeout_add_seconds(1, poll_file_send_progress, user_data);
}
static void
@@ -788,7 +797,11 @@ skypeweb_xfer_send_init(PurpleXfer *xfer)
}
PurpleXfer *
-skypeweb_new_xfer(PurpleConnection *pc, const char *who)
+skypeweb_new_xfer(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+PurpleProtocolXfer *prplxfer,
+#endif
+PurpleConnection *pc, const char *who)
{
SkypeWebAccount *sa = purple_connection_get_protocol_data(pc);
PurpleXfer *xfer;
@@ -812,9 +825,17 @@ skypeweb_new_xfer(PurpleConnection *pc, const char *who)
}
void
-skypeweb_send_file(PurpleConnection *pc, const gchar *who, const gchar *filename)
+skypeweb_send_file(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+PurpleProtocolXfer *prplxfer,
+#endif
+PurpleConnection *pc, const gchar *who, const gchar *filename)
{
- PurpleXfer *xfer = skypeweb_new_xfer(pc, who);
+ PurpleXfer *xfer = skypeweb_new_xfer(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+ prplxfer,
+#endif
+ pc, who);
if (filename && *filename)
purple_xfer_request_accepted(xfer, filename);
@@ -823,7 +844,11 @@ skypeweb_send_file(PurpleConnection *pc, const gchar *who, const gchar *filename
}
gboolean
-skypeweb_can_receive_file(PurpleConnection *pc, const gchar *who)
+skypeweb_can_receive_file(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+PurpleProtocolXfer *prplxfer,
+#endif
+PurpleConnection *pc, const gchar *who)
{
if (!who || g_str_equal(who, purple_account_get_username(purple_connection_get_account(pc))))
return FALSE;
diff --git a/skypeweb/skypeweb_contacts.h b/skypeweb/skypeweb_contacts.h
index 6d837a1..885f865 100644
--- a/skypeweb/skypeweb_contacts.h
+++ b/skypeweb/skypeweb_contacts.h
@@ -27,9 +27,23 @@ void skypeweb_download_video_message(SkypeWebAccount *sa, const gchar *sid, Purp
void skypeweb_download_moji_to_conv(SkypeWebAccount *sa, const gchar *text, const gchar *url_thumbnail, PurpleConversation *conv, time_t ts, const gchar* from);
void skypeweb_present_uri_as_filetransfer(SkypeWebAccount *sa, const gchar *uri, const gchar *from);
-PurpleXfer *skypeweb_new_xfer(PurpleConnection *pc, const char *who);
-void skypeweb_send_file(PurpleConnection *pc, const gchar *who, const gchar *filename);
-gboolean skypeweb_can_receive_file(PurpleConnection *pc, const gchar *who);
+PurpleXfer *skypeweb_new_xfer(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+PurpleProtocolXfer *prplxfer,
+#endif
+PurpleConnection *pc, const char *who);
+
+void skypeweb_send_file(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+PurpleProtocolXfer *prplxfer,
+#endif
+PurpleConnection *pc, const gchar *who, const gchar *filename);
+
+gboolean skypeweb_can_receive_file(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+PurpleProtocolXfer *prplxfer,
+#endif
+PurpleConnection *pc, const gchar *who);
void skypeweb_search_users(PurpleProtocolAction *action);
diff --git a/skypeweb/skypeweb_messages.c b/skypeweb/skypeweb_messages.c
index aa29c58..233a998 100644
--- a/skypeweb/skypeweb_messages.c
+++ b/skypeweb/skypeweb_messages.c
@@ -684,8 +684,8 @@ skypeweb_timeout(gpointer userdata)
skypeweb_poll(sa);
// If no response within 3 minutes, assume connection lost and try again
- purple_timeout_remove(sa->watchdog_timeout);
- sa->watchdog_timeout = purple_timeout_add_seconds(3 * 60, skypeweb_timeout, sa);
+ g_source_remove(sa->watchdog_timeout);
+ sa->watchdog_timeout = g_timeout_add_seconds(3 * 60, skypeweb_timeout, sa);
return FALSE;
}
@@ -758,7 +758,7 @@ skypeweb_poll_cb(SkypeWebAccount *sa, JsonNode *node, gpointer user_data)
}
if (!purple_connection_is_disconnecting(sa->pc)) {
- sa->poll_timeout = purple_timeout_add_seconds(1, skypeweb_timeout, sa);
+ sa->poll_timeout = g_timeout_add_seconds(1, skypeweb_timeout, sa);
}
}