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 { + + +