about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2019-10-21 15:26:40 +0200
committerMichael Vetter <jubalh@iodoru.org>2019-10-21 15:26:40 +0200
commit40d9dcae87a7198b1dfcc5b8437728310c78ae70 (patch)
tree42ec913e93de4270fa6975c458843edb31aecd9e /src
parentef19b45e64af23adc9433cbdb079269968a941ac (diff)
downloadprofani-tty-40d9dcae87a7198b1dfcc5b8437728310c78ae70.tar.gz
Properly display chatwin history
So far if one had enabled `/history` and did `/msg somenick` the history
was loaded from file and displayed like this:

```
04-04-17 15:23 - 3/4/2017:
01-01-00 10:30 - me: ....
01-01-00 10:31 - somebody: ....
01-01-00 10:32 - somebody: ....
```

So the first line contained the actual date. But the date used in each
line was always 01-01-2000. This date was for some reason hardcoded.

This commit now actually uses that date to build the proper GDateTime
instead of just printing it.

Fix https://github.com/profanity-im/profanity/issues/922
Diffstat (limited to 'src')
-rw-r--r--src/log.c1
-rw-r--r--src/ui/chatwin.c14
2 files changed, 10 insertions, 5 deletions
diff --git a/src/log.c b/src/log.c
index 96a99be2..80e91c56 100644
--- a/src/log.c
+++ b/src/log.c
@@ -599,7 +599,6 @@ _groupchat_log_chat(const gchar *const login, const gchar *const room, const gch
     g_date_time_unref(dt);
 }
 
-
 GSList*
 chat_log_get_previous(const gchar *const login, const gchar *const recipient)
 {
diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c
index 006b5ca6..df3849c0 100644
--- a/src/ui/chatwin.c
+++ b/src/ui/chatwin.c
@@ -467,19 +467,25 @@ _chatwin_history(ProfChatWin *chatwin, const char *const contact)
         GSList *history = chat_log_get_previous(jid->barejid, contact);
         jid_destroy(jid);
         GSList *curr = history;
+        int idd;
+        int imo;
+        int iyy;
+
         while (curr) {
             char *line = curr->data;
-            // entry
+            // 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(2000, 1, 1, ihh, imm, iss);
+                GDateTime *timestamp = g_date_time_new_local(iyy, imo, idd, ihh, imm, iss);
                 win_print_history((ProfWin*)chatwin, timestamp, "%s", curr->data+11);
                 g_date_time_unref(timestamp);
-            // header
+            // header, containing the date from filename "21/10/2019:"
             } else {
-                win_println((ProfWin*)chatwin, THEME_DEFAULT, '-', "%s", curr->data);
+                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);
             }
             curr = g_slist_next(curr);
         }