1
0
Konstantinos Kaloutas 2 жил өмнө
parent
commit
acd41f71dd

+ 2 - 2
src/main/frontend/extensions/tldraw.cljs

@@ -152,8 +152,8 @@
        (tldraw {:renderers tldraw-renderers
                 :handlers (get-tldraw-handlers page-name)
                 :onMount on-mount
-                :onPersist (fn [app _info]
+                :onPersist (fn [app info]
                              (state/set-state! [:whiteboard/last-persisted-at (state/get-current-repo)] (util/time-ms))
                              (util/profile "tldraw persist"
-                                           (whiteboard-handler/transact-tldr-delta! page-name app)))
+                                           (whiteboard-handler/transact-tldr-delta! page-name app (.-replace info))))
                 :model data})])))

+ 4 - 4
src/main/frontend/handler/whiteboard.cljs

@@ -83,7 +83,7 @@
                            (util/time-ms))}))
 
 (defn- compute-tx
-  [^js app ^js tl-page new-id-nonces db-id-nonces page-name]
+  [^js app ^js tl-page new-id-nonces db-id-nonces page-name transact?]
   (let [assets (js->clj-keywordize (.getCleanUpAssets app))
         new-shapes (.-shapes tl-page)
         shapes-index (map #(gobj/get % "id") new-shapes)
@@ -119,7 +119,7 @@
                            (map #(shape->block % page-name))
                            (map with-timestamps))
      :delete-blocks deleted-shapes-tx
-     :metadata {:whiteboard/transact? true
+     :metadata {:whiteboard/transact? transact?
                 :data {:page-name page-name
                        :deleted-shapes deleted-shapes
                        :new-shapes created-shapes
@@ -127,7 +127,7 @@
                        :prev-changed-blocks prev-changed-blocks}}}))
 
 (defonce *last-shapes-nonce (atom {}))
-(defn transact-tldr-delta! [page-name ^js app]
+(defn transact-tldr-delta! [page-name ^js app replace?]
   (let [tl-page ^js (second (first (.-pages app)))
         shapes (.-shapes ^js tl-page)
         new-id-nonces (set (map (fn [shape]
@@ -139,7 +139,7 @@
                       (set (->> (model/get-whiteboard-id-nonces repo page-name)
                                 (map #(update % :id str)))))
         {:keys [page-block upserted-blocks delete-blocks metadata]}
-        (compute-tx app tl-page new-id-nonces db-id-nonces page-name)
+        (compute-tx app tl-page new-id-nonces db-id-nonces page-name (not replace?))
         tx-data (concat delete-blocks [page-block] upserted-blocks)
         new-shapes (get-in metadata [:data :new-shapes])
         metadata' (cond

+ 1 - 1
tldraw/packages/core/src/lib/TLHistory.ts

@@ -33,7 +33,7 @@ export class TLHistory<S extends TLShape = TLShape, K extends TLEventMap = TLEve
   @action persist = (replace = false) => {
     if (this.isPaused || this.creating) return
     this.app.pages.forEach(page => page.bump()) // Is it ok here?
-    this.app.notify('persist', null)
+    this.app.notify('persist', {replace})
   }
 
   @action undo = () => {

+ 1 - 1
tldraw/packages/core/src/types/types.ts

@@ -155,7 +155,7 @@ export type TLSubscriptionEvent =
     }
   | {
       event: 'persist'
-      info: null
+      info: { replace: boolean }
     }
   | {
       event: 'save'