Skip to content

Commit

Permalink
Change InitializeBindingWithValidation to a member
Browse files Browse the repository at this point in the history
  • Loading branch information
marner2 committed Oct 12, 2022
1 parent c350a9a commit ae977c5
Showing 1 changed file with 11 additions and 12 deletions.
23 changes: 11 additions & 12 deletions src/Elmish.WPF/DynamicViewModel.fs
Original file line number Diff line number Diff line change
Expand Up @@ -68,17 +68,6 @@ type [<AllowNullLiteral>] internal DynamicViewModel<'model, 'msg>
| None -> log.LogError("SubModelSelectedItem binding referenced binding {SubModelSeqBindingName} but no binding was found with that name", name)
None

let initializeBindingWithValidation selectedItemTargetBindings binding =
option {
let! vmBinding =
Initialize(loggingArgs, binding.Name, getFunctionsForSubModelSelectedItem selectedItemTargetBindings)
.Recursive(initialModel, dispatch, (fun () -> currentModel), binding.Data)
FirstValidationErrors().Recursive(vmBinding)
|> Option.iter (fun errorList ->
validationErrors.Add(binding.Name, errorList))
return vmBinding
}

let bindings =
log.LogTrace("[{BindingNameChain}] Initializing bindings", nameChain)
let bindingDict = Dictionary<string, VmBinding<'model, 'msg, obj>>(bindings.Length)
Expand All @@ -90,12 +79,22 @@ type [<AllowNullLiteral>] internal DynamicViewModel<'model, 'msg>
log.LogError("Binding name {BindingName} is duplicated. Only the first occurrence will be used.", b.Name)
else
option {
let! vmBinding = initializeBindingWithValidation bindingDict b
let! vmBinding = this.InitializeBindingWithValidation (bindingDict, b)
do bindingDict.Add(b.Name, vmBinding)
return ()
} |> Option.defaultValue ()
bindingDict :> IReadOnlyDictionary<_,_>

member internal _.InitializeBindingWithValidation (selectedItemTargetBindings: IReadOnlyDictionary<string, _>, binding) =
option {
let! vmBinding =
Initialize(loggingArgs, binding.Name, getFunctionsForSubModelSelectedItem selectedItemTargetBindings)
.Recursive(initialModel, dispatch, (fun () -> currentModel), binding.Data)
FirstValidationErrors().Recursive(vmBinding)
|> Option.iter (fun errorList ->
validationErrors.Add(binding.Name, errorList))
return vmBinding
}

member internal _.CurrentModel : 'model = currentModel

Expand Down

0 comments on commit ae977c5

Please sign in to comment.