From 6a4e5fb03cb8d66e12328508b61dad3691c81d7a Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 22 Sep 2023 15:06:03 +1200 Subject: [PATCH] UI: Rewrite web UI, add URL routing and components See #156 --- server/server.go | 2 + server/ui-src/App.vue | 22 +- server/ui-src/app.js | 10 +- .../{bootstrap.scss => _bootstrap.scss} | 2 +- .../ui-src/assets/_bootstrap_variables.scss | 16 +- server/ui-src/assets/styles.scss | 7 + server/ui-src/components/AboutMailpit.vue | 283 ++++---- server/ui-src/components/AjaxLoader.vue | 1 + server/ui-src/components/ListMessages.vue | 65 +- server/ui-src/components/MailboxActions.vue | 112 --- server/ui-src/components/NavMailbox.vue | 139 ++++ server/ui-src/components/NavSearch.vue | 115 +++ server/ui-src/components/NavSelected.vue | 120 ++++ .../{MailboxTags.vue => NavTags.vue} | 13 +- server/ui-src/components/Notifications.vue | 45 +- server/ui-src/components/Pagination.vue | 36 +- server/ui-src/components/SearchActions.vue | 47 -- server/ui-src/components/SearchForm.vue | 17 +- .../ui-src/components/message/Attachments.vue | 41 ++ .../ui-src/components/message/HTMLCheck.vue | 670 ++++++++++++++++++ server/ui-src/components/message/Headers.vue | 38 + .../ui-src/components/message/LinkCheck.vue | 398 +++++++++++ server/ui-src/components/message/Message.vue | 458 ++++++++++++ server/ui-src/components/message/Release.vue | 135 ++++ .../ui-src/components/message/Screenshot.vue | 147 ++++ server/ui-src/mixins/CommonMixins.js | 161 +++-- server/ui-src/mixins/MessagesMixins.js | 29 +- server/ui-src/router/index.js | 17 +- server/ui-src/stores/mailbox.js | 21 +- server/ui-src/stores/pagination.js | 4 - server/ui-src/views/MailboxView.vue | 82 ++- server/ui-src/views/MessageView.vue | 323 +++++++++ server/ui-src/views/NotFoundView.vue | 26 +- server/ui-src/views/SearchView.vue | 76 +- server/ui/api/v1/swagger.json | 68 +- storage/database.go | 13 + storage/notifications.go | 35 + 37 files changed, 3254 insertions(+), 540 deletions(-) rename server/ui-src/assets/{bootstrap.scss => _bootstrap.scss} (97%) delete mode 100644 server/ui-src/components/MailboxActions.vue create mode 100644 server/ui-src/components/NavMailbox.vue create mode 100644 server/ui-src/components/NavSearch.vue create mode 100644 server/ui-src/components/NavSelected.vue rename server/ui-src/components/{MailboxTags.vue => NavTags.vue} (85%) delete mode 100644 server/ui-src/components/SearchActions.vue create mode 100644 server/ui-src/components/message/Attachments.vue create mode 100644 server/ui-src/components/message/HTMLCheck.vue create mode 100644 server/ui-src/components/message/Headers.vue create mode 100644 server/ui-src/components/message/LinkCheck.vue create mode 100644 server/ui-src/components/message/Message.vue create mode 100644 server/ui-src/components/message/Release.vue create mode 100644 server/ui-src/components/message/Screenshot.vue create mode 100644 server/ui-src/views/MessageView.vue create mode 100644 storage/notifications.go diff --git a/server/server.go b/server/server.go index 2e20833..6e683fb 100644 --- a/server/server.go +++ b/server/server.go @@ -18,6 +18,7 @@ import ( "github.com/axllent/mailpit/server/apiv1" "github.com/axllent/mailpit/server/handlers" "github.com/axllent/mailpit/server/websockets" + "github.com/axllent/mailpit/storage" "github.com/axllent/mailpit/utils/logger" "github.com/gorilla/mux" ) @@ -223,6 +224,7 @@ func addSlashToWebroot(w http.ResponseWriter, r *http.Request) { // Websocket to broadcast changes func apiWebsocket(w http.ResponseWriter, r *http.Request) { websockets.ServeWs(websockets.MessageHub, w, r) + storage.BroadcastMailboxStats() } // Wrapper to artificially inject a basePath to the swagger.json if a webroot has been specified diff --git a/server/ui-src/App.vue b/server/ui-src/App.vue index 6fd7e0b..79a9bca 100644 --- a/server/ui-src/App.vue +++ b/server/ui-src/App.vue @@ -1,12 +1,8 @@ diff --git a/server/ui-src/components/AjaxLoader.vue b/server/ui-src/components/AjaxLoader.vue index 9012046..237a4d5 100644 --- a/server/ui-src/components/AjaxLoader.vue +++ b/server/ui-src/components/AjaxLoader.vue @@ -5,6 +5,7 @@ export default { }, } +