diff --git a/client/storage/spacestorage.go b/client/storage/spacestorage.go index 7479808c..a6cee186 100644 --- a/client/storage/spacestorage.go +++ b/client/storage/spacestorage.go @@ -138,7 +138,8 @@ func (s *spaceStorage) StoredIds() (ids []string, err error) { for it.Rewind(); it.Valid(); it.Next() { item := it.Item() - id := item.Key() + id := make([]byte, 0, len(item.Key())) + id = item.KeyCopy(id) if len(id) <= len(s.keys.TreeRootPrefix())+1 { continue } diff --git a/client/storage/treestorage.go b/client/storage/treestorage.go index 3d1e5e81..e89999bf 100644 --- a/client/storage/treestorage.go +++ b/client/storage/treestorage.go @@ -155,6 +155,7 @@ func (t *treeStorage) storedKeys() (keys [][]byte, err error) { err = t.db.View(func(txn *badger.Txn) error { opts := badger.DefaultIteratorOptions opts.PrefetchValues = false + // this will get all raw changes and also "heads" opts.Prefix = t.keys.RawChangePrefix() it := txn.NewIterator(opts) @@ -164,7 +165,7 @@ func (t *treeStorage) storedKeys() (keys [][]byte, err error) { item := it.Item() key := item.Key() keyCopy := make([]byte, 0, len(key)) - keyCopy = item.KeyCopy(key) + keyCopy = item.KeyCopy(keyCopy) keys = append(keys, keyCopy) } return nil diff --git a/common/commonspace/settingsdocument/deletionstate/deletionstate.go b/common/commonspace/settingsdocument/deletionstate/deletionstate.go index 3387dd9d..8a38528c 100644 --- a/common/commonspace/settingsdocument/deletionstate/deletionstate.go +++ b/common/commonspace/settingsdocument/deletionstate/deletionstate.go @@ -86,7 +86,7 @@ func (st *DeletionState) Delete(id string) (err error) { defer st.Unlock() delete(st.queued, id) st.deleted[id] = struct{}{} - err = st.storage.SetTreeDeletedStatus(id, storage.TreeDeletedStatusQueued) + err = st.storage.SetTreeDeletedStatus(id, storage.TreeDeletedStatusDeleted) if err != nil { return } diff --git a/common/commonspace/settingsdocument/settingsdocument.go b/common/commonspace/settingsdocument/settingsdocument.go index 8c603a5e..c9359321 100644 --- a/common/commonspace/settingsdocument/settingsdocument.go +++ b/common/commonspace/settingsdocument/settingsdocument.go @@ -7,7 +7,7 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/settingsdocument/deletionstate" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto" spacestorage "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/storage" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice/synchandler" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/treegetter" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree" @@ -35,7 +35,8 @@ type Deps struct { } type settingsDocument struct { - *synctree.SyncTree + tree.ObjectTree + synchandler.SyncHandler account account.Service spaceId string treeGetter treegetter.TreeGetter @@ -99,11 +100,12 @@ func (s *settingsDocument) Rebuild(tr tree.ObjectTree) { } func (s *settingsDocument) Init(ctx context.Context) (err error) { - syncTree, err := s.buildFunc(ctx, s.store.SpaceSettingsId(), s) + s.ObjectTree, err = s.buildFunc(ctx, s.store.SpaceSettingsId(), s) if err != nil { return } - s.SyncTree = syncTree.(*synctree.SyncTree) + // this is needed, so we would easily convert the object to synchandler interface in objectgetter + s.SyncHandler = s.ObjectTree.(synchandler.SyncHandler) s.loop.Run() return } diff --git a/common/commonspace/settingsdocument/settingsdocument_test.go b/common/commonspace/settingsdocument/settingsdocument_test.go new file mode 100644 index 00000000..43d929dc --- /dev/null +++ b/common/commonspace/settingsdocument/settingsdocument_test.go @@ -0,0 +1,7 @@ +package settingsdocument + +import "testing" + +func TestSettingsDocument_Init(t *testing.T) { + +}