diff options
Diffstat (limited to 'protocols/bee_user.c')
| -rw-r--r-- | protocols/bee_user.c | 95 | 
1 files changed, 13 insertions, 82 deletions
| diff --git a/protocols/bee_user.c b/protocols/bee_user.c index cbcebe33..675d37c5 100644 --- a/protocols/bee_user.c +++ b/protocols/bee_user.c @@ -115,11 +115,11 @@ void imcb_buddy_status( struct im_connection *ic, const char *handle, int flags,  		}  		else  		{ -			if( set_getbool( &ic->bee->set, "debug" ) || g_strcasecmp( set_getstr( &ic->bee->set, "handle_unknown" ), "ignore" ) != 0 ) +			if( g_strcasecmp( set_getstr( &ic->bee->set, "handle_unknown" ), "ignore" ) != 0 )  			{ -				imcb_log( ic, "imcb_buddy_status() for unknown handle %s:", handle ); -				imcb_log( ic, "flags = %d, state = %s, message = %s", flags, -				          state ? state : "NULL", message ? message : "NULL" ); +				imcb_log( ic, "imcb_buddy_status() for unknown handle %s:\n" +				              "flags = %d, state = %s, message = %s", handle, flags, +				              state ? state : "NULL", message ? message : "NULL" );  			}  			return; @@ -141,54 +141,6 @@ void imcb_buddy_status( struct im_connection *ic, const char *handle, int flags,  	g_free( old->status );  	g_free( old );  #if 0	 -	oa = u->away != NULL; -	oo = u->online; -	 -	g_free( u->away ); -	g_free( u->status_msg ); -	u->away = u->status_msg = NULL; -	 -	if( ( flags & OPT_LOGGED_IN ) && !u->online ) -	{ -		irc_spawn( ic->irc, u ); -		u->online = 1; -	} -	else if( !( flags & OPT_LOGGED_IN ) && u->online ) -	{ -		struct groupchat *c; -		 -		irc_kill( ic->irc, u ); -		u->online = 0; -		 -		/* Remove him/her from the groupchats to prevent PART messages after he/she QUIT already */ -		for( c = ic->groupchats; c; c = c->next ) -			remove_chat_buddy_silent( c, handle ); -	} -	 -	if( flags & OPT_AWAY ) -	{ -		if( state && message ) -		{ -			u->away = g_strdup_printf( "%s (%s)", state, message ); -		} -		else if( state ) -		{ -			u->away = g_strdup( state ); -		} -		else if( message ) -		{ -			u->away = g_strdup( message ); -		} -		else -		{ -			u->away = g_strdup( "Away" ); -		} -	} -	else -	{ -		u->status_msg = g_strdup( message ); -	} -	  	/* LISPy... */  	if( ( set_getbool( &ic->bee->set, "away_devoice" ) ) &&		/* Don't do a thing when user doesn't want it */  	    ( u->online ) &&						/* Don't touch offline people */ @@ -215,53 +167,32 @@ void imcb_buddy_status( struct im_connection *ic, const char *handle, int flags,  void imcb_buddy_msg( struct im_connection *ic, const char *handle, char *msg, uint32_t flags, time_t sent_at )  { -#if 0  	bee_t *bee = ic->bee;  	char *wrapped; -	user_t *u; +	bee_user_t *bu; -	u = user_findhandle( ic, handle ); +	bu = bee_user_by_handle( bee, ic, handle ); -	if( !u ) +	if( !bu )  	{  		char *h = set_getstr( &bee->set, "handle_unknown" );  		if( g_strcasecmp( h, "ignore" ) == 0 )  		{ -			if( set_getbool( &bee->set, "debug" ) ) -				imcb_log( ic, "Ignoring message from unknown handle %s", handle ); -			  			return;  		}  		else if( g_strncasecmp( h, "add", 3 ) == 0 )  		{ -			int private = set_getbool( &bee->set, "private" ); -			 -			if( h[3] ) -			{ -				if( g_strcasecmp( h + 3, "_private" ) == 0 ) -					private = 1; -				else if( g_strcasecmp( h + 3, "_channel" ) == 0 ) -					private = 0; -			} -			 -			imcb_add_buddy( ic, handle, NULL ); -			u = user_findhandle( ic, handle ); -			u->is_private = private; -		} -		else -		{ -			imcb_log( ic, "Message from unknown handle %s:", handle ); -			u = user_find( irc, irc->mynick ); +			bu = bee_user_new( bee, ic, handle );  		}  	}  	if( ( g_strcasecmp( set_getstr( &ic->bee->set, "strip_html" ), "always" ) == 0 ) ||  	    ( ( ic->flags & OPT_DOES_HTML ) && set_getbool( &ic->bee->set, "strip_html" ) ) )  		strip_html( msg ); - -	wrapped = word_wrap( msg, 425 ); -	irc_msgfrom( irc, u->nick, wrapped ); -	g_free( wrapped ); -#endif +	 +	if( bee->ui->user_msg && bu ) +		bee->ui->user_msg( bee, bu, msg, sent_at ); +	else +		imcb_log( ic, "Message from unknown handle %s:\n%s", handle, msg );  } | 
