Implemented loading unsent messages from disk.
This commit is contained in:
parent
3cf80be3e9
commit
6dfacdf04c
4 changed files with 70 additions and 5 deletions
|
@ -57,7 +57,7 @@ tox_weechat_unsent_message_recipient_new(struct t_tox_weechat_identity *identity
|
|||
return NULL;
|
||||
|
||||
memcpy(recipient->recipient_id, id, TOX_CLIENT_ID_SIZE);
|
||||
|
||||
recipient->identity = identity;
|
||||
recipient->unsent_messages = recipient->last_unsent_message = NULL;
|
||||
|
||||
recipient->prev_recipient = identity->last_unsent_message_recipient;
|
||||
|
@ -93,6 +93,7 @@ tox_weechat_add_unsent_message(struct t_tox_weechat_identity *identity,
|
|||
return;
|
||||
|
||||
unsent_message->message = strdup(message);
|
||||
unsent_message->recipient = recipient;
|
||||
|
||||
unsent_message->prev_message = recipient->last_unsent_message;
|
||||
unsent_message->next_message = NULL;
|
||||
|
@ -105,6 +106,25 @@ tox_weechat_add_unsent_message(struct t_tox_weechat_identity *identity,
|
|||
recipient->last_unsent_message = unsent_message;
|
||||
}
|
||||
|
||||
void
|
||||
tox_weechat_remove_unsent_message(struct t_tox_weechat_unsent_message *message)
|
||||
{
|
||||
struct t_tox_weechat_unsent_message_recipient *recipient = message->recipient;
|
||||
if (message == recipient->last_unsent_message)
|
||||
recipient->last_unsent_message = message->prev_message;
|
||||
|
||||
if (message->prev_message)
|
||||
message->prev_message->next_message = message->next_message;
|
||||
else
|
||||
recipient->unsent_messages = message->next_message;
|
||||
|
||||
if (message->next_message)
|
||||
message->next_message->prev_message = message->prev_message;
|
||||
|
||||
free(message->message);
|
||||
free(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a message to a friend. Does message splitting and queuing.
|
||||
*/
|
||||
|
@ -128,3 +148,22 @@ tox_weechat_send_friend_message(struct t_tox_weechat_identity *identity,
|
|||
return rc;
|
||||
}
|
||||
|
||||
void
|
||||
tox_weechat_unsent_messages_free(struct t_tox_weechat_identity *identity)
|
||||
{
|
||||
struct t_tox_weechat_unsent_message_recipient *recipient;
|
||||
for (recipient = identity->unsent_message_recipients;
|
||||
recipient;
|
||||
recipient = recipient->next_recipient)
|
||||
{
|
||||
while (recipient->unsent_messages)
|
||||
tox_weechat_remove_unsent_message(recipient->unsent_messages);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
tox_weechat_attempt_message_flush(struct t_tox_weechat_identity *identity,
|
||||
int32_t friend_number)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue