Integrate objects-map and introduce file feature flags

This commit is contained in:
Andrey Antukh 2022-10-06 18:47:16 +02:00 committed by Andrés Moya
parent 69f084e1df
commit 951b3eb4fe
21 changed files with 406 additions and 264 deletions

View file

@ -765,9 +765,14 @@
(let [{:keys [on-success on-error]
:or {on-success identity
on-error rx/throw}} (meta params)
name (name (gensym (str (tr "dashboard.new-file-prefix") " ")))
components-v2 (features/active-feature? state :components-v2)
params (assoc params :name name :components-v2 components-v2)]
name (name (gensym (str (tr "dashboard.new-file-prefix") " ")))
features (cond-> #{}
(features/active-feature? state :components-v2)
(conj "components/v2"))
params (-> params
(assoc :name name)
(assoc :features features))]
(->> (rp/mutation! :create-file params)
(rx/tap on-success)

View file

@ -7,6 +7,7 @@
(ns app.main.data.workspace.persistence
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
[app.common.logging :as log]
[app.common.pages :as cp]
[app.common.pages.changes-spec :as pcs]
@ -137,14 +138,16 @@
(ptk/reify ::persist-changes
ptk/WatchEvent
(watch [_ state _]
(let [components-v2 (features/active-feature? state :components-v2)
sid (:session-id state)
file (get state :workspace-file)
params {:id (:id file)
:revn (:revn file)
:session-id sid
:changes-with-metadata (into [] changes)
:components-v2 components-v2}]
(let [features (cond-> #{}
(features/active-feature? state :components-v2)
(conj "components/v2"))
sid (:session-id state)
file (get state :workspace-file)
params {:id (:id file)
:revn (:revn file)
:session-id sid
:changes-with-metadata (into [] changes)
:features features}]
(when (= file-id (:id params))
(->> (rp/mutation :update-file params)
@ -180,15 +183,17 @@
(ptk/reify ::persist-synchronous-changes
ptk/WatchEvent
(watch [_ state _]
(let [components-v2 (features/active-feature? state :components-v2)
sid (:session-id state)
file (get-in state [:workspace-libraries file-id])
(let [features (cond-> #{}
(features/active-feature? state :components-v2)
(conj "components/v2"))
sid (:session-id state)
file (dm/get-in state [:workspace-libraries file-id])
params {:id (:id file)
:revn (:revn file)
:session-id sid
:changes changes
:components-v2 components-v2}]
:features features}]
(when (:id params)
(->> (rp/mutation :update-file params)
@ -220,6 +225,9 @@
(ptk/reify ::changes-persisted
ptk/UpdateEvent
(update [_ state]
;; NOTE: we don't set the file features context here because
;; there are no useful context for code that need to be executed
;; on the frontend side
(let [changes (group-by :page-id changes)]
(if (= file-id (:current-file-id state))
(-> state
@ -238,7 +246,6 @@
(update-in [:workspace-libraries file-id :data]
cp/process-changes changes)))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Data Fetching & Uploading
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -278,8 +285,11 @@
ptk/WatchEvent
(watch [_ state _]
(let [share-id (-> state :viewer-local :share-id)
components-v2 (features/active-feature? state :components-v2)]
(->> (rx/zip (rp/query! :file-raw {:id file-id :components-v2 components-v2})
features (cond-> #{}
(features/active-feature? state :components-v2)
(conj "components/v2"))]
(->> (rx/zip (rp/query! :file-raw {:id file-id :features features})
(rp/query! :team-users {:file-id file-id})
(rp/query! :project {:id project-id})
(rp/query! :file-libraries {:file-id file-id})

View file

@ -72,4 +72,3 @@
(doseq [f features-list]
(when (not= f :components-v2)
(toggle-feature! f)))))