Subs shouldn't take a model as an argument

This also nullifies the need for SubMap
This commit is contained in:
Christian Rocha
2020-05-04 18:51:47 -04:00
parent dada718393
commit b50ee76165
4 changed files with 6 additions and 16 deletions

View File

@@ -55,7 +55,7 @@ func update(message tea.Msg, mdl tea.Model) (tea.Model, tea.Cmd) {
func subscriptions(_ tea.Model) tea.Subs {
return tea.Subs{
"tick": func(_ tea.Model) tea.Msg {
"tick": func() tea.Msg {
time.Sleep(time.Second)
return tickMsg{}
},

View File

@@ -59,7 +59,7 @@ func view(model tea.Model) string {
// second, sends a tick, and then restarts.
func subscriptions(_ tea.Model) tea.Subs {
return tea.Subs{
"tick": func(_ tea.Model) tea.Msg {
"tick": func() tea.Msg {
time.Sleep(time.Second)
return TickMsg{}
},

View File

@@ -58,12 +58,12 @@ func subscriptions(model tea.Model) tea.Subs {
}
}
func tick(model tea.Model) tea.Msg {
func tick() tea.Msg {
time.Sleep(time.Second)
return tickMsg{}
}
func frame(model tea.Model) tea.Msg {
func frame() tea.Msg {
time.Sleep(time.Second / 60)
return frameMsg{}
}

14
tea.go
View File

@@ -32,17 +32,7 @@ func Batch(cmds ...Cmd) Cmd {
// Sub is an event subscription; generally a recurring IO operation. If it
// returns nil it's considered a no-op, but there's really no reason to have
// a nil subscription.
type Sub func(Model) Msg
// SubMap applies a given model as an argument to a given subscription.
func SubMap(sub Sub, model Model) Sub {
if sub == nil {
return nil
}
return func(_ Model) Msg {
return sub(model)
}
}
type Sub func() Msg
// Subs is a keyed set of subscriptions. The key should be a unique
// identifier: two different subscriptions should not have the same key or
@@ -280,7 +270,7 @@ func (p *Program) processSubs(msgs chan Msg, model Model, activeSubs subManager)
select {
case <-done:
return
case msgs <- s(model):
case msgs <- s():
continue
}
}