From f260495495bf90c93dd0d958b19d925b57b62e3e Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sun, 7 Aug 2022 08:38:52 +1200 Subject: [PATCH 1/4] UI: Update pagination values when new mail arrives when not on first page --- server/ui-src/App.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/ui-src/App.vue b/server/ui-src/App.vue index 82a1f4d..781c78c 100644 --- a/server/ui-src/App.vue +++ b/server/ui-src/App.vue @@ -210,12 +210,14 @@ export default { } // new messages if (response.Type == "new" && response.Data) { - if (self.start < 1) { - if (!self.searching) { + if (!self.searching) { + if (self.start < 1) { self.items.unshift(response.Data); if (self.items.length > self.limit) { self.items.pop(); } + } else { + self.start++; } } self.total++; From d4cf95363f00b56453bd9ae58a20e4c9a39dd715 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sun, 7 Aug 2022 09:34:06 +1200 Subject: [PATCH 2/4] Feature: Mark all messages as read --- server/api.go | 16 ++++++++++++++ server/server.go | 1 + server/ui-src/App.vue | 51 ++++++++++++++++++++++++++++++++++++------- storage/database.go | 35 +++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+), 8 deletions(-) diff --git a/server/api.go b/server/api.go index e5f5662..468d3e2 100644 --- a/server/api.go +++ b/server/api.go @@ -218,6 +218,22 @@ func apiUnreadOne(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte("ok")) } +// Mark single message as unread +func apiMarkAllRead(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + + mailbox := vars["mailbox"] + + err := storage.MarkAllRead(mailbox) + if err != nil { + httpError(w, err.Error()) + return + } + + w.Header().Add("Content-Type", "text/plain") + _, _ = w.Write([]byte("ok")) +} + // Websocket to broadcast changes func apiWebsocket(w http.ResponseWriter, r *http.Request) { websockets.ServeWs(websockets.MessageHub, w, r) diff --git a/server/server.go b/server/server.go index 8c202a9..ada8462 100644 --- a/server/server.go +++ b/server/server.go @@ -39,6 +39,7 @@ func Listen() { r.HandleFunc("/api/{mailbox}/search", middleWareFunc(apiSearchMailbox)) r.HandleFunc("/api/{mailbox}/delete", middleWareFunc(apiDeleteAll)) r.HandleFunc("/api/{mailbox}/events", apiWebsocket) + r.HandleFunc("/api/{mailbox}/read", apiMarkAllRead) r.HandleFunc("/api/{mailbox}/{id}/source", middleWareFunc(apiDownloadSource)) r.HandleFunc("/api/{mailbox}/{id}/part/{partID}", middleWareFunc(apiDownloadAttachment)) r.HandleFunc("/api/{mailbox}/{id}/delete", middleWareFunc(apiDeleteOne)) diff --git a/server/ui-src/App.vue b/server/ui-src/App.vue index 781c78c..71e2a3c 100644 --- a/server/ui-src/App.vue +++ b/server/ui-src/App.vue @@ -198,6 +198,16 @@ export default { }); }, + markAllRead: function() { + let self = this; + let uri = 'api/' + self.mailbox + '/read' + self.get(uri, false, function(response) { + window.location.hash = ""; + self.scrollInPlace = true; + self.loadMessages(); + }); + }, + // websocket connect connect: function () { let wsproto = location.protocol == 'https:' ? 'wss' : 'ws'; @@ -360,15 +370,15 @@ export default {
-
No messages
+
No messages
@@ -468,6 +484,25 @@ export default { + + +