mirror of
https://github.com/urbit/shrub.git
synced 2024-12-22 18:31:44 +03:00
3be0ab5030
Also cleans up a duplicate case in a ?-.
95 lines
2.3 KiB
Plaintext
95 lines
2.3 KiB
Plaintext
/- spider, grp=group-store, gra=graph-store, met=metadata-store, con=contact-store
|
|
/+ strandio, res=resource
|
|
::
|
|
=* strand strand:spider
|
|
=* raw-poke raw-poke:strandio
|
|
=* scry scry:strandio
|
|
::
|
|
^- thread:spider
|
|
|= arg=vase
|
|
=/ m (strand ,vase)
|
|
^- form:m
|
|
=+ !<([~ =update:grp] arg)
|
|
?. ?=(%remove-group -.update)
|
|
(pure:m !>(~))
|
|
;< =bowl:spider bind:m get-bowl:strandio
|
|
:: tell group host to remove us as member
|
|
::
|
|
;< ~ bind:m
|
|
%+ raw-poke
|
|
[entity.resource.update %group-push-hook]
|
|
:- %group-update
|
|
!> ^- update:grp
|
|
[%remove-members resource.update (silt [our.bowl ~])]
|
|
:: stop serving or syncing group updates
|
|
::
|
|
;< ~ bind:m
|
|
%+ raw-poke
|
|
[our.bowl %group-push-hook]
|
|
:- %push-hook-action
|
|
!>([%remove resource.update])
|
|
;< ~ bind:m
|
|
%+ raw-poke
|
|
[our.bowl %group-pull-hook]
|
|
:- %pull-hook-action
|
|
!>([%remove resource.update])
|
|
:: stop serving or syncing contacts associated with group
|
|
::
|
|
;< ~ bind:m
|
|
%+ raw-poke
|
|
[our.bowl %contact-hook]
|
|
:- %contact-hook-action
|
|
!>([%remove (en-path:res resource.update)])
|
|
:: remove contact data associated with group
|
|
::
|
|
;< ~ bind:m
|
|
%+ raw-poke
|
|
[our.bowl %contact-store]
|
|
:- %contact-action
|
|
!> ^- contact-action:con
|
|
[%delete (en-path:res resource.update)]
|
|
:: stop serving or syncing metadata associated with group
|
|
::
|
|
;< ~ bind:m
|
|
%+ raw-poke
|
|
[our.bowl %metadata-hook]
|
|
:- %metadata-hook-action
|
|
!>([%remove (en-path:res resource.update)])
|
|
:: get metadata associated with group
|
|
::
|
|
;< =associations:met bind:m
|
|
%+ scry associations:met
|
|
;: weld
|
|
/gx/metadata-store/group
|
|
(en-path:res resource.update)
|
|
/noun
|
|
==
|
|
=/ entries=(list [g=group-path:met m=md-resource:met])
|
|
~(tap in ~(key by associations))
|
|
|- ^- form:m
|
|
=* loop $
|
|
?~ entries
|
|
(pure:m !>(~))
|
|
:: remove metadata associated with group
|
|
::
|
|
;< ~ bind:m
|
|
%+ raw-poke
|
|
[our.bowl %metadata-store]
|
|
:- %metadata-action
|
|
!> ^- metadata-action:met
|
|
[%remove g.i.entries m.i.entries]
|
|
:: archive graph associated with group
|
|
::
|
|
;< ~ bind:m
|
|
%+ raw-poke
|
|
[our.bowl %graph-store]
|
|
:- %graph-update
|
|
!> ^- update:gra
|
|
[%0 now.bowl [%archive-graph (de-path:res app-path.m.i.entries)]]
|
|
;< ~ bind:m
|
|
%+ raw-poke
|
|
[our.bowl %graph-pull-hook]
|
|
:- %pull-hook-action
|
|
!>([%remove (de-path:res app-path.m.i.entries)])
|
|
loop(entries t.entries)
|