diff options
author | TheJackiMonster <thejackimonster@gmail.com> | 2022-08-04 17:09:29 +0200 |
---|---|---|
committer | TheJackiMonster <thejackimonster@gmail.com> | 2022-08-04 17:09:29 +0200 |
commit | 7820508a96d1298134aba9699554c2fa2f347994 (patch) | |
tree | 46229052c2cfc6fee8ed5abe61d9fa698817fd74 | |
parent | c1344f9692273f2e1bd5688adfb39bda33394a0b (diff) |
Added handling for downloading files and accepting invitations
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-rw-r--r-- | src/ui/messages.c | 59 |
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, |