Skip to content

Commit

Permalink
Use lib for a shared code
Browse files Browse the repository at this point in the history
  • Loading branch information
nenadalm committed Jan 24, 2024
1 parent 0fa2e8b commit 2b6dbda
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 119 deletions.
3 changes: 2 additions & 1 deletion deps.edn
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
re-frame/re-frame {:mvn/version "1.4.2"}
metosin/jsonista {:mvn/version "0.3.8"}
day8.re-frame/re-frame-10x {:mvn/version "1.9.3"}
thheller/shadow-cljs {:mvn/version "2.26.2"}}
thheller/shadow-cljs {:mvn/version "2.26.2"}
io.github.nenadalm/clojure-utils {:git/sha "42cbaa203eff28afe99512164874c9b57d750ba0" :git/url "https://github.com/nenadalm/clojure-tools.git"}}
:aliases
{:dev {:extra-paths ["dev"]}
:cljfmt {:extra-deps {cljfmt/cljfmt {:mvn/version "0.9.2"}}
Expand Down
4 changes: 2 additions & 2 deletions shadow-cljs.edn
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
:compiler-options {:source-map true}
:dev {:closure-defines {"re_frame.trace.trace_enabled_QMARK_" true}}
:release {:module-hash-names true}
:devtools {:preloads [day8.re-frame-10x.preload]}
:build-hooks [(build.hook/hook)]
:devtools {:preloads [day8.re-frame-10x.preload.react-18]}
:build-hooks [(build.hook/hook {:public-dir "resources/public"})]
:target :browser}
:test {:target :node-test
:output-to "target/node-test.js"
Expand Down
51 changes: 0 additions & 51 deletions src/app/autosave.cljs

This file was deleted.

19 changes: 3 additions & 16 deletions src/app/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
[app.config :as config]
[app.views :as views]
[app.events :as events]
[app.autosave :as autosave]))
[nenadalm.clojure-utils.re-frame.autosave :as autosave]
[nenadalm.clojure-utils.cljs :as cljs-utils]))

(defn mount-root []
(re-frame/clear-subscription-cache!)
Expand All @@ -25,24 +26,10 @@
(when-not config/debug?
(register-worker)))

(defn- prevent-screen-lock []
(when-some [wake-lock (.-wakeLock js/navigator)]
(-> wake-lock
(.request "screen")
(.then (fn []
(js/document.addEventListener
"visibilitychange"
(fn [_]
(when (= "visible" (.-visibilityState js/document))
(-> wake-lock
(.request "screen")
(.catch (fn [_] (js/alert "Cannot prevent screen from locking.")))))))))
(.catch (fn [_] (js/alert "Cannot prevent screen from locking."))))))

(defn ^:export init []
(dev-setup)
(prod-setup)
(prevent-screen-lock)
(cljs-utils/prevent-screen-lock)
(autosave/init "nenadalm.life-counter/autosave")
(re-frame/dispatch-sync [::events/init])
(mount-root))
Expand Down
10 changes: 3 additions & 7 deletions src/app/events.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
[clojure.edn :as edn]
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[app.util :as u]))
[app.util :as u]
[nenadalm.clojure-utils.cljs :as cljs-utils]))

(defn- animation-interval
"https://gist.github.com/jakearchibald/cb03f15670817001b1157e62a076fe95"
Expand Down Expand Up @@ -41,12 +42,7 @@
(re-frame/reg-cofx
:app-version
(fn [coeffects _]
(assoc coeffects
:app-version
(or (some-> "meta[name=app-version]"
js/document.querySelector
(.getAttribute "content"))
"unknown"))))
(assoc coeffects :app-version (cljs-utils/app-version))))

(re-frame/reg-cofx
:settings
Expand Down
52 changes: 10 additions & 42 deletions src/build/hook.clj
Original file line number Diff line number Diff line change
Expand Up @@ -4,50 +4,18 @@
[build.create-manifest]
[build.create-index]
[build.create-worker]
[build.util :as u]))

(defn- file->output-name [build-state]
(-> (group-by (fn [m]
(str "js/" (m :module-name))) (:shadow.build.closure/modules build-state))
(update-vals (fn [coll]
(str "js/" (-> coll first :output-name))))))

(defn- path [s]
(java.nio.file.Paths/get s (make-array java.lang.String 0)))

(defn- symlink [link target]
(let [link-path (path link)
target-rel (.relativize (.getParent link-path)
(path target))]
(.mkdirs (.toFile (.getParent link-path)))
(java.nio.file.Files/createSymbolicLink link-path target-rel (make-array java.nio.file.attribute.FileAttribute 0))))

(defn- copy [src target]
(let [target-f (io/file target)]
(.mkdirs (.getParentFile target-f))
(io/copy
(io/file src)
target-f)))

(defn- create-styles [build-mode]
(let [src "resources/private/css/styles.css"]
(case build-mode
:release
(let [hash (u/file-hash src)
target (str "resources/public/css/styles." hash ".css")]
(copy src target)
{"css/styles.css" (str "css/styles." hash ".css")})
(do
(symlink "resources/public/css/styles.css" src)
{}))))
[nenadalm.clojure-utils.assets :as assets]))

(defn hook
{:shadow.build/stage :flush}
[build-state & _args]
[build-state {:keys [public-dir]}]
(when-not (.exists (io/file "resources/public/worker.js"))
(let [outputs (merge (file->output-name build-state)
(create-styles (:shadow.build/mode build-state)))]
(spit "resources/public/manifest.json" (build.create-manifest/render outputs))
(spit "resources/public/index.html" (build.create-index/render outputs))
(spit "resources/public/worker.js" (build.create-worker/render outputs))))
(let [assets (merge (assets/from-modules build-state {:public-dir public-dir})
(assets/create
build-state
{:public-dir public-dir
:assets {"css/styles.css" "resources/private/css/styles.css"}}))]
(spit "resources/public/manifest.json" (build.create-manifest/render assets))
(spit "resources/public/index.html" (build.create-index/render assets))
(spit "resources/public/worker.js" (build.create-worker/render assets))))
build-state)

0 comments on commit 2b6dbda

Please sign in to comment.