aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/twitter/twitter_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/twitter/twitter_lib.c')
-rw-r--r--protocols/twitter/twitter_lib.c35
1 files changed, 30 insertions, 5 deletions
diff --git a/protocols/twitter/twitter_lib.c b/protocols/twitter/twitter_lib.c
index 081612ac..04e8ef95 100644
--- a/protocols/twitter/twitter_lib.c
+++ b/protocols/twitter/twitter_lib.c
@@ -104,12 +104,14 @@ static void twitter_add_buddy(struct im_connection *ic, char *name, const char *
// Check if the buddy is allready in the buddy list.
if (!imcb_find_buddy( ic, name ))
{
+ char *mode = set_getstr(&ic->acc->set, "mode");
+
// The buddy is not in the list, add the buddy and set the status to logged in.
imcb_add_buddy( ic, name, NULL );
imcb_rename_buddy( ic, name, fullname );
- if (set_getbool( &ic->acc->set, "use_groupchat" ))
+ if (g_strcasecmp(mode, "chat") == 0)
imcb_chat_add_buddy( td->home_timeline_gc, name );
- else
+ else if (g_strcasecmp(mode, "many") == 0)
imcb_buddy_status( ic, name, OPT_LOGGED_IN, NULL, NULL );
}
}
@@ -451,14 +453,37 @@ static void twitter_private_message_chat(struct im_connection *ic, GSList *list)
struct twitter_data *td = ic->proto_data;
GSList *l = NULL;
struct twitter_xml_status *status;
+ char from[MAX_STRING];
+ gboolean mode_one;
+
+ mode_one = g_strcasecmp( set_getstr( &ic->acc->set, "mode" ), "one" ) == 0;
+ if( mode_one )
+ {
+ g_snprintf( from, sizeof( from ) - 1, "twitter_%s", ic->acc->user );
+ from[MAX_STRING-1] = '\0';
+ }
+
for ( l = list; l ; l = g_slist_next(l) )
{
+ char *text = NULL;
+
status = l->data;
- imcb_buddy_msg( ic, status->user->screen_name, status->text, 0, status->created_at );
+
+ if( mode_one )
+ text = g_strdup_printf( "\002<\002%s\002>\002 %s",
+ status->user->screen_name, status->text );
+
+ imcb_buddy_msg( ic,
+ mode_one ? from : status->user->screen_name,
+ mode_one ? text : status->text,
+ 0, status->created_at );
+
// Update the home_timeline_id to hold the highest id, so that by the next request
// we won't pick up the updates allready in the list.
td->home_timeline_id = td->home_timeline_id < status->id ? status->id : td->home_timeline_id;
+
+ g_free( text );
}
}
@@ -511,7 +536,7 @@ static void twitter_http_get_home_timeline(struct http_request *req)
xt_free( parser );
// See if the user wants to see the messages in a groupchat window or as private messages.
- if (set_getbool( &ic->acc->set, "use_groupchat" ))
+ if (g_strcasecmp(set_getstr(&ic->acc->set, "mode"), "chat") == 0)
twitter_groupchat(ic, txl->list);
else
twitter_private_message_chat(ic, txl->list);
@@ -611,7 +636,7 @@ static void twitter_http_post_status(struct http_request *req)
// Check if the HTTP request went well.
if (req->status_code != 200) {
// It didn't go well, output the error and return.
- imcb_error(ic, "Could not post tweet... HTTP STATUS: %d", req->status_code);
+ imcb_error(ic, "Could not post message... HTTP STATUS: %d", req->status_code);
return;
}
}