summaryrefslogtreecommitdiff
path: root/portal.clj
diff options
context:
space:
mode:
authorJake Zerrer <him@jakezerrer.com>2025-10-14 16:19:09 -0400
committerJake Zerrer <him@jakezerrer.com>2025-10-15 13:35:06 -0400
commitaedd0df6c2c61b6ef42d610017f066e3d10233dd (patch)
treefbcfc891b04e876caf67a7c080903d3ac9823135 /portal.clj
parent756b4e6ceb360e8d5e93a2bde712aa46cda61d85 (diff)
Move flow portal capture to new ns
Diffstat (limited to 'portal.clj')
-rw-r--r--portal.clj25
1 files changed, 12 insertions, 13 deletions
diff --git a/portal.clj b/portal.clj
index ce05eb8..2e20bdf 100644
--- a/portal.clj
+++ b/portal.clj
@@ -48,19 +48,18 @@
(def >portal-ui
(m/ap
+ (let [ui (m/? (m/via m/blk ((requiring-resolve 'portal.api/open))))]
+ (m/amb= ui
+ (try (m/? m/never)
+ (finally
+ ;; Were this blocking, I would put this on m/blk
+ ((requiring-resolve 'portal.api/close) ui)
+ (m/amb)))))))
+
+(def >portal-ui-toggle
+ (m/ap
(when (m/?< >show-portal?)
- (try
- (m/?<
- (m/observe
- (fn [cb]
- ((m/via m/blk ((requiring-resolve 'portal.api/open))) {} {})
- (cb :open)
- (fn []
- ((m/via m/blk
- ((requiring-resolve 'portal.api/close))
- ((requiring-resolve 'portal.api/clear))) {} {})))))
- (catch missionary.Cancelled _
- (m/amb)))
+ (m/?< >portal-ui)
(m/amb))))
(defn cap
@@ -80,5 +79,5 @@
(def >portal-main
"Main entrypoint."
- (m/ap (m/amb= (do (m/?< >portal-ui)
+ (m/ap (m/amb= (do (m/?< >portal-ui-toggle)
(m/amb)))))