diff --git a/translator.go b/translator.go index db0317b..734e21b 100644 --- a/translator.go +++ b/translator.go @@ -56,7 +56,7 @@ func (t Translator) Translate(message string) (string, error) { return "", errors.New("Translation not found") } -func (t Translator) PlaySound(lang string, message string) { +func (t Translator) PlaySound(lang string, message string) error { url_str := fmt.Sprintf( sound_url, url.QueryEscape(message), @@ -64,15 +64,15 @@ func (t Translator) PlaySound(lang string, message string) { ) res, err := http.Get(url_str) if err != nil { - panic(err) + return err } decoder, err := mp3.NewDecoder(res.Body) if err != nil { - panic(err) + return err } otoCtx, readyChan, err := oto.NewContext(decoder.SampleRate(), 2, 2) if err != nil { - panic(err) + return err } <-readyChan player := otoCtx.NewPlayer(decoder) @@ -81,6 +81,8 @@ func (t Translator) PlaySound(lang string, message string) { time.Sleep(time.Second) } if err = player.Close(); err != nil { - panic(err) + return err } + + return nil } diff --git a/ui.go b/ui.go index c6a6e12..b10c2a0 100644 --- a/ui.go +++ b/ui.go @@ -118,9 +118,15 @@ func TranslatePageHandler(event *tcell.EventKey) *tcell.EventKey { case tcell.KeyCtrlQ: src_box.SetText("", true) case tcell.KeyCtrlN: - translator.PlaySound(translator.src_lang, src_box.GetText()) + err := translator.PlaySound(translator.src_lang, src_box.GetText()) + if err != nil { + src_box.SetText(err.Error(), true) + } case tcell.KeyCtrlP: - translator.PlaySound(translator.dst_lang, dst_box.GetText(false)) + err := translator.PlaySound(translator.dst_lang, dst_box.GetText(false)) + if err != nil { + dst_box.SetText(err.Error()) + } case tcell.KeyCtrlS: translator.src_lang, translator.dst_lang = translator.dst_lang, translator.src_lang updateLang()