Export VerifyDeleteChange

This commit is contained in:
mcrakhman 2023-03-01 22:06:37 +01:00 committed by Mikhail Iudin
parent d3adb45fae
commit bb100994ec
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0

View File

@ -7,6 +7,7 @@ import (
"fmt" "fmt"
"github.com/anytypeio/any-sync/accountservice" "github.com/anytypeio/any-sync/accountservice"
"github.com/anytypeio/any-sync/app/logger" "github.com/anytypeio/any-sync/app/logger"
"github.com/anytypeio/any-sync/commonspace/object/keychain"
"github.com/anytypeio/any-sync/commonspace/object/tree/objecttree" "github.com/anytypeio/any-sync/commonspace/object/tree/objecttree"
"github.com/anytypeio/any-sync/commonspace/object/tree/synctree" "github.com/anytypeio/any-sync/commonspace/object/tree/synctree"
"github.com/anytypeio/any-sync/commonspace/object/tree/synctree/updatelistener" "github.com/anytypeio/any-sync/commonspace/object/tree/synctree/updatelistener"
@ -242,17 +243,7 @@ func (s *settingsObject) verifyDeleteSpace(raw *treechangeproto.RawTreeChangeWit
if err != nil { if err != nil {
return return
} }
content := &spacesyncproto.SettingsData{} return verifyDeleteContent(data, "")
err = proto.Unmarshal(data, content)
if err != nil {
return
}
if len(content.GetContent()) != 1 ||
content.GetContent()[0].GetSpaceDelete() == nil ||
content.GetContent()[0].GetSpaceDelete().GetDeleterPeerId() == "" {
return fmt.Errorf("incorrect delete change payload")
}
return
} }
func (s *settingsObject) addContent(data []byte) (err error) { func (s *settingsObject) addContent(data []byte) (err error) {
@ -271,3 +262,27 @@ func (s *settingsObject) addContent(data []byte) (err error) {
s.Update(s) s.Update(s)
return return
} }
func VerifyDeleteChange(raw *treechangeproto.RawTreeChangeWithId, peerId string) (err error) {
changeBuilder := objecttree.NewChangeBuilder(keychain.NewKeychain(), nil)
res, err := changeBuilder.Unmarshall(raw, true)
if err != nil {
return
}
return verifyDeleteContent(res.Data, peerId)
}
func verifyDeleteContent(data []byte, peerId string) (err error) {
content := &spacesyncproto.SettingsData{}
err = proto.Unmarshal(data, content)
if err != nil {
return
}
if len(content.GetContent()) != 1 ||
content.GetContent()[0].GetSpaceDelete() == nil ||
(peerId == "" && content.GetContent()[0].GetSpaceDelete().GetDeleterPeerId() == "") ||
(peerId != "" && content.GetContent()[0].GetSpaceDelete().GetDeleterPeerId() != peerId) {
return fmt.Errorf("incorrect delete change payload")
}
return
}