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

View File

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

View File

@ -38,7 +38,7 @@
</label>
</div>
<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">
<img src="./static/images/layers.svg" alt="" class="nav-icon">
<span class="flex-fill text-left text-truncate">All Feeds</span>

View File

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