mirror of
https://github.com/penpot/penpot.git
synced 2025-05-06 04:55:52 +02:00
🐛 Fix shared token link creation.
This commit is contained in:
parent
7ceb9b4009
commit
f314efdfdc
2 changed files with 50 additions and 47 deletions
|
@ -71,11 +71,14 @@
|
||||||
(ptk/reify ::initialize
|
(ptk/reify ::initialize
|
||||||
ptk/UpdateEvent
|
ptk/UpdateEvent
|
||||||
(update [_ state]
|
(update [_ state]
|
||||||
(update state :viewer-local
|
(-> state
|
||||||
(fn [lstate]
|
(assoc :current-file-id file-id)
|
||||||
(if (nil? lstate)
|
(assoc :current-page-id page-id)
|
||||||
default-local-state
|
(update :viewer-local
|
||||||
lstate))))
|
(fn [lstate]
|
||||||
|
(if (nil? lstate)
|
||||||
|
default-local-state
|
||||||
|
lstate)))))
|
||||||
|
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [_ state stream]
|
(watch [_ state stream]
|
||||||
|
@ -98,9 +101,35 @@
|
||||||
:file-id file-id}
|
:file-id file-id}
|
||||||
(string? token) (assoc :token token))]
|
(string? token) (assoc :token token))]
|
||||||
(->> (rp/query :viewer-bundle params)
|
(->> (rp/query :viewer-bundle params)
|
||||||
(rx/first)
|
|
||||||
(rx/map bundle-fetched))))))
|
(rx/map bundle-fetched))))))
|
||||||
|
|
||||||
|
(defn- extract-frames
|
||||||
|
[objects]
|
||||||
|
(let [root (get objects uuid/zero)]
|
||||||
|
(into [] (comp (map #(get objects %))
|
||||||
|
(filter #(= :frame (:type %))))
|
||||||
|
(reverse (:shapes root)))))
|
||||||
|
|
||||||
|
(defn bundle-fetched
|
||||||
|
[{:keys [project file page share-token token libraries users] :as bundle}]
|
||||||
|
(us/verify ::bundle bundle)
|
||||||
|
(ptk/reify ::file-fetched
|
||||||
|
ptk/UpdateEvent
|
||||||
|
(update [_ state]
|
||||||
|
(let [objects (:objects page)
|
||||||
|
frames (extract-frames objects)
|
||||||
|
users (map #(avatars/assoc-avatar % :fullname) users)]
|
||||||
|
(assoc state
|
||||||
|
:viewer-libraries (d/index-by :id libraries)
|
||||||
|
:viewer-data {:project project
|
||||||
|
:objects objects
|
||||||
|
:users (d/index-by :id users)
|
||||||
|
:file file
|
||||||
|
:page page
|
||||||
|
:frames frames
|
||||||
|
:token token
|
||||||
|
:share-token share-token})))))
|
||||||
|
|
||||||
(defn fetch-comment-threads
|
(defn fetch-comment-threads
|
||||||
[{:keys [file-id page-id] :as params}]
|
[{:keys [file-id page-id] :as params}]
|
||||||
(letfn [(fetched [data state]
|
(letfn [(fetched [data state]
|
||||||
|
@ -135,56 +164,30 @@
|
||||||
(->> (rp/query :comments {:thread-id thread-id})
|
(->> (rp/query :comments {:thread-id thread-id})
|
||||||
(rx/map #(partial fetched %)))))))
|
(rx/map #(partial fetched %)))))))
|
||||||
|
|
||||||
(defn- extract-frames
|
(defn create-share-link
|
||||||
[objects]
|
[]
|
||||||
(let [root (get objects uuid/zero)]
|
|
||||||
(->> (:shapes root)
|
|
||||||
(map #(get objects %))
|
|
||||||
(filter #(= :frame (:type %)))
|
|
||||||
(reverse)
|
|
||||||
(vec))))
|
|
||||||
|
|
||||||
(defn bundle-fetched
|
|
||||||
[{:keys [project file page share-token token libraries users] :as bundle}]
|
|
||||||
(us/verify ::bundle bundle)
|
|
||||||
(ptk/reify ::file-fetched
|
|
||||||
ptk/UpdateEvent
|
|
||||||
(update [_ state]
|
|
||||||
(let [objects (:objects page)
|
|
||||||
frames (extract-frames objects)
|
|
||||||
users (map #(avatars/assoc-avatar % :fullname) users)]
|
|
||||||
(-> state
|
|
||||||
(assoc :viewer-libraries (d/index-by :id libraries)
|
|
||||||
:viewer-data {:project project
|
|
||||||
:objects objects
|
|
||||||
:users (d/index-by :id users)
|
|
||||||
:file file
|
|
||||||
:page page
|
|
||||||
:frames frames
|
|
||||||
:token token
|
|
||||||
:share-token share-token}))))))
|
|
||||||
|
|
||||||
(def create-share-link
|
|
||||||
(ptk/reify ::create-share-link
|
(ptk/reify ::create-share-link
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [_ state stream]
|
(watch [_ state stream]
|
||||||
(let [file-id (get-in state [:viewer-local :file-id])
|
(let [file-id (:current-file-id state)
|
||||||
page-id (get-in state [:viewer-local :page-id])]
|
page-id (:current-page-id state)]
|
||||||
(->> (rp/mutation! :create-file-share-token {:file-id file-id
|
(->> (rp/mutation! :create-file-share-token {:file-id file-id
|
||||||
:page-id page-id})
|
:page-id page-id})
|
||||||
(rx/map (fn [{:keys [token]}]
|
(rx/map (fn [{:keys [token]}]
|
||||||
#(assoc-in % [:viewer-data :share-token] token))))))))
|
#(assoc-in % [:viewer-data :share-token] token))))))))
|
||||||
|
|
||||||
(def delete-share-link
|
(defn delete-share-link
|
||||||
|
[]
|
||||||
(ptk/reify ::delete-share-link
|
(ptk/reify ::delete-share-link
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [_ state stream]
|
(watch [_ state stream]
|
||||||
(let [file-id (get-in state [:viewer-local :file-id])
|
(let [file-id (:current-file-id state)
|
||||||
page-id (get-in state [:viewer-local :page-id])
|
page-id (:current-page-id state)
|
||||||
token (get-in state [:viewer-data :share-token])]
|
token (get-in state [:viewer-data :share-token])
|
||||||
(->> (rp/mutation :delete-file-share-token {:file-id file-id
|
params {:file-id file-id
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
:token token})
|
:token token}]
|
||||||
|
(->> (rp/mutation :delete-file-share-token params)
|
||||||
(rx/map (fn [_] #(update % :viewer-data dissoc :share-token))))))))
|
(rx/map (fn [_] #(update % :viewer-data dissoc :share-token))))))))
|
||||||
|
|
||||||
;; --- Zoom Management
|
;; --- Zoom Management
|
||||||
|
|
|
@ -60,8 +60,8 @@
|
||||||
dropdown-ref (mf/use-ref)
|
dropdown-ref (mf/use-ref)
|
||||||
locale (mf/deref i18n/locale)
|
locale (mf/deref i18n/locale)
|
||||||
|
|
||||||
create #(st/emit! dv/create-share-link)
|
create (st/emitf (dv/create-share-link))
|
||||||
delete #(st/emit! dv/delete-share-link)
|
delete (st/emitf (dv/delete-share-link))
|
||||||
|
|
||||||
href (.-href js/location)
|
href (.-href js/location)
|
||||||
href (subs href 0 (str/index-of href "?"))
|
href (subs href 0 (str/index-of href "?"))
|
||||||
|
|
Loading…
Add table
Reference in a new issue