feat(config): internal/config (load/save atomik + validasi) — wiring bahasa/suara/animasi + doctor baca config
CI / test (push) Successful in 13m3s
CI / test (push) Successful in 13m3s
This commit is contained in:
1 parent
36bc33f904
commit
c65d2cb75d
8 files changed
+328
-15
No files matched your search
+25
-5
@@ -11,6 +11,7 @@ import (
|
||||
"charm.land/lipgloss/v2"
|
||||
|
||||
"gitea.oxpoe.qzz.io/oxpoe/tia-love/internal/audio"
|
||||
"gitea.oxpoe.qzz.io/oxpoe/tia-love/internal/config"
|
||||
"gitea.oxpoe.qzz.io/oxpoe/tia-love/internal/docker"
|
||||
"gitea.oxpoe.qzz.io/oxpoe/tia-love/internal/i18n"
|
||||
"gitea.oxpoe.qzz.io/oxpoe/tia-love/internal/sysinfo"
|
||||
@@ -64,12 +65,24 @@ type Model struct {
|
||||
}
|
||||
|
||||
func New() Model {
|
||||
cfg, cfgErr := config.Load()
|
||||
// shortcut: TIA_LANG = override khusus dev/tes; sumber resmi bahasa
|
||||
// tetap config (ui.language) — dihapus saat layar Pengaturan jadi.
|
||||
if l := os.Getenv("TIA_LANG"); l != "" {
|
||||
cfg.UI.Language = l
|
||||
}
|
||||
i18n.SetLang(cfg.UI.Language)
|
||||
|
||||
cl, err := docker.New()
|
||||
host, _ := os.Hostname()
|
||||
m := Model{
|
||||
sound: audio.New(audio.Options{Enabled: true, Volume: 70, MuteOnSSH: true}),
|
||||
sound: audio.New(audio.Options{
|
||||
Enabled: cfg.UI.SoundEnabled,
|
||||
Volume: cfg.UI.SoundVolume,
|
||||
MuteOnSSH: cfg.UI.SoundMuteOnSSH,
|
||||
}),
|
||||
tickID: animation.NewID(),
|
||||
animating: true,
|
||||
animating: cfg.UI.AnimationEnabled,
|
||||
toast: components.NewToast(),
|
||||
view: viewHome,
|
||||
hostname: host,
|
||||
@@ -77,6 +90,9 @@ func New() Model {
|
||||
cl: cl,
|
||||
loading: true,
|
||||
}
|
||||
if cfgErr != nil {
|
||||
m.toast.Show(i18n.T("toast.configError"), cfgErr.Error())
|
||||
}
|
||||
if err != nil {
|
||||
m.loadErr = err
|
||||
m.engineErr = err
|
||||
@@ -86,10 +102,14 @@ func New() Model {
|
||||
}
|
||||
|
||||
func (m Model) Init() tea.Cmd {
|
||||
if m.cl == nil {
|
||||
return animation.Next(m.tickID)
|
||||
var cmds []tea.Cmd
|
||||
if m.animating {
|
||||
cmds = append(cmds, animation.Next(m.tickID))
|
||||
}
|
||||
return tea.Batch(animation.Next(m.tickID), loadContainers(m.cl), loadInfo(m.cl))
|
||||
if m.cl != nil {
|
||||
cmds = append(cmds, loadContainers(m.cl), loadInfo(m.cl))
|
||||
}
|
||||
return tea.Batch(cmds...)
|
||||
}
|
||||
|
||||
func loadContainers(cl *docker.Client) tea.Cmd {
|
||||
|
||||
Reference in new issue
Block a user