mirror of https://github.com/bqv/weechat-xmpp
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.0 KiB
C
74 lines
2.0 KiB
C
7 years ago
|
#include "weechat-plugin.h"
|
||
|
#include "slack.h"
|
||
|
#include "slack-buffer.h"
|
||
|
#include "slack-workspace.h"
|
||
|
|
||
|
void slack_buffer_get_workspace_and_channel(struct t_gui_buffer *buffer,
|
||
|
struct t_slack_workspace **workspace)//,
|
||
|
//struct t_slack_channel **channel)
|
||
|
{
|
||
|
struct t_slack_workspace *ptr_workspace;
|
||
|
//struct t_slack_channel *ptr_channel;
|
||
|
|
||
|
if (!buffer)
|
||
|
return;
|
||
|
|
||
|
/* look for a workspace or channel using this buffer */
|
||
|
for (ptr_workspace = slack_workspaces; ptr_workspace;
|
||
|
ptr_workspace = ptr_workspace->next_workspace)
|
||
|
{
|
||
|
if (ptr_workspace->buffer == buffer)
|
||
|
{
|
||
|
if (workspace)
|
||
|
*workspace = ptr_workspace;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
for (ptr_channel = ptr_workspace->channels; ptr_channel;
|
||
|
ptr_channel = ptr_channel->next_channel)
|
||
|
{
|
||
|
if (ptr_channel->buffer == buffer)
|
||
|
{
|
||
|
if (workspace)
|
||
|
*workspace = ptr_workspace;
|
||
|
if (channel)
|
||
|
*channel = ptr_channel;
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
*/
|
||
|
}
|
||
|
|
||
|
/* no workspace or channel found */
|
||
|
}
|
||
|
|
||
|
int slack_buffer_close_cb(const void *pointer, void *data,
|
||
|
struct t_gui_buffer *buffer)
|
||
|
{
|
||
|
struct t_weechat_plugin *buffer_plugin = NULL;
|
||
|
struct t_slack_workspace *ptr_workspace = NULL;
|
||
|
|
||
|
buffer_plugin = weechat_buffer_get_pointer(buffer, "plugin");
|
||
|
if (buffer_plugin == weechat_slack_plugin)
|
||
|
slack_buffer_get_workspace_and_channel(buffer,
|
||
|
&ptr_workspace);//, &ptr_channel);
|
||
|
|
||
|
(void) pointer;
|
||
|
(void) data;
|
||
|
(void) buffer;
|
||
|
|
||
|
if (ptr_workspace)
|
||
|
{
|
||
|
if (!ptr_workspace->disconnected)
|
||
|
{
|
||
|
//slack_command_quit_workspace(ptr_workspace, NULL);
|
||
|
slack_workspace_disconnect(ptr_workspace, 0, 0);
|
||
|
}
|
||
|
|
||
|
ptr_workspace->buffer = NULL;
|
||
|
}
|
||
|
|
||
|
return WEECHAT_RC_OK;
|
||
|
}
|