Add localized error handling for database timeout

Introduced a new localized error message "errorDatabaseTimeout" in multiple languages (English, Kazakh, Russian) and updated the `PanicError` method to handle database timeout errors more gracefully. This improves user feedback by providing context-specific error messages.
This commit is contained in:
2025-05-18 19:32:57 +05:00
parent 9d46db43c2
commit a831d56d93
4 changed files with 34 additions and 3 deletions

View File

@@ -1,11 +1,14 @@
package error
import (
"errors"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/lang"
"fyne.io/fyne/v2/widget"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/kernel"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/localizer"
"github.com/nicksnyder/go-i18n/v2/i18n"
"go.etcd.io/bbolt"
)
type ViewContract interface {
@@ -13,24 +16,38 @@ type ViewContract interface {
}
type View struct {
app kernel.AppContract
app kernel.AppContract
isSetLanguage bool
}
func NewView(app kernel.AppContract) *View {
return &View{
app: app,
app: app,
isSetLanguage: true,
}
}
func (v View) PanicError(err error) {
if v.isSetLanguage {
v.isSetLanguage = false
_ = v.app.GetLocalizerService().SetCurrentLanguageByCode(lang.SystemLocale().LanguageString())
}
messageHead := v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
MessageID: "error",
})
messagetText := err.Error()
if errors.Is(err, bbolt.ErrTimeout) {
messagetText = v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
MessageID: "errorDatabaseTimeout",
})
}
v.app.GetWindow().SetContent(container.NewBorder(
container.NewVBox(
widget.NewLabel(messageHead),
widget.NewLabel(err.Error()),
widget.NewLabel(messagetText),
),
nil,
nil,
@@ -42,6 +59,11 @@ func (v View) PanicError(err error) {
}
func (v View) PanicErrorWriteDirectoryData() {
if v.isSetLanguage {
v.isSetLanguage = false
_ = v.app.GetLocalizerService().SetCurrentLanguageByCode(lang.SystemLocale().LanguageString())
}
message := v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
MessageID: "errorDatabase",
})