summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheJackiMonster <thejackimonster@gmail.com>2022-08-04 17:09:29 +0200
committerTheJackiMonster <thejackimonster@gmail.com>2022-08-04 17:09:29 +0200
commit7820508a96d1298134aba9699554c2fa2f347994 (patch)
tree46229052c2cfc6fee8ed5abe61d9fa698817fd74
parentc1344f9692273f2e1bd5688adfb39bda33394a0b (diff)
Added handling for downloading files and accepting invitations
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-rw-r--r--src/ui/messages.c59
1 files changed, 55 insertions, 4 deletions
diff --git a/src/ui/messages.c b/src/ui/messages.c
index 26df838..1194f5b 100644
--- a/src/ui/messages.c
+++ b/src/ui/messages.c
@@ -39,6 +39,38 @@ _messages_iterate(UI_MESSAGES_Handle *messages,
messages->selected = message;
}
+
+
+void
+_messages_handle_message(UI_MESSAGES_Handle *messages)
+{
+ switch (GNUNET_CHAT_message_get_kind(messages->selected))
+ {
+ case GNUNET_CHAT_KIND_INVITATION:
+ {
+ struct GNUNET_CHAT_Invitation *invitation = (
+ GNUNET_CHAT_message_get_invitation(messages->selected)
+ );
+
+ if (invitation)
+ GNUNET_CHAT_invitation_accept(invitation);
+ break;
+ }
+ case GNUNET_CHAT_KIND_FILE:
+ {
+ struct GNUNET_CHAT_File *file = GNUNET_CHAT_message_get_file(
+ messages->selected
+ );
+
+ if ((file) && (GNUNET_YES != GNUNET_CHAT_file_is_downloading(file)))
+ GNUNET_CHAT_file_start_download(file, NULL, NULL);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
void
messages_event(UI_MESSAGES_Handle *messages,
MESSENGER_Application *app,
@@ -94,7 +126,9 @@ messages_event(UI_MESSAGES_Handle *messages,
case '\n':
case KEY_ENTER:
{
- if ((!(messages->selected)) && (messages->text_len > 0))
+ if (messages->selected)
+ _messages_handle_message(messages);
+ else if (messages->text_len > 0)
{
GNUNET_CHAT_context_send_text(app->chat.context, messages->text);
messages->text_len = 0;
@@ -199,6 +233,8 @@ _messages_iterate_print(UI_MESSAGES_Handle *messages,
const char *name = sender? GNUNET_CHAT_contact_get_name(sender) : NULL;
const char *text = GNUNET_CHAT_message_get_text(message);
+ const struct GNUNET_CHAT_File *file = GNUNET_CHAT_message_get_file(message);
+
struct GNUNET_TIME_Absolute abs_time = GNUNET_CHAT_message_get_timestamp(
message
);
@@ -246,14 +282,29 @@ _messages_iterate_print(UI_MESSAGES_Handle *messages,
);
break;
case GNUNET_CHAT_KIND_TEXT:
- case GNUNET_CHAT_KIND_FILE:
wprintw(
messages->window,
- "%s: %s",
+ "%s: %s",
+ name,
+ text
+ );
+ break;
+ case GNUNET_CHAT_KIND_FILE: {
+ const char *filename = GNUNET_CHAT_file_get_name(file);
+
+ const uint64_t localsize = GNUNET_CHAT_file_get_local_size(file);
+ const uint64_t filesize = GNUNET_CHAT_file_get_size(file);
+
+ wprintw(
+ messages->window,
+ "%s shares the file '%s' (%lu / %lu) with you.",
name,
- text
+ filename,
+ localsize,
+ filesize
);
break;
+ }
default:
wprintw(
messages->window,