本文整理汇总了Golang中kego/io/flux.Payload.Wait方法的典型用法代码示例。如果您正苦于以下问题:Golang Payload.Wait方法的具体用法?Golang Payload.Wait怎么用?Golang Payload.Wait使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kego/io/flux.Payload
的用法示例。
在下文中一共展示了Payload.Wait方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Handle
func (m *PriceStore) Handle(payload *flux.Payload) (finished bool) {
switch payload.Action.(type) {
case *UpdateCountryAction, *UpdateCity:
payload.Wait(m.app.City)
m.price = calculatePrice(m.app.Country.GetCountry(), m.app.City.GetCity())
}
return true
}
示例2: Handle
func (m *MessageStore) Handle(payload *flux.Payload) (finished bool) {
switch action := payload.Action.(type) {
case *AddTopic:
payload.Wait(m.app.Topics)
m.messages = append(m.messages, action.Message)
case *AddMessage:
m.messages = append(m.messages, action.Message)
}
return true
}
示例3: Handle
func (s *EditorStore) Handle(payload *flux.Payload) bool {
switch action := payload.Action.(type) {
case *actions.EditorData:
action.Func(payload)
case *actions.Add:
payload.Wait(s.app.Branches)
switch action.Direction() {
case actions.New, actions.Redo:
mutateAddEditor(s, action.Node, action.Parent)
case actions.Undo:
mutateDeleteEditor(s, action.Node, action.Parent)
}
case *actions.Delete:
payload.Wait(s.app.Branches)
switch action.Direction() {
case actions.New, actions.Redo:
mutateDeleteEditor(s, action.Node, action.Parent)
case actions.Undo:
mutateAddEditor(s, action.Node, action.Parent)
}
case *actions.InitialState:
payload.Wait(s.app.Package, s.app.Types, s.app.Data)
s.AddEditorsRecursively(s.app.Package.Node())
for _, ti := range s.app.Types.All() {
s.AddEditorsRecursively(ti.Node)
}
case *actions.LoadFileSuccess:
ni, ok := action.Branch.Contents.(models.NodeContentsInterface)
if !ok {
break
}
n := ni.GetNode()
s.AddEditorsRecursively(n)
}
return true
}
示例4: Handle
func (s *NodeStore) Handle(payload *flux.Payload) bool {
switch action := payload.Action.(type) {
case *actions.ToggleSystemControls:
m := s.Get(action.Node)
m.ShowSystemControls = !m.ShowSystemControls
payload.Notify(action.Node, NodeSystemControls)
case *actions.Add:
payload.Wait(s.app.Actions)
switch action.Direction() {
case actions.New:
if err := mutateAddNode(s.ctx, action.Node, action.Parent, action.Key, action.Index, action.Type, action.BranchName); err != nil {
s.app.Fail <- kerr.Wrap("HUOGBUQCAO", err)
break
}
payload.Notify(action.Node, NodeInitialised)
if action.Parent != nil {
payload.Notify(action.Parent, NodeChildAdded)
}
payload.Notify(action.Node, NodeFocus)
case actions.Undo:
action.Backup = node.NewNode()
if err := mutateDeleteNode(s.ctx, action.Node, action.Parent, action.Backup); err != nil {
s.app.Fail <- kerr.Wrap("RTAGMUIKMD", err)
break
}
payload.Notify(action.Node, NodeDeleted)
if action.Parent != nil {
payload.Notify(action.Parent, NodeChildDeleted)
}
case actions.Redo:
if err := mutateRestoreNode(s.ctx, action.Node, action.Parent, action.Backup); err != nil {
s.app.Fail <- kerr.Wrap("MHUTMXOGBP", err)
break
}
payload.Notify(action.Node, NodeInitialised)
payload.Notify(action.Parent, NodeChildAdded)
payload.Notify(action.Node, NodeFocus)
}
if action.Parent != nil {
model := s.app.Nodes.Get(action.Parent)
changed, err := model.Validate(s.ctx, s.app.Rule.Get(action.Parent.Root(), action.Parent))
if err != nil {
s.app.Fail <- kerr.Wrap("AKIUPRWGLV", err)
break
}
if changed {
payload.Notify(action.Parent, NodeErrorsChanged)
}
}
c := action.Parent
for c != nil {
payload.Notify(c, NodeDescendantChanged)
c = c.Parent
}
case *actions.Delete:
payload.Wait(s.app.Actions)
switch action.Direction() {
case actions.New, actions.Redo:
action.Backup = node.NewNode()
if err := mutateDeleteNode(s.ctx, action.Node, action.Parent, action.Backup); err != nil {
s.app.Fail <- kerr.Wrap("DFHTKJRLQC", err)
break
}
payload.Notify(action.Node, NodeDeleted)
payload.Notify(action.Parent, NodeChildDeleted)
case actions.Undo:
if err := mutateRestoreNode(s.ctx, action.Node, action.Parent, action.Backup); err != nil {
s.app.Fail <- kerr.Wrap("HAPWUOPBTW", err)
break
}
payload.Notify(action.Node, NodeInitialised)
payload.Notify(action.Parent, NodeChildAdded)
payload.Notify(action.Node, NodeFocus)
}
if action.Parent != nil {
model := s.app.Nodes.Get(action.Parent)
changed, err := model.Validate(s.ctx, s.app.Rule.Get(action.Parent.Root(), action.Parent))
if err != nil {
s.app.Fail <- kerr.Wrap("IOFCSITVXB", err)
break
}
if changed {
payload.Notify(action.Parent, NodeErrorsChanged)
}
}
c := action.Parent
for c != nil {
payload.Notify(c, NodeDescendantChanged)
c = c.Parent
}
case *actions.Reorder:
payload.Wait(s.app.Actions)
if !action.Model.Node.Type.IsNativeArray() {
s.app.Fail <- kerr.New("EPBQVIICFM", "Must be array")
break
}
//.........这里部分代码省略.........
示例5: Handle
func (s *BranchStore) Handle(payload *flux.Payload) bool {
previous := s.selected
switch action := payload.Action.(type) {
case *actions.ChangeView:
s.view = action.View
s.selected = s.Root()
payload.Notify(nil, ViewChanged)
case *actions.Add:
payload.Wait(s.app.Nodes)
switch action.Direction() {
case actions.New, actions.Redo:
child, parent, err := mutateAppendBranch(s, action.Parent, action.Node, action.BranchName, action.BranchFile)
if err != nil {
s.app.Fail <- kerr.Wrap("LDBMBRHWHB", err)
break
}
if child != nil {
if ancestor := child.EnsureVisible(); ancestor != nil {
payload.NotifyWithData(ancestor, BranchOpened, &BranchDescendantSelectData{
Branch: child,
Op: models.BranchOpChildAdded,
})
}
s.selected = child
payload.Notify(previous, BranchUnselectControl)
payload.Notify(s.selected, BranchSelectControl)
payload.Notify(s.selected, BranchSelected)
}
if parent != nil {
payload.Notify(parent, BranchChildAdded)
}
case actions.Undo:
_, parent, err := mutateDeleteBranch(s, action.Node)
if err != nil {
s.app.Fail <- kerr.Wrap("NLFWVSNNTY", err)
break
}
if parent != nil {
payload.Notify(parent, BranchChildDeleted)
s.selected = parent
payload.Notify(previous, BranchUnselectControl)
payload.Notify(s.selected, BranchSelectControl)
payload.Notify(s.selected, BranchSelected)
}
}
case *actions.Delete:
payload.Wait(s.app.Nodes)
switch action.Direction() {
case actions.New, actions.Redo:
branch, parent, err := mutateDeleteBranch(s, action.Node)
if err != nil {
s.app.Fail <- kerr.Wrap("QTXPXAKXHH", err)
break
}
if branch != nil {
action.BranchIndex = branch.Index
if nci, ok := branch.Contents.(models.NodeContentsInterface); ok {
action.BranchName = nci.GetName()
}
if fci, ok := branch.Contents.(models.FileContentsInterface); ok {
action.BranchFile = fci.GetFilename()
}
}
if parent != nil {
payload.Notify(parent, BranchChildDeleted)
s.selected = parent
payload.Notify(previous, BranchUnselectControl)
payload.Notify(s.selected, BranchSelectControl)
payload.Notify(s.selected, BranchSelected)
}
case actions.Undo:
child, parent, err := mutateInsertBranch(s, action.Parent, action.Node, action.BranchIndex, action.BranchName, action.BranchFile)
if err != nil {
s.app.Fail <- kerr.Wrap("OOGOEWKPIL", err)
break
}
if child != nil {
if ancestor := child.EnsureVisible(); ancestor != nil {
payload.NotifyWithData(ancestor, BranchOpened, &BranchDescendantSelectData{
Branch: child,
Op: models.BranchOpChildAdded,
})
}
s.selected = child
payload.Notify(previous, BranchUnselectControl)
payload.Notify(s.selected, BranchSelectControl)
payload.Notify(s.selected, BranchSelected)
}
if parent != nil {
payload.Notify(parent, BranchChildAdded)
}
}
case *actions.Reorder:
payload.Wait(s.app.Nodes)
parent, err := mutateReorderBranch(s, action.Model.Node)
if err != nil {
s.app.Fail <- kerr.Wrap("NUQOPWWXHA", err)
break
}
if parent != nil {
//.........这里部分代码省略.........
示例6: Handle
func (s *RuleStore) Handle(payload *flux.Payload) bool {
switch action := payload.Action.(type) {
case *actions.InitialState:
payload.Wait(s.app.Package, s.app.Types)
s.validateNodes(payload, s.build(s.app.Package.Node()))
for _, t := range s.app.Types.All() {
s.validateNodes(payload, s.build(t.Node))
}
case *actions.LoadFileSuccess:
payload.Wait(s.app.Branches)
ni, ok := action.Branch.Contents.(models.NodeContentsInterface)
if !ok {
break
}
n := ni.GetNode()
s.validateNodes(payload, s.build(n))
case *actions.Modify:
payload.Wait(s.app.Nodes)
// Node mutations that are in response to keyboard input should wait an
// additional time before doing a full validation rebuild. This
// operation may be expensive, so we shouldn't risk interupting the
// user input.
if action.Direction() != actions.New || action.Immediate {
// Undo and Redo actions are from mouse input, so always immediate.
// New actions are immediate if action.Immediate == true
s.validateNodes(payload, s.build(action.Editor.Node.Root()))
break
}
// Delayed actions wait an extra time before the validation rebuild.
go func() {
// We have already waited for EditorKeyboardDebounceShort, so we
// reduce the duration by this.
<-time.After(common.EditorKeyboardDebounceLong - common.EditorKeyboardDebounceShort)
if action.Changed() {
return
}
s.validateNodes(payload, s.build(action.Editor.Node.Root()))
}()
case *actions.Reorder:
payload.Wait(s.app.Nodes)
s.validateNodes(payload, s.build(action.Model.Node.Root()))
case *actions.Delete:
payload.Wait(s.app.Nodes)
s.validateNodes(payload, s.build(action.Node.Root()))
case *actions.Add:
payload.Wait(s.app.Nodes)
s.validateNodes(payload, s.build(action.Node.Root()))
}
return true
}
示例7: Handle
func (s *FileStore) Handle(payload *flux.Payload) bool {
switch action := payload.Action.(type) {
case *actions.Add:
payload.Wait(s.app.Nodes)
if action.Parent != nil {
// only root nodes are files
break
}
switch action.Direction() {
case actions.New, actions.Redo:
n := action.Node
n.RecomputeHash(s.ctx, true)
fm := &models.FileModel{
Package: false,
Type: *action.Type.Id == *system.NewReference("kego.io/system", "type"),
Filename: action.BranchFile,
Node: n,
Hash: n.Hash(),
}
s.files[n] = fm
case actions.Undo:
delete(s.files, action.Node)
}
payload.Notify(nil, FileChangedStateChange)
case *actions.SaveFileSuccess:
for _, file := range action.Response.Files {
f := s.fileByName(file.File)
if f == nil {
s.app.Fail <- kerr.New("FPXNHFJNOR", "File %s not found", file.File)
}
f.SaveHash = file.Hash
}
payload.Notify(nil, FileChangedStateChange)
case *actions.InitialState:
payload.Wait(s.app.Nodes)
n := s.app.Package.Node()
fm := &models.FileModel{
Package: true,
Type: false,
Filename: s.app.Package.Filename(),
Node: n,
Hash: n.Hash(),
LoadHash: n.Hash(),
}
s.files[n] = fm
for _, ti := range s.app.Types.All() {
n := ti.Node
fm := &models.FileModel{
Package: false,
Type: true,
Filename: ti.File,
Node: n,
Hash: n.Hash(),
LoadHash: n.Hash(),
}
s.files[n] = fm
}
case *actions.LoadFileSuccess:
sci, ok := action.Branch.Contents.(models.FileContentsInterface)
if !ok {
break
}
n := sci.GetNode()
fm := &models.FileModel{
Package: false,
Type: false,
Filename: sci.GetFilename(),
Node: n,
Hash: n.Hash(),
LoadHash: n.Hash(),
}
s.files[n] = fm
}
if m, ok := payload.Action.(actions.Mutator); ok {
payload.Wait(s.app.Nodes)
n := m.CommonAncestor().Root()
f, ok := s.files[n]
if ok {
prevChanged := f.Changed()
f.Hash = n.Hash()
newChanged := f.Changed()
if prevChanged != newChanged {
// state changed!
payload.Notify(n, FileChangedStateChange)
}
}
}
return true
}