mirror of
https://github.com/Tha14/toxic.git
synced 2024-11-15 05:23:02 +01:00
add group rejoin command
This commit is contained in:
parent
5859763f04
commit
2bcce234a8
@ -82,9 +82,10 @@ static struct cmd_func chat_commands[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct cmd_func group_commands[] = {
|
static struct cmd_func group_commands[] = {
|
||||||
{ "/topic", cmd_set_topic },
|
|
||||||
{ "/chatid", cmd_chatid },
|
{ "/chatid", cmd_chatid },
|
||||||
{ "/ignore", cmd_ignore },
|
{ "/ignore", cmd_ignore },
|
||||||
|
{ "/rejoin", cmd_rejoin },
|
||||||
|
{ "/topic", cmd_set_topic },
|
||||||
{ "/unignore", cmd_unignore },
|
{ "/unignore", cmd_unignore },
|
||||||
#ifdef AUDIO
|
#ifdef AUDIO
|
||||||
{ "/mute", cmd_mute },
|
{ "/mute", cmd_mute },
|
||||||
|
@ -29,48 +29,15 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "groupchat.h"
|
#include "groupchat.h"
|
||||||
|
|
||||||
void cmd_set_topic(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
|
|
||||||
{
|
|
||||||
if (argc < 1) {
|
|
||||||
char cur_topic[MAX_STR_SIZE];
|
|
||||||
int tlen = tox_group_get_topic(m, self->num, (uint8_t *) cur_topic);
|
|
||||||
|
|
||||||
if (tlen > 0) {
|
|
||||||
cur_topic[tlen] = '\0';
|
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Topic is set to: %s", cur_topic);
|
|
||||||
} else {
|
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Topic is not set");
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *topic = argv[1];
|
|
||||||
|
|
||||||
if (tox_group_set_topic(m, self->num, (uint8_t *) topic, strlen(topic)) != 0) {
|
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Failed to set topic.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
char timefrmt[TIME_STR_SIZE];
|
|
||||||
char selfnick[TOX_MAX_NAME_LENGTH];
|
|
||||||
|
|
||||||
get_time_str(timefrmt, sizeof(timefrmt));
|
|
||||||
int sn_len = tox_group_get_self_name(m, self->num, (uint8_t *) selfnick);
|
|
||||||
selfnick[sn_len] = '\0';
|
|
||||||
|
|
||||||
line_info_add(self, timefrmt, NULL, NULL, SYS_MSG, 1, MAGENTA, "-!- You set the topic to: %s", topic);
|
|
||||||
|
|
||||||
char tmp_event[MAX_STR_SIZE];
|
|
||||||
snprintf(tmp_event, sizeof(tmp_event), "set topic to %s", topic);
|
|
||||||
write_to_log(tmp_event, selfnick, self->chatwin->log, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cmd_chatid(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
|
void cmd_chatid(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
|
||||||
{
|
{
|
||||||
char chatid[TOX_GROUP_CHAT_ID_SIZE * 2 + 1] = {0};
|
char chatid[TOX_GROUP_CHAT_ID_SIZE * 2 + 1] = {0};
|
||||||
char chat_public_key[TOX_GROUP_CHAT_ID_SIZE];
|
char chat_public_key[TOX_GROUP_CHAT_ID_SIZE];
|
||||||
tox_group_get_chat_id(m, self->num, (uint8_t *) chat_public_key);
|
|
||||||
|
if (tox_group_get_chat_id(m, self->num, (uint8_t *) chat_public_key) == -1) {
|
||||||
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Error retreiving chat id.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
@ -109,6 +76,51 @@ void cmd_ignore(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[
|
|||||||
line_info_add(self, timefrmt, NULL, NULL, SYS_MSG, 1, BLUE, "-!- Ignoring %s", nick);
|
line_info_add(self, timefrmt, NULL, NULL, SYS_MSG, 1, BLUE, "-!- Ignoring %s", nick);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cmd_rejoin(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
|
||||||
|
{
|
||||||
|
if (tox_group_reconnect(m, self->num) == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Reconnecting to group...");
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmd_set_topic(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
|
||||||
|
{
|
||||||
|
if (argc < 1) {
|
||||||
|
char cur_topic[MAX_STR_SIZE];
|
||||||
|
int tlen = tox_group_get_topic(m, self->num, (uint8_t *) cur_topic);
|
||||||
|
|
||||||
|
if (tlen > 0) {
|
||||||
|
cur_topic[tlen] = '\0';
|
||||||
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Topic is set to: %s", cur_topic);
|
||||||
|
} else {
|
||||||
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Topic is not set");
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *topic = argv[1];
|
||||||
|
|
||||||
|
if (tox_group_set_topic(m, self->num, (uint8_t *) topic, strlen(topic)) != 0) {
|
||||||
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Failed to set topic.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
char timefrmt[TIME_STR_SIZE];
|
||||||
|
char selfnick[TOX_MAX_NAME_LENGTH];
|
||||||
|
|
||||||
|
get_time_str(timefrmt, sizeof(timefrmt));
|
||||||
|
int sn_len = tox_group_get_self_name(m, self->num, (uint8_t *) selfnick);
|
||||||
|
selfnick[sn_len] = '\0';
|
||||||
|
|
||||||
|
line_info_add(self, timefrmt, NULL, NULL, SYS_MSG, 1, MAGENTA, "-!- You set the topic to: %s", topic);
|
||||||
|
|
||||||
|
char tmp_event[MAX_STR_SIZE];
|
||||||
|
snprintf(tmp_event, sizeof(tmp_event), "set topic to %s", topic);
|
||||||
|
write_to_log(tmp_event, selfnick, self->chatwin->log, true);
|
||||||
|
}
|
||||||
|
|
||||||
void cmd_unignore(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
|
void cmd_unignore(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
|
||||||
{
|
{
|
||||||
if (argc < 1) {
|
if (argc < 1) {
|
||||||
|
@ -26,9 +26,10 @@
|
|||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
#include "toxic.h"
|
#include "toxic.h"
|
||||||
|
|
||||||
void cmd_set_topic(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]);
|
|
||||||
void cmd_chatid(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]);
|
void cmd_chatid(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]);
|
||||||
void cmd_unignore(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]);
|
|
||||||
void cmd_ignore(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]);
|
void cmd_ignore(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]);
|
||||||
|
void cmd_rejoin(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]);
|
||||||
|
void cmd_set_topic(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]);
|
||||||
|
void cmd_unignore(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]);
|
||||||
|
|
||||||
#endif /* GROUP_COMMANDS_H */
|
#endif /* GROUP_COMMANDS_H */
|
||||||
|
@ -70,9 +70,9 @@ extern struct user_settings *user_settings;
|
|||||||
extern struct Winthread Winthread;
|
extern struct Winthread Winthread;
|
||||||
|
|
||||||
#ifdef AUDIO
|
#ifdef AUDIO
|
||||||
#define AC_NUM_GROUP_COMMANDS 26
|
#define AC_NUM_GROUP_COMMANDS 27
|
||||||
#else
|
#else
|
||||||
#define AC_NUM_GROUP_COMMANDS 22
|
#define AC_NUM_GROUP_COMMANDS 23
|
||||||
#endif /* AUDIO */
|
#endif /* AUDIO */
|
||||||
|
|
||||||
/* groupchat command names used for tab completion. */
|
/* groupchat command names used for tab completion. */
|
||||||
@ -89,16 +89,17 @@ static const char group_cmd_list[AC_NUM_GROUP_COMMANDS][MAX_CMDNAME_SIZE] = {
|
|||||||
{ "/group" },
|
{ "/group" },
|
||||||
{ "/help" },
|
{ "/help" },
|
||||||
{ "/ignore" },
|
{ "/ignore" },
|
||||||
{ "/unignore" },
|
|
||||||
{ "/join" },
|
{ "/join" },
|
||||||
{ "/log" },
|
{ "/log" },
|
||||||
{ "/myid" },
|
{ "/myid" },
|
||||||
{ "/nick" },
|
{ "/nick" },
|
||||||
{ "/note" },
|
{ "/note" },
|
||||||
{ "/quit" },
|
{ "/quit" },
|
||||||
|
{ "/rejoin" },
|
||||||
{ "/requests" },
|
{ "/requests" },
|
||||||
{ "/status" },
|
{ "/status" },
|
||||||
{ "/topic" },
|
{ "/topic" },
|
||||||
|
{ "/unignore" },
|
||||||
|
|
||||||
#ifdef AUDIO
|
#ifdef AUDIO
|
||||||
|
|
||||||
@ -546,16 +547,16 @@ static void groupchat_onGroupRejected(ToxWindow *self, Tox *m, int groupnum, uin
|
|||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TOX_GJ_NICK_TAKEN:
|
case TOX_GJ_NICK_TAKEN:
|
||||||
msg = "That nick is already in use. Please change your nick with the '/nick' command.";
|
msg = "Nick already in use. Change your nick and use the 'rejoin' command.";
|
||||||
break;
|
break;
|
||||||
case TOX_GJ_GROUP_FULL:
|
case TOX_GJ_GROUP_FULL:
|
||||||
msg = "Group is full.";
|
msg = "Group is full. Try again with the 'rejoin' command.";
|
||||||
break;
|
break;
|
||||||
case TOX_GJ_INVITES_DISABLED:
|
case TOX_GJ_INVITES_DISABLED:
|
||||||
msg = "Invites for this group have been disabled.";
|
msg = "Invites for this group have been disabled.";
|
||||||
break;
|
break;
|
||||||
case TOX_GJ_INVITE_FAILED:
|
case TOX_GJ_INVITE_FAILED:
|
||||||
msg = "Invite failed.";
|
msg = "Invite failed. Try again with the 'rejoin' command.";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
|
@ -242,9 +242,10 @@ static void help_draw_group(ToxWindow *self)
|
|||||||
wprintw(win, "Group commands:\n");
|
wprintw(win, "Group commands:\n");
|
||||||
wattroff(win, A_BOLD | COLOR_PAIR(RED));
|
wattroff(win, A_BOLD | COLOR_PAIR(RED));
|
||||||
|
|
||||||
wprintw(win, " /topic <msg> : Set group topic (show current topic if no msg)\n");
|
|
||||||
wprintw(win, " /chatid : Print the group chat id to share with others.\n");
|
wprintw(win, " /chatid : Print the group chat id to share with others.\n");
|
||||||
wprintw(win, " /ignore <nick> : Ignore peer\n");
|
wprintw(win, " /ignore <nick> : Ignore peer\n");
|
||||||
|
wprintw(win, " /rejoin : Rejoin the group (only works if not connected)\n");
|
||||||
|
wprintw(win, " /topic <msg> : Set group topic (show current topic if no msg)\n");
|
||||||
wprintw(win, " /unignore <nick> : Unignore peer \n\n");
|
wprintw(win, " /unignore <nick> : Unignore peer \n\n");
|
||||||
|
|
||||||
#ifdef AUDIO
|
#ifdef AUDIO
|
||||||
@ -312,9 +313,9 @@ void help_onKey(ToxWindow *self, wint_t key)
|
|||||||
|
|
||||||
case 'r':
|
case 'r':
|
||||||
#ifdef AUDIO
|
#ifdef AUDIO
|
||||||
help_init_window(self, 13, 80);
|
help_init_window(self, 14, 80);
|
||||||
#else
|
#else
|
||||||
help_init_window(self, 9, 80);
|
help_init_window(self, 10, 80);
|
||||||
#endif
|
#endif
|
||||||
self->help->type = HELP_GROUP;
|
self->help->type = HELP_GROUP;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user