store feed list state

This commit is contained in:
Nazar Kanaev 2020-07-18 00:41:48 +01:00
parent 327d2ac6b7
commit 98ba266921
4 changed files with 11 additions and 6 deletions

View File

@ -81,6 +81,7 @@ func FolderListHandler(rw http.ResponseWriter, req *http.Request) {
type UpdateFolder struct { type UpdateFolder struct {
Title *string `json:"title,omitempty"` Title *string `json:"title,omitempty"`
IsExpanded *bool `json:"is_expanded,omitempty"`
} }
func FolderHandler(rw http.ResponseWriter, req *http.Request) { func FolderHandler(rw http.ResponseWriter, req *http.Request) {
@ -99,6 +100,9 @@ func FolderHandler(rw http.ResponseWriter, req *http.Request) {
if body.Title != nil { if body.Title != nil {
db(req).RenameFolder(id, *body.Title) db(req).RenameFolder(id, *body.Title)
} }
if body.IsExpanded != nil {
db(req).ToggleFolderExpanded(id, *body.IsExpanded)
}
rw.WriteHeader(http.StatusOK) rw.WriteHeader(http.StatusOK)
} else if req.Method == "DELETE" { } else if req.Method == "DELETE" {
db(req).DeleteFolder(id) db(req).DeleteFolder(id)

View File

@ -5,6 +5,7 @@ import "encoding/json"
func settingsDefaults() map[string]interface{} { func settingsDefaults() map[string]interface{} {
return map[string]interface{}{ return map[string]interface{}{
"filter": "", "filter": "",
"feed": "",
"feed_list_width": 300, "feed_list_width": 300,
"item_list_width": 300, "item_list_width": 300,
} }

View File

@ -38,7 +38,7 @@
</label> </label>
</div> </div>
<label class="nav-select"> <label class="nav-select">
<input type="radio" name="feed" :value="null" v-model="feedSelected"> <input type="radio" name="feed" value="" v-model="feedSelected">
<div class="menu-item d-flex align-items-center w-100"> <div class="menu-item d-flex align-items-center w-100">
<img src="./static/images/layers.svg" alt="" class="nav-icon"> <img src="./static/images/layers.svg" alt="" class="nav-icon">
<span class="flex-fill text-left text-truncate">All Feeds</span> <span class="flex-fill text-left text-truncate">All Feeds</span>

View File

@ -57,6 +57,7 @@ var vm = new Vue({
created: function() { created: function() {
var vm = this var vm = this
api.settings.get().then(function(data) { api.settings.get().then(function(data) {
vm.feedSelected = data.feed
vm.filterSelected = data.filter vm.filterSelected = data.filter
vm.refreshItems() vm.refreshItems()
}) })
@ -140,13 +141,11 @@ var vm = new Vue({
watch: { watch: {
'filterSelected': function(newVal, oldVal) { 'filterSelected': function(newVal, oldVal) {
if (oldVal === null) return // do nothing, initial setup if (oldVal === null) return // do nothing, initial setup
var vm = this api.settings.update({filter: newVal}).then(this.refreshItems.bind(this))
api.settings.update({filter: newVal}).then(function() {
vm.refreshItems()
})
}, },
'feedSelected': function(newVal, oldVal) { 'feedSelected': function(newVal, oldVal) {
this.refreshItems() if (oldVal === null) return // do nothing, initial setup
api.settings.update({feed: newVal}).then(this.refreshItems.bind(this))
}, },
'itemSelected': function(newVal, oldVal) { 'itemSelected': function(newVal, oldVal) {
this.itemSelectedReadability = '' this.itemSelectedReadability = ''
@ -237,6 +236,7 @@ var vm = new Vue({
}, },
toggleFolderExpanded: function(folder) { toggleFolderExpanded: function(folder) {
folder.is_expanded = !folder.is_expanded folder.is_expanded = !folder.is_expanded
api.folders.update(folder.id, {is_expanded: folder.is_expanded})
}, },
formatDate: function(datestr) { formatDate: function(datestr) {
var options = { var options = {