diff --git a/client/clientspace/clientcache/treecache.go b/client/clientspace/clientcache/treecache.go index abdd931a..e33a1235 100644 --- a/client/clientspace/clientcache/treecache.go +++ b/client/clientspace/clientcache/treecache.go @@ -99,7 +99,13 @@ func (c *treeCache) GetDocument(ctx context.Context, spaceId, id string) (doc te } func (c *treeCache) GetTree(ctx context.Context, spaceId, id string) (tr tree.ObjectTree, err error) { - return c.GetDocument(ctx, spaceId, id) + doc, err := c.GetDocument(ctx, spaceId, id) + if err != nil { + return + } + // we have to do this trick, otherwise the compiler won't understand that TextDocument conforms to SyncHandler interface + tr = doc.InnerTree() + return } func (c *treeCache) DeleteTree(ctx context.Context, spaceId, treeId string) (err error) { diff --git a/client/document/textdocument/textdocument.go b/client/document/textdocument/textdocument.go index 4334afb9..4c4abb44 100644 --- a/client/document/textdocument/textdocument.go +++ b/client/document/textdocument/textdocument.go @@ -12,6 +12,7 @@ import ( type TextDocument interface { tree.ObjectTree + InnerTree() tree.ObjectTree AddText(text string) error Text() (string, error) TreeDump() string @@ -55,6 +56,10 @@ func NewTextDocument(ctx context.Context, space commonspace.Space, id string, li }, nil } +func (t *textDocument) InnerTree() tree.ObjectTree { + return t.ObjectTree +} + func (t *textDocument) AddText(text string) (err error) { content := &testchanges.TextContent_TextAppend{ TextAppend: &testchanges.TextAppend{Text: text}, diff --git a/common/commonspace/service.go b/common/commonspace/service.go index 6b101b31..ba3dabd2 100644 --- a/common/commonspace/service.go +++ b/common/commonspace/service.go @@ -89,7 +89,7 @@ func (s *service) DeriveSpace(ctx context.Context, payload SpaceDerivePayload) ( func (s *service) NewSpace(ctx context.Context, id string) (Space, error) { st, err := s.storageProvider.SpaceStorage(id) if err != nil { - if err != spacesyncproto.ErrSpaceMissing { + if err != storage.ErrSpaceStorageMissing { return nil, err } @@ -101,7 +101,6 @@ func (s *service) NewSpace(ctx context.Context, id string) (Space, error) { } else { st, err = s.getSpaceStorageFromRemote(ctx, id) if err != nil { - err = storage.ErrSpaceStorageMissing return nil, err } } @@ -130,6 +129,10 @@ func (s *service) addSpaceStorage(ctx context.Context, spaceDescription SpaceDes Id: spaceDescription.AclId, }, SpaceHeaderWithId: spaceDescription.SpaceHeader, + SpaceSettingsWithId: &treechangeproto.RawTreeChangeWithId{ + RawChange: spaceDescription.SpaceSettingsPayload, + Id: spaceDescription.SpaceSettingsId, + }, } st, err = s.storageProvider.CreateSpaceStorage(payload) if err != nil { diff --git a/common/commonspace/settingsdocument/deleter.go b/common/commonspace/settingsdocument/deleter.go index c259e0d3..51a8c32b 100644 --- a/common/commonspace/settingsdocument/deleter.go +++ b/common/commonspace/settingsdocument/deleter.go @@ -30,5 +30,6 @@ func (d *deleter) delete() { if err != nil { log.With(zap.String("id", id), zap.Error(err)).Error("failed to mark object as deleted") } + log.With(zap.String("id", id), zap.Error(err)).Debug("object successfully deleted") } } diff --git a/common/commonspace/settingsdocument/settingsdocument.go b/common/commonspace/settingsdocument/settingsdocument.go index f2d055a4..8c603a5e 100644 --- a/common/commonspace/settingsdocument/settingsdocument.go +++ b/common/commonspace/settingsdocument/settingsdocument.go @@ -7,6 +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/synctree/updatelistener" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/treegetter" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree" @@ -34,7 +35,7 @@ type Deps struct { } type settingsDocument struct { - tree.ObjectTree + *synctree.SyncTree account account.Service spaceId string treeGetter treegetter.TreeGetter @@ -98,10 +99,11 @@ func (s *settingsDocument) Rebuild(tr tree.ObjectTree) { } func (s *settingsDocument) Init(ctx context.Context) (err error) { - s.ObjectTree, err = s.buildFunc(ctx, s.store.SpaceSettingsId(), s) + syncTree, err := s.buildFunc(ctx, s.store.SpaceSettingsId(), s) if err != nil { return } + s.SyncTree = syncTree.(*synctree.SyncTree) s.loop.Run() return }