-
Notifications
You must be signed in to change notification settings - Fork 14
/
game_views.cljs
37 lines (35 loc) · 1.22 KB
/
game_views.cljs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(ns zetawar.system.game-views
(:require
[integrant.core :as ig]
[posh.reagent :as posh]
[tongue.core :as tongue]
[zetawar.data :as data]
[zetawar.logging :as log]
[zetawar.router :as router]))
;; TODO: start Reagent components when running in the browser
(defmethod ig/init-key :zetawar.system/game-views [_ opts]
(let [{:keys [datascript router locale]} opts
{:keys [conn]} datascript
{:keys [ev-chan]} router
dispatch #(router/dispatch ev-chan %)
translate (-> data/dicts
tongue/build-translate
(partial locale))]
(posh/posh! conn)
{:conn conn
:dispatch dispatch
:translate translate}))
(defmethod ig/resume-key :zetawar.system/game-views [_ opts old-opts old-impl]
(let [{:keys [datascript router locale]} opts
{:keys [conn]} datascript
{:keys [ev-chan]} router
old-conn (get-in old-opts [:datascript :conn])
dispatch #(router/dispatch ev-chan %)
translate (-> data/dicts
tongue/build-translate
(partial locale))]
(when-not (= conn old-conn)
(posh/posh! conn))
{:conn conn
:dispatch dispatch
:translate translate}))