Don't broadcast when no content added

This commit is contained in:
mcrakhman 2022-10-21 21:32:37 +02:00 committed by Mikhail Iudin
parent 3de5265fbc
commit a21e27cce5
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0

View File

@ -8,7 +8,7 @@ import (
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage"
tree2 "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/treechangeproto" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/treechangeproto"
) )
@ -16,7 +16,7 @@ var ErrSyncTreeClosed = errors.New("sync tree is closed")
// SyncTree sends head updates to sync service and also sends new changes to update listener // SyncTree sends head updates to sync service and also sends new changes to update listener
type SyncTree struct { type SyncTree struct {
tree2.ObjectTree tree.ObjectTree
syncClient syncservice.SyncClient syncClient syncservice.SyncClient
listener updatelistener.UpdateListener listener updatelistener.UpdateListener
isClosed bool isClosed bool
@ -24,17 +24,17 @@ type SyncTree struct {
var log = logger.NewNamed("commonspace.synctree").Sugar() var log = logger.NewNamed("commonspace.synctree").Sugar()
var createDerivedObjectTree = tree2.CreateDerivedObjectTree var createDerivedObjectTree = tree.CreateDerivedObjectTree
var createObjectTree = tree2.CreateObjectTree var createObjectTree = tree.CreateObjectTree
var buildObjectTree = tree2.BuildObjectTree var buildObjectTree = tree.BuildObjectTree
func DeriveSyncTree( func DeriveSyncTree(
ctx context.Context, ctx context.Context,
payload tree2.ObjectTreeCreatePayload, payload tree.ObjectTreeCreatePayload,
syncClient syncservice.SyncClient, syncClient syncservice.SyncClient,
listener updatelistener.UpdateListener, listener updatelistener.UpdateListener,
aclList list.ACLList, aclList list.ACLList,
createStorage storage.TreeStorageCreatorFunc) (t tree2.ObjectTree, err error) { createStorage storage.TreeStorageCreatorFunc) (t tree.ObjectTree, err error) {
t, err = createDerivedObjectTree(payload, aclList, createStorage) t, err = createDerivedObjectTree(payload, aclList, createStorage)
if err != nil { if err != nil {
return return
@ -52,11 +52,11 @@ func DeriveSyncTree(
func CreateSyncTree( func CreateSyncTree(
ctx context.Context, ctx context.Context,
payload tree2.ObjectTreeCreatePayload, payload tree.ObjectTreeCreatePayload,
syncClient syncservice.SyncClient, syncClient syncservice.SyncClient,
listener updatelistener.UpdateListener, listener updatelistener.UpdateListener,
aclList list.ACLList, aclList list.ACLList,
createStorage storage.TreeStorageCreatorFunc) (t tree2.ObjectTree, err error) { createStorage storage.TreeStorageCreatorFunc) (t tree.ObjectTree, err error) {
t, err = createObjectTree(payload, aclList, createStorage) t, err = createObjectTree(payload, aclList, createStorage)
if err != nil { if err != nil {
return return
@ -78,7 +78,7 @@ func BuildSyncTree(
treeStorage storage.TreeStorage, treeStorage storage.TreeStorage,
listener updatelistener.UpdateListener, listener updatelistener.UpdateListener,
aclList list.ACLList, aclList list.ACLList,
isFirstBuild bool) (t tree2.ObjectTree, err error) { isFirstBuild bool) (t tree.ObjectTree, err error) {
return buildSyncTree(ctx, syncClient, treeStorage, listener, aclList, isFirstBuild) return buildSyncTree(ctx, syncClient, treeStorage, listener, aclList, isFirstBuild)
} }
@ -88,7 +88,7 @@ func buildSyncTree(
treeStorage storage.TreeStorage, treeStorage storage.TreeStorage,
listener updatelistener.UpdateListener, listener updatelistener.UpdateListener,
aclList list.ACLList, aclList list.ACLList,
isFirstBuild bool) (t tree2.ObjectTree, err error) { isFirstBuild bool) (t tree.ObjectTree, err error) {
t, err = buildObjectTree(treeStorage, aclList) t, err = buildObjectTree(treeStorage, aclList)
if err != nil { if err != nil {
return return
@ -111,7 +111,7 @@ func buildSyncTree(
return return
} }
func (s *SyncTree) AddContent(ctx context.Context, content tree2.SignableChangeContent) (res tree2.AddResult, err error) { func (s *SyncTree) AddContent(ctx context.Context, content tree.SignableChangeContent) (res tree.AddResult, err error) {
if s.isClosed { if s.isClosed {
err = ErrSyncTreeClosed err = ErrSyncTreeClosed
return return
@ -125,7 +125,7 @@ func (s *SyncTree) AddContent(ctx context.Context, content tree2.SignableChangeC
return return
} }
func (s *SyncTree) AddRawChanges(ctx context.Context, changes ...*treechangeproto.RawTreeChangeWithId) (res tree2.AddResult, err error) { func (s *SyncTree) AddRawChanges(ctx context.Context, changes ...*treechangeproto.RawTreeChangeWithId) (res tree.AddResult, err error) {
if s.isClosed { if s.isClosed {
err = ErrSyncTreeClosed err = ErrSyncTreeClosed
return return
@ -136,17 +136,18 @@ func (s *SyncTree) AddRawChanges(ctx context.Context, changes ...*treechangeprot
} }
if s.listener != nil { if s.listener != nil {
switch res.Mode { switch res.Mode {
case tree2.Nothing: case tree.Nothing:
return return
case tree2.Append: case tree.Append:
s.listener.Update(s) s.listener.Update(s)
case tree2.Rebuild: case tree.Rebuild:
s.listener.Rebuild(s) s.listener.Rebuild(s)
} }
} }
if res.Mode != tree.Nothing {
headUpdate := s.syncClient.CreateHeadUpdate(s, res.Added) headUpdate := s.syncClient.CreateHeadUpdate(s, res.Added)
err = s.syncClient.BroadcastAsync(headUpdate) err = s.syncClient.BroadcastAsync(headUpdate)
}
return return
} }
@ -163,6 +164,6 @@ func (s *SyncTree) Close() (err error) {
return return
} }
func (s *SyncTree) Tree() tree2.ObjectTree { func (s *SyncTree) Tree() tree.ObjectTree {
return s return s
} }