diff options
Diffstat (limited to 'src/ui/chatwin.c')
-rw-r--r-- | src/ui/chatwin.c | 31 |
1 files changed, 7 insertions, 24 deletions
diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index 9ebc8d76..5e2ac8c2 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -44,6 +44,7 @@ #include "window_list.h" #include "xmpp/roster_list.h" #include "log.h" +#include "database.h" #include "config/preferences.h" #include "ui/ui.h" #include "ui/window.h" @@ -56,7 +57,7 @@ #include "omemo/omemo.h" #endif -static void _chatwin_history(ProfChatWin *chatwin, const char *const contact); +static void _chatwin_history(ProfChatWin *chatwin, const char *const contact_barejid); static void _chatwin_set_last_message(ProfChatWin *chatwin, const char *const id, const char *const message); ProfChatWin* @@ -477,38 +478,20 @@ chatwin_unset_outgoing_char(ProfChatWin *chatwin) } static void -_chatwin_history(ProfChatWin *chatwin, const char *const contact) +_chatwin_history(ProfChatWin *chatwin, const char *const contact_barejid) { if (!chatwin->history_shown) { - Jid *jid = jid_create(connection_get_fulljid()); - GSList *history = chat_log_get_previous(jid->barejid, contact); - jid_destroy(jid); + GSList *history = log_database_get_previous_chat(contact_barejid); GSList *curr = history; - int idd = 0; - int imo = 0; - int iyy = 0; while (curr) { - char *line = curr->data; - // entry, containing the actual entries with date followed by text - if (line[2] == ':') { - char hh[3]; memcpy(hh, &line[0], 2); hh[2] = '\0'; int ihh = atoi(hh); - char mm[3]; memcpy(mm, &line[3], 2); mm[2] = '\0'; int imm = atoi(mm); - char ss[3]; memcpy(ss, &line[6], 2); ss[2] = '\0'; int iss = atoi(ss); - GDateTime *timestamp = g_date_time_new_local(iyy, imo, idd, ihh, imm, iss); - win_print_history((ProfWin*)chatwin, timestamp, curr->data+11); - g_date_time_unref(timestamp); - // header, containing the date from filename "21/10/2019:" - } else { - char dd[3]; memcpy(dd, &line[0], 2); dd[2] = '\0'; idd = atoi(dd); - char mm[3]; memcpy(mm, &line[3], 2); mm[2] = '\0'; imo = atoi(mm); - char yy[5]; memcpy(yy, &line[6], 4); yy[4] = '\0'; iyy = atoi(yy); - } + ProfMessage *msg = curr->data; + win_print_history((ProfWin*)chatwin, msg, FALSE); curr = g_slist_next(curr); } chatwin->history_shown = TRUE; - g_slist_free_full(history, free); + g_slist_free_full(history, (GDestroyNotify)message_free); } } |