diff --git a/pkg/api/api.go b/pkg/api/api.go index 8a722aa..b2b0f1a 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -82,6 +82,7 @@ func NewAPI(config Config) (*API, error) { apiMux.HandleFunc("/delete_file", api.HandleDeleteFile) apiMux.HandleFunc("/update_filename", api.HandleUpdateFilename) apiMux.HandleFunc("/reset_filename", api.HandleResetFilename) + apiMux.HandleFunc("/reset_foldername", api.HandleResetFoldername) // feedback apiMux.HandleFunc("/feedback", api.HandleFeedback) apiMux.HandleFunc("/get_feedbacks", api.HandleGetFeedbacks) diff --git a/pkg/api/handle_manage_folder.go b/pkg/api/handle_manage_folder.go new file mode 100644 index 0000000..ffecaee --- /dev/null +++ b/pkg/api/handle_manage_folder.go @@ -0,0 +1,34 @@ +package api + +import ( + "encoding/json" + "net/http" +) + +type ResetFoldernameRequest struct { + ID int64 `json:"id"` +} + +func (api *API) HandleResetFoldername(w http.ResponseWriter, r *http.Request) { + // check admin + err := api.CheckAdmin(w, r) + if err != nil { + api.HandleError(w, r, err) + return + } + + req := &ResetFoldernameRequest{} + err = json.NewDecoder(r.Body).Decode(req) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + err = api.Db.ResetFoldername(req.ID) + if err != nil { + api.HandleError(w, r, err) + return + } + + api.HandleOK(w, r) +} diff --git a/pkg/database/method.go b/pkg/database/method.go index 98afea7..9c14340 100644 --- a/pkg/database/method.go +++ b/pkg/database/method.go @@ -383,3 +383,17 @@ func (database *Database) ResetFilename(fileId int64) error { } return nil } + +func (database *Database) ResetFoldername(folderId int64) error { + folder, err := database.GetFolder(folderId) + if err != nil { + return err + } + + foldername := filepath.Base(folder.Folder) + err = database.UpdateFoldername(folderId, foldername) + if err != nil { + return err + } + return nil +} diff --git a/web/src/component/FilesInFolder.js b/web/src/component/FilesInFolder.js index 52af466..090d435 100644 --- a/web/src/component/FilesInFolder.js +++ b/web/src/component/FilesInFolder.js @@ -76,6 +76,29 @@ function FilesInFolder(props) { }); } + function resetFoldername() { + setIsLoading(true); + fetch("/api/v1/reset_foldername", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + id: parseInt(params.id), + }), + }) + .then((response) => response.json()) + .then((data) => { + if (data.error) { + alert(data.error); + } else { + refresh(); + } + }) + .catch((error) => alert(error)) + .finally(() => { + setIsLoading(false); + }); + } + return (

Files in Folder

@@ -93,7 +116,10 @@ function FilesInFolder(props) { value={newFoldername} onChange={(e) => setNewFoldername(e.target.value)} /> +
+ +
);