1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-09 17:45:03 +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
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
}

View file

@ -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
}

View file

@ -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))
}
}