From 7d39332a79b9c8b7f010de4845c54974fe1ee6f9 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 10 Mar 2023 16:33:13 +0100 Subject: [PATCH] Update state builder to fix root change --- commonspace/settings/settingsstate/statebuilder.go | 2 +- commonspace/settings/settingsstate/statebuilder_test.go | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/commonspace/settings/settingsstate/statebuilder.go b/commonspace/settings/settingsstate/statebuilder.go index 7f889ede..a6cf2c68 100644 --- a/commonspace/settings/settingsstate/statebuilder.go +++ b/commonspace/settings/settingsstate/statebuilder.go @@ -48,7 +48,7 @@ func (s *stateBuilder) Build(tr objecttree.ObjectTree, oldState *State) (state * func (s *stateBuilder) processChange(change *objecttree.Change, rootId string, state *State) *State { // ignoring root change which has empty model or startId change - if change.Model == nil || state.LastIteratedId == change.Id { + if len(change.PreviousIds) == 0 || state.LastIteratedId == change.Id { return state } diff --git a/commonspace/settings/settingsstate/statebuilder_test.go b/commonspace/settings/settingsstate/statebuilder_test.go index 7c8916ef..e2ac4448 100644 --- a/commonspace/settings/settingsstate/statebuilder_test.go +++ b/commonspace/settings/settingsstate/statebuilder_test.go @@ -42,6 +42,7 @@ func TestStateBuilder_ProcessChange(t *testing.T) { t.Run("changeId is equal to rootId", func(t *testing.T) { ch := &objecttree.Change{} + ch.PreviousIds = []string{"someId"} ch.Model = &spacesyncproto.SettingsData{ Snapshot: &spacesyncproto.SpaceSettingsSnapshot{ DeletedIds: []string{"id1", "id2"}, @@ -56,6 +57,7 @@ func TestStateBuilder_ProcessChange(t *testing.T) { t.Run("changeId is not equal to lastIteratedId or rootId", func(t *testing.T) { ch := &objecttree.Change{} + ch.PreviousIds = []string{"someId"} ch.Model = &spacesyncproto.SettingsData{ Content: []*spacesyncproto.SpaceSettingsContent{ {Value: &spacesyncproto.SpaceSettingsContent_ObjectDelete{