1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-10 01:51:11 +09:00

Update interfaces

This commit is contained in:
mcrakhman 2023-02-24 23:42:05 +01:00 committed by Mikhail Iudin
parent 51736bc535
commit 94248dfd59
No known key found for this signature in database
GPG key ID: FAAAA8BAABDFF1C0
3 changed files with 25 additions and 26 deletions

View file

@ -13,4 +13,5 @@ type TreeGetter interface {
app.ComponentRunnable app.ComponentRunnable
GetTree(ctx context.Context, spaceId, treeId string) (objecttree.ObjectTree, error) GetTree(ctx context.Context, spaceId, treeId string) (objecttree.ObjectTree, error)
DeleteTree(ctx context.Context, spaceId, treeId string) error DeleteTree(ctx context.Context, spaceId, treeId string) error
DeleteSpace(ctx context.Context, spaceId string) error
} }

View file

@ -1,6 +1,7 @@
package settings package settings
import ( import (
"context"
"github.com/anytypeio/any-sync/commonspace/object/treegetter" "github.com/anytypeio/any-sync/commonspace/object/treegetter"
"github.com/anytypeio/any-sync/commonspace/settings/settingsstate" "github.com/anytypeio/any-sync/commonspace/settings/settingsstate"
"github.com/anytypeio/any-sync/util/slice" "github.com/anytypeio/any-sync/util/slice"
@ -12,12 +13,8 @@ type SpaceIdsProvider interface {
AllIds() []string AllIds() []string
} }
type SpaceDeleter interface {
DeleteSpace(spaceId string)
}
type DeletionManager interface { type DeletionManager interface {
UpdateState(state *settingsstate.State) (err error) UpdateState(ctx context.Context, state *settingsstate.State) (err error)
} }
func newDeletionManager( func newDeletionManager(
@ -50,28 +47,29 @@ type deletionManager struct {
onSpaceDelete func() onSpaceDelete func()
} }
func (d *deletionManager) UpdateState(state *settingsstate.State) (err error) { func (d *deletionManager) UpdateState(ctx context.Context, state *settingsstate.State) error {
err = d.deletionState.Add(state.DeletedIds) log := log.With(zap.String("spaceId", d.spaceId))
err := d.deletionState.Add(state.DeletedIds)
if err != nil { if err != nil {
log.Warn("failed to add deleted ids to deletion state") log.Warn("failed to add deleted ids to deletion state")
} }
if state.DeleterId == "" {
if state.DeleterId != "" { return nil
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()
} }
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
} }

View file

@ -141,7 +141,7 @@ func (s *settingsObject) updateIds(tr objecttree.ObjectTree, isUpdate bool) {
return return
} }
log.Debug("updating object state", zap.String("deleterId", s.state.DeleterId)) 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)) log.Error("failed to update state", zap.Error(err))
} }
} }