WIP change init logic
This commit is contained in:
parent
6f53ceb768
commit
092e9096b8
@ -20,9 +20,11 @@ type decreasedPermissionsParameters struct {
|
||||
startChange string
|
||||
}
|
||||
|
||||
func NewACLStateBuilder(decoder threadmodels.SigningPubKeyDecoder) *ACLStateBuilder {
|
||||
func NewACLStateBuilder(decoder threadmodels.SigningPubKeyDecoder, accountData *AccountData) *ACLStateBuilder {
|
||||
return &ACLStateBuilder{
|
||||
decoder: decoder,
|
||||
identity: accountData.Identity,
|
||||
key: accountData.EncKey,
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,8 +34,7 @@ func (sb *ACLStateBuilder) Build() (*ACLState, error) {
|
||||
}
|
||||
|
||||
func (sb *ACLStateBuilder) Init(
|
||||
tree *Tree,
|
||||
accountData *AccountData) error {
|
||||
tree *Tree) error {
|
||||
root := tree.Root()
|
||||
if !root.IsSnapshot {
|
||||
return fmt.Errorf("root should always be a snapshot")
|
||||
@ -42,15 +43,13 @@ func (sb *ACLStateBuilder) Init(
|
||||
snapshot := root.Content.GetAclData().GetAclSnapshot()
|
||||
state, err := NewACLStateFromSnapshot(
|
||||
snapshot,
|
||||
accountData.Identity,
|
||||
accountData.EncKey,
|
||||
sb.identity,
|
||||
sb.key,
|
||||
sb.decoder)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not build aclState from snapshot: %w", err)
|
||||
}
|
||||
sb.tree = tree
|
||||
sb.identity = accountData.Identity
|
||||
sb.key = accountData.EncKey
|
||||
sb.aclState = state
|
||||
|
||||
return nil
|
||||
|
||||
@ -4,20 +4,25 @@ import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// example ->
|
||||
|
||||
type documentStateBuilder struct {
|
||||
tree *Tree
|
||||
aclState *ACLState // TODO: decide if this is needed or not
|
||||
stateProvider InitialStateProvider
|
||||
}
|
||||
|
||||
func newDocumentStateBuilder(tree *Tree, state *ACLState, stateProvider InitialStateProvider) *documentStateBuilder {
|
||||
func newDocumentStateBuilder(stateProvider InitialStateProvider) *documentStateBuilder {
|
||||
return &documentStateBuilder{
|
||||
tree: tree,
|
||||
aclState: state,
|
||||
stateProvider: stateProvider,
|
||||
}
|
||||
}
|
||||
|
||||
func (d *documentStateBuilder) init(aclState *ACLState, tree *Tree) {
|
||||
d.tree = tree
|
||||
d.aclState = aclState
|
||||
}
|
||||
|
||||
// TODO: we should probably merge the two builders into one
|
||||
func (d *documentStateBuilder) build() (s DocumentState, err error) {
|
||||
var (
|
||||
@ -45,7 +50,7 @@ func (d *documentStateBuilder) build() (s DocumentState, err error) {
|
||||
return true
|
||||
}
|
||||
if c.DecryptedDocumentChange != nil {
|
||||
_, err = s.ApplyChange(c.DecryptedDocumentChange, c.Id)
|
||||
s, err = s.ApplyChange(c.DecryptedDocumentChange, c.Id)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
@ -10,28 +10,27 @@ type SnapshotValidator struct {
|
||||
identity string
|
||||
key threadmodels.EncryptionPrivKey
|
||||
decoder threadmodels.SigningPubKeyDecoder
|
||||
stateBuilder *ACLStateBuilder
|
||||
}
|
||||
|
||||
func NewSnapshotValidator(
|
||||
aclTree *Tree,
|
||||
identity string,
|
||||
key threadmodels.EncryptionPrivKey,
|
||||
decoder threadmodels.SigningPubKeyDecoder) *SnapshotValidator {
|
||||
decoder threadmodels.SigningPubKeyDecoder,
|
||||
accountData *AccountData) *SnapshotValidator {
|
||||
return &SnapshotValidator{
|
||||
aclTree: aclTree,
|
||||
identity: identity,
|
||||
key: key,
|
||||
identity: accountData.Identity,
|
||||
key: accountData.EncKey,
|
||||
decoder: decoder,
|
||||
stateBuilder: NewACLStateBuilder(decoder, accountData),
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SnapshotValidator) ValidateSnapshot(ch *Change) (bool, error) {
|
||||
stateBuilder, err := NewACLStateBuilder(s.aclTree, s.identity, s.key, s.decoder)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
func (s *SnapshotValidator) Init(aclTree *Tree) error {
|
||||
s.aclTree = aclTree
|
||||
return s.stateBuilder.Init(aclTree)
|
||||
}
|
||||
|
||||
st, found, err := stateBuilder.BuildBefore(ch.Id)
|
||||
func (s *SnapshotValidator) ValidateSnapshot(ch *Change) (bool, error) {
|
||||
st, found, err := s.stateBuilder.BuildBefore(ch.Id)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user