From 341bb8495a53023bd17f326990e4c2e8e72e05f9 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 29 Jan 2021 13:00:03 +0100 Subject: [PATCH] :sparkles: Improve globals handling on fronted application. --- common/app/common/version.cljc | 35 +++++++++--------- frontend/resources/templates/index.mustache | 8 ++-- frontend/src/app/config.cljs | 41 +++++++++++---------- frontend/src/app/main.cljs | 11 +++--- frontend/src/app/util/globals.js | 2 + 5 files changed, 49 insertions(+), 48 deletions(-) diff --git a/common/app/common/version.cljc b/common/app/common/version.cljc index 9257d9587..08ccd4b6f 100644 --- a/common/app/common/version.cljc +++ b/common/app/common/version.cljc @@ -13,28 +13,27 @@ [app.common.data :as d] [cuerdas.core :as str])) +(def version-re #"^(([A-Za-z]+)\-?)?(\d+\.\d+\.\d+)(\-?((alpha|prealpha|beta|rc)(\d+)?))?(\-?(\d+))?(\-?(\w+))$") + (defn parse - [version] + [data] (cond - (= version "%version%") + (= data "%version%") {:full "develop" :base "develop" - :build 0 - :commit nil} + :branch "develop" + :modifier nil + :commit nil + :commit-hash nil} - (string? version) - (if (re-seq #"^[A-Za-z]+\-" version) - (let [[branch base build commit] (str/split version #"-" 4)] - {:full version - :base base - :build (d/parse-integer build) - :branch branch - :commit commit}) - (let [[base build commit] (str/split version #"-" 3)] - {:full version - :base base - :build (d/parse-integer build) - :branch nil - :commit commit})) + (string? data) + (let [result (re-find version-re data)] + {:full data + :base (get result 3) + :branch (get result 2) + :modifier (get result 5) + :commit (get result 9) + :commit-hash (get result 11)}) :else nil)) + diff --git a/frontend/resources/templates/index.mustache b/frontend/resources/templates/index.mustache index 1000cd746..eba4259ab 100644 --- a/frontend/resources/templates/index.mustache +++ b/frontend/resources/templates/index.mustache @@ -10,13 +10,13 @@ {{# manifest}} - + {{/manifest}} diff --git a/frontend/src/app/config.cljs b/frontend/src/app/config.cljs index 8fe724aef..482bed0d8 100644 --- a/frontend/src/app/config.cljs +++ b/frontend/src/app/config.cljs @@ -13,7 +13,7 @@ [app.common.data :as d] [app.common.spec :as us] [app.common.version :as v] - [app.util.globals :as globals] + [app.util.globals :refer [global location]] [app.util.object :as obj] [app.util.dom :as dom] [app.util.avatars :as avatars] @@ -40,10 +40,10 @@ (defn- parse-platform [] - (let [user-agent (-> (dom/get-user-agent) str/lower) + (let [user-agent (str/lower (dom/get-user-agent)) check-windows? (fn [] (str/includes? user-agent "windows")) - check-linux? (fn [] (str/includes? user-agent "linux")) - check-macos? (fn [] (str/includes? user-agent "mac os"))] + check-linux? (fn [] (str/includes? user-agent "linux")) + check-macos? (fn [] (str/includes? user-agent "mac os"))] (cond (check-windows?) :windows (check-linux?) :linux @@ -58,29 +58,30 @@ (defn- parse-version [global] - (-> (obj/get global "appVersion") + (-> (obj/get global "penpotVersion") (v/parse))) ;; --- Globar Config Vars (def default-theme "default") +(def default-language "en") -(this-as global - (def default-language "en") - (def demo-warning (obj/get global "appDemoWarning" false)) - (def google-client-id (obj/get global "appGoogleClientID" nil)) - (def gitlab-client-id (obj/get global "appGitlabClientID" nil)) - (def github-client-id (obj/get global "appGithubClientID" nil)) - (def login-with-ldap (obj/get global "appLoginWithLDAP" false)) - (def worker-uri (obj/get global "appWorkerURI" "/js/worker.js")) - (def public-uri (or (obj/get global "appPublicURI") - (.-origin ^js globals/location))) - (def media-uri (str public-uri "/assets")) - (def version (delay (parse-version global))) - (def target (delay (parse-target global))) - (def browser (delay (parse-browser))) - (def platform (delay (parse-platform)))) +(def demo-warning (obj/get global "penpotDemoWarning" false)) +(def allow-demo-users (obj/get global "penpotAllowDemoUsers" true)) +(def google-client-id (obj/get global "penpotGoogleClientID" nil)) +(def gitlab-client-id (obj/get global "penpotGitlabClientID" nil)) +(def github-client-id (obj/get global "penpotGithubClientID" nil)) +(def login-with-ldap (obj/get global "penpotLoginWithLDAP" false)) +(def worker-uri (obj/get global "penpotWorkerURI" "/js/worker.js")) +(def translations (obj/get global "penpotTranslations")) +(def themes (obj/get global "penpotThemes")) +(def public-uri (or (obj/get global "penpotPublicURI") (.-origin ^js location))) + +(def version (delay (parse-version global))) +(def target (delay (parse-target global))) +(def browser (delay (parse-browser))) +(def platform (delay (parse-platform))) (when (= :browser @target) (js/console.log diff --git a/frontend/src/app/main.cljs b/frontend/src/app/main.cljs index 56508548a..52c33ff2d 100644 --- a/frontend/src/app/main.cljs +++ b/frontend/src/app/main.cljs @@ -9,6 +9,7 @@ (ns app.main (:require + [app.config :as cfg] [app.common.uuid :as uuid] [app.common.spec :as us] [app.main.repo :as rp] @@ -86,12 +87,10 @@ (defn ^:export init [] - (let [translations (obj/get js/window "appTranslations") - themes (obj/get js/window "appThemes")] - (i18n/init! translations) - (theme/init! themes) - (st/init) - (init-ui))) + (i18n/init! cfg/translations) + (theme/init! cfg/themes) + (st/init) + (init-ui)) (defn reinit [] diff --git a/frontend/src/app/util/globals.js b/frontend/src/app/util/globals.js index de4539840..4b3a2933f 100644 --- a/frontend/src/app/util/globals.js +++ b/frontend/src/app/util/globals.js @@ -21,6 +21,8 @@ goog.provide("app.util.globals"); goog.scope(function() { + app.util.globals.global = goog.global; + app.util.globals.window = (function() { if (typeof goog.global.window !== "undefined") { return goog.global.window;