;; This Source Code Form is subject to the terms of the Mozilla Public ;; License, v. 2.0. If a copy of the MPL was not distributed with this ;; file, You can obtain one at http://mozilla.org/MPL/2.0/. ;; ;; Copyright (c) KALEIDOS INC (ns app.plugins "RPC for plugins runtime." (:require [app.main.features :as features] [app.main.store :as st] [app.plugins.api :as api] [app.plugins.public-utils] [app.plugins.register :as register] [app.util.globals :refer [global]] [app.util.object :as obj] [beicon.v2.core :as rx] [potok.v2.core :as ptk])) (defn init-plugins-runtime! [] (when-let [init-runtime (obj/get global "initPluginsRuntime")] (register/init) (init-runtime (fn [plugin-id] (api/create-context plugin-id))))) (defn initialize [] (ptk/reify ::initialize ptk/WatchEvent (watch [_ _ stream] (->> stream (rx/filter (ptk/type? ::features/initialize)) (rx/observe-on :async) (rx/filter #(features/active-feature? @st/state "plugins/runtime")) (rx/take 1) (rx/tap init-plugins-runtime!) (rx/ignore)))))