urbit-browser-manager/gall-app/urbit/app/browsermanager.hoon
2020-12-03 03:19:10 -08:00

80 lines
1.8 KiB
Plaintext

/- browsermanager
/+ *server, default-agent
::
|%
+$ versioned-state
$% [%0 state-0]
==
+$ state-0 $:
[%access count=@]
==
+$ card card:agent:gall
--
^- agent:gall
=<
=* state :- %0
:*
[%access count=0]
==
|_ bol=bowl:gall
+* this .
browsermanager-core +>
cc ~(. browsermanager-core bol)
def ~(. (default-agent this %|) bol)
::
++ on-init
^- (quip card _this)
=/ launcha [%launch-action !>([%add %browsermanager [[%basic 'Browser Manager' '/~browsermanager/img/tile.png' '/~browsermanager'] %.y]])]
=/ filea [%file-server-action !>([%serve-dir /'~browsermanager' /app/browsermanager %.n %.n])]
:_ this
:~ [%pass /srv %agent [our.bol %file-server] %poke filea]
[%pass /browsermanager %agent [our.bol %launch] %poke launcha]
==
::
++ on-watch
|= =path
^- (quip card _this)
?: ?=([%http-response *] path)
`this
?. =(/ path)
(on-watch:def path)
[[%give %fact ~ %json !>(*json)]~ this]
::
++ on-agent on-agent:def
::
++ on-arvo
|= [=wire =sign-arvo]
^- (quip card _this)
?. ?=(%bound +<.sign-arvo)
(on-arvo:def wire sign-arvo)
[~ this]
::
::
++ on-poke
|= [=mark =vase]
^- (quip card _this)
?+ mark
(on-poke:def mark vase)
%noun ~& 'Browser Manager state'
~& state
`this
%browsermanager-action
=/ action !<(action:browsermanager vase)
[(handle-action action) this]
==
++ on-save on-save:def
++ on-load on-load:def
++ on-leave on-leave:def
++ on-peek on-peek:def
++ on-fail on-fail:def
--
:: Helper core
|%
++ handle-action
|= action=action:browsermanager
^- (list card)
~& 'Browser Manager action'
~& >> action
~
--