mirror of
https://github.com/penpot/penpot.git
synced 2025-06-09 14:12:34 +02:00
🐛 Set correct modification date on projects on file move operation
This commit is contained in:
parent
21430cbd7d
commit
1f98b168ba
2 changed files with 20 additions and 6 deletions
|
@ -28,7 +28,8 @@
|
||||||
[app.util.services :as sv]
|
[app.util.services :as sv]
|
||||||
[app.util.time :as dt]
|
[app.util.time :as dt]
|
||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
[clojure.walk :as walk]))
|
[clojure.walk :as walk]
|
||||||
|
[promesa.exec :as px]))
|
||||||
|
|
||||||
;; --- COMMAND: Duplicate File
|
;; --- COMMAND: Duplicate File
|
||||||
|
|
||||||
|
@ -322,6 +323,18 @@
|
||||||
;; delete possible broken relations on moved files
|
;; delete possible broken relations on moved files
|
||||||
(db/exec-one! conn [sql:delete-broken-relations pids])
|
(db/exec-one! conn [sql:delete-broken-relations pids])
|
||||||
|
|
||||||
|
;; Update the modification date of the all affected projects
|
||||||
|
;; ensuring that the destination project is the most recent one.
|
||||||
|
(doseq [project-id (into (list project-id) source)]
|
||||||
|
|
||||||
|
;; NOTE: as this is executed on virtual thread, sleeping does
|
||||||
|
;; not causes major issues, and allows an easy way to set a
|
||||||
|
;; trully different modification date to each file.
|
||||||
|
(px/sleep 10)
|
||||||
|
(db/update! conn :project
|
||||||
|
{:modified-at (dt/now)}
|
||||||
|
{:id project-id}))
|
||||||
|
|
||||||
nil))
|
nil))
|
||||||
|
|
||||||
(s/def ::ids (s/every ::us/uuid :kind set?))
|
(s/def ::ids (s/every ::us/uuid :kind set?))
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
[app.common.data.macros :as dm]
|
[app.common.data.macros :as dm]
|
||||||
[app.common.pages :as cp]
|
[app.common.pages :as cp]
|
||||||
[app.common.schema :as sm]
|
[app.common.schema :as sm]
|
||||||
[app.common.time :as dt]
|
|
||||||
[app.common.uri :as u]
|
[app.common.uri :as u]
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
[app.config :as cf]
|
[app.config :as cf]
|
||||||
|
@ -23,6 +22,7 @@
|
||||||
[app.util.dom :as dom]
|
[app.util.dom :as dom]
|
||||||
[app.util.i18n :as i18n :refer [tr]]
|
[app.util.i18n :as i18n :refer [tr]]
|
||||||
[app.util.router :as rt]
|
[app.util.router :as rt]
|
||||||
|
[app.util.time :as dt]
|
||||||
[app.util.timers :as tm]
|
[app.util.timers :as tm]
|
||||||
[app.util.webapi :as wapi]
|
[app.util.webapi :as wapi]
|
||||||
[beicon.core :as rx]
|
[beicon.core :as rx]
|
||||||
|
@ -863,6 +863,7 @@
|
||||||
[{:keys [ids project-id] :as params}]
|
[{:keys [ids project-id] :as params}]
|
||||||
(dm/assert! (sm/set-of-uuid? ids))
|
(dm/assert! (sm/set-of-uuid? ids))
|
||||||
(dm/assert! (uuid? project-id))
|
(dm/assert! (uuid? project-id))
|
||||||
|
|
||||||
(ptk/reify ::move-files
|
(ptk/reify ::move-files
|
||||||
IDeref
|
IDeref
|
||||||
(-deref [_]
|
(-deref [_]
|
||||||
|
@ -872,13 +873,13 @@
|
||||||
ptk/UpdateEvent
|
ptk/UpdateEvent
|
||||||
(update [_ state]
|
(update [_ state]
|
||||||
(let [origin-project (get-in state [:dashboard-files (first ids) :project-id])
|
(let [origin-project (get-in state [:dashboard-files (first ids) :project-id])
|
||||||
update-project (fn [project]
|
update-project (fn [project delta]
|
||||||
(-> project
|
(-> project
|
||||||
(update :count #(+ % (count ids)))
|
(update :count #(+ % (count ids)))
|
||||||
(assoc :modified-at (dt/now))))]
|
(assoc :modified-at (dt/plus (dt/now) {:milliseconds delta}))))]
|
||||||
(-> state
|
(-> state
|
||||||
(d/update-in-when [:dashboard-projects origin-project] update-project)
|
(d/update-in-when [:dashboard-projects origin-project] update-project 0)
|
||||||
(d/update-in-when [:dashboard-projects project-id] update-project))))
|
(d/update-in-when [:dashboard-projects project-id] update-project 10))))
|
||||||
|
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [_ _ _]
|
(watch [_ _ _]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue