setup hooks

setup hooks
This commit is contained in:
raziman 2021-02-19 22:23:26 +08:00
parent 9d41e80edc
commit 94d83bc464
2 changed files with 31 additions and 9 deletions

View File

@ -124,7 +124,7 @@ func (p *Player) run(currSong *AudioFile) error {
// starts playing the audio
speaker.Play(p._volume)
gomu.hook.RunHooks("playing")
gomu.hook.RunHooks("new_song")
p.isRunning = true
@ -194,6 +194,7 @@ next:
}
func (p *Player) pause() {
gomu.hook.RunHooks("pause")
speaker.Lock()
p.ctrl.Paused = true
p.isRunning = false
@ -201,6 +202,7 @@ func (p *Player) pause() {
}
func (p *Player) play() {
gomu.hook.RunHooks("play")
speaker.Lock()
p.ctrl.Paused = false
p.isRunning = true
@ -239,6 +241,8 @@ func (p *Player) togglePause() {
// skips current song
func (p *Player) skip() {
gomu.hook.RunHooks("skip")
if p.currentSong == nil {
return
}

View File

@ -63,13 +63,27 @@ func defineBuiltins() {
}
func setupHooks() {
gomu.hook.AddHook("playing", func() {
_, err := gomu.anko.Execute(`Event.run_hooks("playing")`)
if err != nil {
err = tracerr.Errorf("error execute hook: %w", err)
logError(err)
}
})
events := []string{
"enter",
"new_song",
"skip",
"play",
"pause",
"exit",
}
for _, event := range events {
name := event
gomu.hook.AddHook(name, func() {
src := fmt.Sprintf(`Event.run_hooks("%s")`, name)
_, err := gomu.anko.Execute(src)
if err != nil {
err = tracerr.Errorf("error execute hook: %w", err)
logError(err)
}
})
}
}
// loadModules executes helper modules and default config that should only be
@ -150,7 +164,6 @@ module Keybinds {
}
}
`
setupHooks()
_, err := gomu.anko.Execute(eventModule + listModule + keybindModule)
if err != nil {
return tracerr.Wrap(err)
@ -266,6 +279,7 @@ func start(application *tview.Application, args Args) {
gomu = newGomu()
gomu.command.defineCommands()
defineBuiltins()
err := loadModules()
if err != nil {
die(err)
@ -276,6 +290,9 @@ func start(application *tview.Application, args Args) {
die(err)
}
setupHooks()
gomu.hook.RunHooks("enter")
gomu.args = args
gomu.colors = newColor()
@ -413,4 +430,5 @@ func start(application *tview.Application, args Args) {
die(err)
}
gomu.hook.RunHooks("exit")
}