diff options
Diffstat (limited to 'portal.clj')
| -rw-r--r-- | portal.clj | 25 |
1 files changed, 12 insertions, 13 deletions
@@ -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))))) |
