Ensure consistent error handling and improve resource cleanup across widgets and APIs.
This commit is contained in:
@@ -5,7 +5,6 @@ import (
|
||||
"ArinDash/util"
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/mum4k/termdash/cell"
|
||||
@@ -55,33 +54,26 @@ func (widget *NewsText) drawNews() error {
|
||||
return nil
|
||||
}
|
||||
if err := widget.Write(fmt.Sprintf("%d/%d\n", selected+1, len(widget.newsArticles.Articles)), text.WriteCellOpts(cell.FgColor(cell.ColorWhite))); err != nil {
|
||||
widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
return err
|
||||
return widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
}
|
||||
article := widget.newsArticles.Articles[selected]
|
||||
if err := widget.Write(fmt.Sprintf("%s\n", article.Author), text.WriteCellOpts(cell.FgColor(cell.ColorGray))); err != nil {
|
||||
widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
return err
|
||||
return widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
}
|
||||
if err := widget.Write(fmt.Sprintf("%s\n\n", article.Title), text.WriteCellOpts(cell.FgColor(cell.ColorWhite), cell.Bold())); err != nil {
|
||||
widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
return err
|
||||
return widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
}
|
||||
if err := widget.Write(fmt.Sprintf("%s\n\n", article.Description), text.WriteCellOpts(cell.FgColor(cell.ColorWhite))); err != nil {
|
||||
widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
return err
|
||||
return widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
}
|
||||
if err := widget.Write(fmt.Sprintf("%s\n", strings.ReplaceAll(article.Content, "\r", "")), text.WriteCellOpts(cell.FgColor(cell.ColorWhite))); err != nil {
|
||||
widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
return err
|
||||
if err := widget.Write(fmt.Sprintf("%s\n", article.Content), text.WriteCellOpts(cell.FgColor(cell.ColorWhite))); err != nil {
|
||||
return widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
}
|
||||
if err := widget.Write(fmt.Sprintf("%s\n\n", article.PublishedAt), text.WriteCellOpts(cell.FgColor(cell.ColorGray))); err != nil {
|
||||
widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
return err
|
||||
return widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
}
|
||||
if err := widget.Write(fmt.Sprintf("%s\n", article.URL)); err != nil {
|
||||
widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
return err
|
||||
return widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -28,8 +28,7 @@ func createWeather(ctx context.Context, _ terminalapi.Terminal, _ interface{}) w
|
||||
weather := openWeatherMap.FetchCurrentWeather()
|
||||
widget.Reset()
|
||||
if weather.ErrorMessage != "" {
|
||||
widget.Write(weather.ErrorMessage, text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
return nil
|
||||
return widget.Write(weather.ErrorMessage, text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
}
|
||||
|
||||
weatherIcon := getIcon(weather.Weather[0].Icon)
|
||||
|
||||
@@ -289,25 +289,20 @@ func (widget *MoodText) Keyboard(k *terminalapi.Keyboard, _ *widgetapi.EventMeta
|
||||
}
|
||||
break
|
||||
case keyboard.KeyBackspace, keyboard.KeyBackspace2:
|
||||
widget.WriteMood(0)
|
||||
break
|
||||
return widget.WriteMood(0)
|
||||
case '1':
|
||||
widget.WriteMood(1)
|
||||
break
|
||||
return widget.WriteMood(1)
|
||||
case '2':
|
||||
widget.WriteMood(2)
|
||||
break
|
||||
return widget.WriteMood(2)
|
||||
case '3':
|
||||
widget.WriteMood(3)
|
||||
break
|
||||
return widget.WriteMood(3)
|
||||
default:
|
||||
widget.WriteMood(-1)
|
||||
break
|
||||
return widget.WriteMood(-1)
|
||||
}
|
||||
return widget.drawTable()
|
||||
}
|
||||
|
||||
func (widget *MoodText) WriteMood(mood int) {
|
||||
func (widget *MoodText) WriteMood(mood int) error {
|
||||
m := moods()
|
||||
if m[strconv.Itoa(time.Now().Year())] == nil {
|
||||
m[strconv.Itoa(time.Now().Year())] = make(map[string]map[string]int)
|
||||
@@ -318,10 +313,11 @@ func (widget *MoodText) WriteMood(mood int) {
|
||||
m[strconv.Itoa(time.Now().Year())][strconv.Itoa(int(widget.selectedMonth))][strconv.Itoa(widget.selectedDay)] = mood
|
||||
newMoods, err := json.MarshalIndent(m, "", " ")
|
||||
if err != nil {
|
||||
widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
return widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
|
||||
}
|
||||
if err := os.WriteFile(moodsFile, newMoods, 0644); err != nil {
|
||||
widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
// ignore
|
||||
return widget.Write(fmt.Sprintf("Error: %s", err.Error()), text.WriteCellOpts(cell.FgColor(cell.ColorRed)))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user