mirror of
				https://github.com/nkanaev/yarr.git
				synced 2025-10-29 22:29:59 +00:00 
			
		
		
		
	store feed list state
This commit is contained in:
		| @@ -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) | ||||||
|   | |||||||
| @@ -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, | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -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> | ||||||
|   | |||||||
| @@ -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 = { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user