Ver Fonte

feat(project): add delete project

defclass há 5 anos atrás
pai
commit
8f9e320bb1
1 ficheiros alterados com 44 adições e 20 exclusões
  1. 44 20
      src/main/frontend/components/publishing.cljs

+ 44 - 20
src/main/frontend/components/publishing.cljs

@@ -37,7 +37,7 @@
           (fn [result]
             (resolve result))
           (fn [error]
-            (log/error :page/http-delete-page-failed error)
+            (log/error :page/http-delete-failed error)
             (reject error)))))))
 
 (defn update-state-and-notify
@@ -57,6 +57,18 @@
             (log/error :project/http-update-failed error)
             (reject error)))))))
 
+(defn delete-project
+  [project-name]
+  (let [url (util/format "%sprojects/%s" config/api project-name)]
+    (js/Promise.
+      (fn [resolve reject]
+        (util/delete url
+          (fn [result]
+            (resolve result))
+          (fn [error]
+            (log/error :project/http-delete-failed error)
+            (reject error)))))))
+
 (defn get-current-project
   [current-repo projects]
   (let [project (some (fn [p]
@@ -80,28 +92,40 @@
        :default-value current-project}]
      (ui/button
        "Save"
-       :on-click
-       (fn [e]
-         (util/stop e)
-         (let [editor (.getElementById js/document "project-editor")
-               v (.-value editor)
-               data {:name v}]
-           (-> (p/let [result (update-project current-project data)]
-                 (when (:result result)
-                   (state/update-current-project :name v)
-                   (notification/show! "Updated project name successfully." :success)
-                   (reset! editor-state :display)))
-               (p/catch
-                 (fn [error]
-                   (notification/show! "Failed to updated project name." :failed)))))))
+       :on-click (fn [e]
+                   (util/stop e)
+                   (let [editor (.getElementById js/document "project-editor")
+                         v (.-value editor)
+                         data {:name v}]
+                     (-> (p/let [result (update-project current-project data)]
+                           (when (:result result)
+                             (state/update-current-project :name v)
+                             (notification/show! "Updated project name successfully." :success)
+                             (reset! editor-state :display)))
+                         (p/catch
+                           (fn [error]
+                             (notification/show! "Failed to updated project name." :failed))))))
+       :background "green")
 
      (ui/button
        "Cancel"
-       :on-click
-       (fn [e]
-         (util/stop e)
-         (reset! editor-state :display)))
-     ]))
+       :on-click (fn [e]
+                   (util/stop e)
+                   (reset! editor-state :display))
+       :background "pink")
+     (ui/button
+       "Delete"
+       :on-click (fn [e]
+                   (util/stop e)
+                   (let [confirm-message
+                         (util/format
+                           "This operation will also delete all publishing under project \"%s\", continue?"
+                           current-project)]
+                    (when (.confirm js/window confirm-message)
+                      (p/let [result (delete-project current-project)]
+                        (when (:result result)
+                          (reset! editor-state :display))))))
+       :background "red")]))
 
 (rum/defcs my-publishing
   < rum/reactive db-mixins/query