diff options
author | jgeboski <jgeboski@gmail.com> | 2015-01-15 19:19:28 -0500 |
---|---|---|
committer | jgeboski <jgeboski@gmail.com> | 2015-01-15 21:23:44 -0500 |
commit | a2cdeab81cb287063f8ed4be01263c284d4d94d6 (patch) | |
tree | 2832b457b54b0230fc5b66f7ea7edc81872b160d /facebook/facebook.c | |
parent | 68c46dd797ad24642b69d7dd8914a521cd20e87f (diff) | |
download | bitlbee-facebook-a2cdeab81cb287063f8ed4be01263c284d4d94d6.tar.gz bitlbee-facebook-a2cdeab81cb287063f8ed4be01263c284d4d94d6.tar.bz2 bitlbee-facebook-a2cdeab81cb287063f8ed4be01263c284d4d94d6.tar.xz |
Implemented typing notifications
Diffstat (limited to 'facebook/facebook.c')
-rw-r--r-- | facebook/facebook.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/facebook/facebook.c b/facebook/facebook.c index 4622ff3..6ab46a3 100644 --- a/facebook/facebook.c +++ b/facebook/facebook.c @@ -139,6 +139,23 @@ static void fb_cb_api_presence(fb_api_t *api, const GSList *press, } /** + * Implemented #fb_api_funcs->typing(). + * + * @param api The #fb_api. + * @param typg The #fb_api_typing. + * @param data The user defined data, which is #fb_data. + **/ +static void fb_cb_api_typing(fb_api_t *api, fb_api_typing_t *typg, + gpointer data) +{ + fb_data_t *fata = data; + guint32 flags; + + flags = typg->state ? OPT_TYPING : 0; + imcb_buddy_typing(fata->ic, typg->uid, flags); +} + +/** * Creates a new #fb_data with an #account. The returned #fb_data * should be freed with #fb_data_free() when no longer needed. * @@ -156,7 +173,8 @@ fb_data_t *fb_data_new(account_t *acc) .connect = fb_cb_api_connect, .contacts = fb_cb_api_contacts, .message = fb_cb_api_message, - .presence = fb_cb_api_presence + .presence = fb_cb_api_presence, + .typing = fb_cb_api_typing }; g_return_val_if_fail(acc != NULL, NULL); @@ -290,6 +308,11 @@ static int fb_buddy_msg(struct im_connection *ic, char *to, char *message, **/ static int fb_send_typing(struct im_connection *ic, char *who, int flags) { + fb_data_t *fata = ic->proto_data; + gboolean state; + + state = (flags & OPT_TYPING) != 0; + fb_api_typing(fata->api, who, state); return 0; } |