From c74eeff790035d69d974d28b4a24574c879a0122 Mon Sep 17 00:00:00 2001 From: Nazar Kanaev Date: Wed, 31 Mar 2021 14:48:39 +0100 Subject: [PATCH] provide settings prior to js rendering --- src/assets/index.html | 5 ++++ src/assets/javascripts/app.js | 43 ++++++++++++----------------------- src/server/routes.go | 5 +++- 3 files changed, 24 insertions(+), 29 deletions(-) diff --git a/src/assets/index.html b/src/assets/index.html index c069fc1..5db9128 100644 --- a/src/assets/index.html +++ b/src/assets/index.html @@ -7,6 +7,11 @@ +
diff --git a/src/assets/javascripts/app.js b/src/assets/javascripts/app.js index 9c73c5a..63f2b22 100644 --- a/src/assets/javascripts/app.js +++ b/src/assets/javascripts/app.js @@ -2,11 +2,6 @@ var TITLE = document.title -function authenticated() { - return /auth=.+/g.test(document.cookie) - -} - var FONTS = [ "Arial", "Courier New", @@ -192,17 +187,21 @@ Vue.component('relative-time', { }) var vm = new Vue({ + mounted: function() { + this.refreshItems() + }, created: function() { this.refreshFeeds() this.refreshStats() }, data: function() { + var s = app.settings return { - 'filterSelected': undefined, + 'filterSelected': s.filter, 'folders': [], 'feeds': [], - 'feedSelected': undefined, - 'feedListWidth': undefined, + 'feedSelected': s.feed, + 'feedListWidth': s.feed_list_width || 300, 'feedNewChoice': [], 'feedNewChoiceSelected': '', 'items': [], @@ -214,8 +213,8 @@ var vm = new Vue({ 'itemSelectedDetails': null, 'itemSelectedReadability': '', 'itemSearch': '', - 'itemSortNewestFirst': undefined, - 'itemListWidth': undefined, + 'itemSortNewestFirst': s.sort_newest_first, + 'itemListWidth': s.item_list_width || 300, 'filteredFeedStats': {}, 'filteredFolderStats': {}, @@ -231,12 +230,12 @@ var vm = new Vue({ 'fonts': FONTS, 'feedStats': {}, 'theme': { - 'name': 'light', - 'font': '', - 'size': 1, + 'name': s.theme_name, + 'font': s.theme_font, + 'size': s.theme_size, }, - 'refreshRate': undefined, - 'authenticated': authenticated(), + 'refreshRate': s.refresh_rate, + 'authenticated': app.authenticated, 'feed_errors': {}, } }, @@ -657,16 +656,4 @@ var vm = new Vue({ } }) -api.settings.get().then(function(data) { - vm.feedSelected = data.feed - vm.filterSelected = data.filter - vm.itemSortNewestFirst = data.sort_newest_first - vm.feedListWidth = data.feed_list_width || 300 - vm.itemListWidth = data.item_list_width || 300 - vm.theme.name = data.theme_name - vm.theme.font = data.theme_font - vm.theme.size = data.theme_size - vm.refreshRate = data.refresh_rate - vm.refreshItems() - vm.$mount('#app') -}) +vm.$mount('#app') diff --git a/src/server/routes.go b/src/server/routes.go index 376c0d0..2f9034b 100644 --- a/src/server/routes.go +++ b/src/server/routes.go @@ -52,7 +52,10 @@ func (s *Server) handler() http.Handler { } func (s *Server) handleIndex(c *router.Context) { - c.HTML(http.StatusOK, assets.Template("index.html"), nil) + c.HTML(http.StatusOK, assets.Template("index.html"), map[string]interface{} { + "settings": s.db.GetSettings(), + "authenticated": s.Username != "" && s.Password != "", + }) } func (s *Server) handleStatic(c *router.Context) {