mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
rename/move feeds
This commit is contained in:
parent
d0ba3a0f38
commit
1591cdd624
@ -93,6 +93,11 @@ type NewFeed struct {
|
||||
FolderID *int64 `json:"folder_id,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateFeed struct {
|
||||
Title *string `json:"title,omitempty"`
|
||||
FolderID *int64 `json:"folder_id,omitempty"`
|
||||
}
|
||||
|
||||
func FeedListHandler(rw http.ResponseWriter, req *http.Request) {
|
||||
if req.Method == "GET" {
|
||||
list := db(req).ListFeeds()
|
||||
@ -177,13 +182,29 @@ func createFeed(s *storage.Storage, url string, folderId *int64) error {
|
||||
}
|
||||
|
||||
func FeedHandler(rw http.ResponseWriter, req *http.Request) {
|
||||
if req.Method == "DELETE" {
|
||||
id, err := strconv.ParseInt(Vars(req)["id"], 10, 64)
|
||||
if err != nil {
|
||||
id, err := strconv.ParseInt(Vars(req)["id"], 10, 64)
|
||||
if err != nil {
|
||||
rw.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if req.Method == "PUT" {
|
||||
var body UpdateFeed
|
||||
if err := json.NewDecoder(req.Body).Decode(&body); err != nil {
|
||||
log.Print(err)
|
||||
rw.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if body.Title != nil {
|
||||
db(req).RenameFeed(id, *body.Title)
|
||||
}
|
||||
if body.FolderID != nil {
|
||||
db(req).UpdateFeedFolder(id, *body.FolderID)
|
||||
}
|
||||
rw.WriteHeader(http.StatusOK)
|
||||
} else if req.Method == "DELETE" {
|
||||
db(req).DeleteFeed(id)
|
||||
rw.WriteHeader(http.StatusNoContent)
|
||||
} else {
|
||||
rw.WriteHeader(http.StatusMethodNotAllowed)
|
||||
}
|
||||
}
|
||||
|
@ -21,6 +21,9 @@
|
||||
create: function(data) {
|
||||
return api('post', '/api/feeds', data).then(json)
|
||||
},
|
||||
update: function(id, data) {
|
||||
return api('put', '/api/feeds/' + id, data)
|
||||
},
|
||||
delete: function(id) {
|
||||
return api('delete', '/api/feeds/' + id)
|
||||
}
|
||||
|
@ -76,7 +76,10 @@ var vm = new Vue({
|
||||
return d.getDate() + '/' + d.getMonth() + '/' + d.getFullYear()
|
||||
},
|
||||
moveFeed: function(feed, folder) {
|
||||
feed.folder_id = folder ? folder.id : null
|
||||
var folder_id = folder ? folder.id : null
|
||||
api.feeds.update(feed.id, {folder_id: folder_id}).then(function() {
|
||||
feed.folder_id = folder_id
|
||||
})
|
||||
},
|
||||
createFolder: function(event) {
|
||||
var form = event.target
|
||||
@ -99,7 +102,9 @@ var vm = new Vue({
|
||||
},
|
||||
renameFeed: function(feed) {
|
||||
var newTitle = prompt('Enter new title', feed.title)
|
||||
feed.title = newTitle
|
||||
api.feeds.update(feed.id, {title: newTitle}).then(function() {
|
||||
feed.title = newTitle
|
||||
})
|
||||
},
|
||||
deleteFeed: function(feed) {
|
||||
if (confirm('Are you sure you want to delete ' + feed.title + '?')) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user