degesch: fix /query
This commit is contained in:
parent
20c36b4b36
commit
15032f9ce7
43
degesch.c
43
degesch.c
|
@ -1299,6 +1299,27 @@ irc_make_user (struct app_context *ctx, char *nickname)
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct buffer *
|
||||||
|
irc_get_user_buffer (struct app_context *ctx, const char *nickname)
|
||||||
|
{
|
||||||
|
struct buffer *buffer = str_map_find (&ctx->irc_buffer_map, nickname);
|
||||||
|
if (buffer)
|
||||||
|
return buffer;
|
||||||
|
|
||||||
|
struct user *user = str_map_find (&ctx->irc_users, nickname);
|
||||||
|
if (!user)
|
||||||
|
user = irc_make_user (ctx, xstrdup (nickname));
|
||||||
|
|
||||||
|
// Open a new buffer for the user
|
||||||
|
buffer = buffer_new ();
|
||||||
|
buffer->type = BUFFER_PM;
|
||||||
|
buffer->name = xstrdup (nickname);
|
||||||
|
buffer->user = user_ref (user);
|
||||||
|
LIST_APPEND_WITH_TAIL (ctx->buffers, ctx->buffers_tail, buffer);
|
||||||
|
str_map_set (&ctx->irc_buffer_map, user->nickname, buffer);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
irc_channel_on_destroy (void *object, void *user_data)
|
irc_channel_on_destroy (void *object, void *user_data)
|
||||||
{
|
{
|
||||||
|
@ -2116,20 +2137,8 @@ irc_handle_privmsg (struct app_context *ctx, const struct irc_message *msg)
|
||||||
}
|
}
|
||||||
else if (!buffer)
|
else if (!buffer)
|
||||||
{
|
{
|
||||||
// Get or make a user object
|
|
||||||
char *nickname = irc_cut_nickname (msg->prefix);
|
char *nickname = irc_cut_nickname (msg->prefix);
|
||||||
struct user *user = str_map_find (&ctx->irc_users, nickname);
|
buffer = irc_get_user_buffer (ctx, nickname);
|
||||||
if (!user)
|
|
||||||
user = irc_make_user (ctx, xstrdup (nickname));
|
|
||||||
|
|
||||||
// Open a new buffer for the user
|
|
||||||
buffer = buffer_new ();
|
|
||||||
buffer->type = BUFFER_PM;
|
|
||||||
buffer->name = xstrdup (nickname);
|
|
||||||
buffer->user = user_ref (user);
|
|
||||||
LIST_APPEND_WITH_TAIL (ctx->buffers, ctx->buffers_tail, buffer);
|
|
||||||
str_map_set (&ctx->irc_buffer_map, user->nickname, buffer);
|
|
||||||
|
|
||||||
free (nickname);
|
free (nickname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2707,13 +2716,7 @@ handle_command_query (struct app_context *ctx, char *arguments)
|
||||||
buffer_send_error (ctx, ctx->server_buffer, "No text to send");
|
buffer_send_error (ctx, ctx->server_buffer, "No text to send");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
struct buffer *buffer = str_map_find (&ctx->irc_buffer_map, target);
|
buffer_activate (ctx, irc_get_user_buffer (ctx, target));
|
||||||
if (!buffer)
|
|
||||||
{
|
|
||||||
// TODO: create a buffer for this user
|
|
||||||
// TODO: see irc_handle_privmsg
|
|
||||||
}
|
|
||||||
buffer_activate (ctx, buffer);
|
|
||||||
SEND_AUTOSPLIT_PRIVMSG (ctx, target, arguments);
|
SEND_AUTOSPLIT_PRIVMSG (ctx, target, arguments);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue