From 94248dfd599855875e140b9b71b1d26f38cc3650 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 24 Feb 2023 23:42:05 +0100 Subject: [PATCH] Update interfaces --- commonspace/object/treegetter/treegetter.go | 1 + commonspace/settings/deletionmanager.go | 48 ++++++++++----------- commonspace/settings/settings.go | 2 +- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/commonspace/object/treegetter/treegetter.go b/commonspace/object/treegetter/treegetter.go index f3c3c2ac..4e604d10 100644 --- a/commonspace/object/treegetter/treegetter.go +++ b/commonspace/object/treegetter/treegetter.go @@ -13,4 +13,5 @@ type TreeGetter interface { app.ComponentRunnable GetTree(ctx context.Context, spaceId, treeId string) (objecttree.ObjectTree, error) DeleteTree(ctx context.Context, spaceId, treeId string) error + DeleteSpace(ctx context.Context, spaceId string) error } diff --git a/commonspace/settings/deletionmanager.go b/commonspace/settings/deletionmanager.go index 7731fb0d..7233e6b5 100644 --- a/commonspace/settings/deletionmanager.go +++ b/commonspace/settings/deletionmanager.go @@ -1,6 +1,7 @@ package settings import ( + "context" "github.com/anytypeio/any-sync/commonspace/object/treegetter" "github.com/anytypeio/any-sync/commonspace/settings/settingsstate" "github.com/anytypeio/any-sync/util/slice" @@ -12,12 +13,8 @@ type SpaceIdsProvider interface { AllIds() []string } -type SpaceDeleter interface { - DeleteSpace(spaceId string) -} - type DeletionManager interface { - UpdateState(state *settingsstate.State) (err error) + UpdateState(ctx context.Context, state *settingsstate.State) (err error) } func newDeletionManager( @@ -50,28 +47,29 @@ type deletionManager struct { onSpaceDelete func() } -func (d *deletionManager) UpdateState(state *settingsstate.State) (err error) { - err = d.deletionState.Add(state.DeletedIds) +func (d *deletionManager) UpdateState(ctx context.Context, state *settingsstate.State) error { + log := log.With(zap.String("spaceId", d.spaceId)) + err := d.deletionState.Add(state.DeletedIds) if err != nil { log.Warn("failed to add deleted ids to deletion state") } - - if state.DeleterId != "" { - log.Debug("deleting space", zap.String("spaceId", d.spaceId)) - spaceDeleter, ok := d.treeGetter.(SpaceDeleter) - if ok { - spaceDeleter.DeleteSpace(d.spaceId) - } - if d.isResponsible { - allIds := slice.DiscardFromSlice(d.provider.AllIds(), func(id string) bool { - return id == d.settingsId - }) - err = d.deletionState.Add(allIds) - if err != nil { - return - } - } - d.onSpaceDelete() + if state.DeleterId == "" { + return nil } - return + log.Debug("deleting space") + err = d.treeGetter.DeleteSpace(ctx, d.spaceId) + if err != nil { + log.Debug("failed to notify on space deletion", zap.Error(err)) + } + if d.isResponsible { + allIds := slice.DiscardFromSlice(d.provider.AllIds(), func(id string) bool { + return id == d.settingsId + }) + err := d.deletionState.Add(allIds) + if err != nil { + return err + } + } + d.onSpaceDelete() + return nil } diff --git a/commonspace/settings/settings.go b/commonspace/settings/settings.go index 3e9ff475..3d047807 100644 --- a/commonspace/settings/settings.go +++ b/commonspace/settings/settings.go @@ -141,7 +141,7 @@ func (s *settingsObject) updateIds(tr objecttree.ObjectTree, isUpdate bool) { return } log.Debug("updating object state", zap.String("deleterId", s.state.DeleterId)) - if err = s.deletionManager.UpdateState(s.state); err != nil { + if err = s.deletionManager.UpdateState(context.Background(), s.state); err != nil { log.Error("failed to update state", zap.Error(err)) } }