feat: persist chub settings and instances
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"chub/internal/platform/config"
|
||||
"chub/internal/platform/logging"
|
||||
"chub/internal/ui"
|
||||
"gioui.org/app"
|
||||
@@ -29,6 +30,22 @@ func runWindow(logger *slog.Logger) {
|
||||
window.Option(app.Title("Chub 浏览器管理"), app.Size(unit.Dp(1100), unit.Dp(720)))
|
||||
theme := material.NewTheme()
|
||||
shell := ui.NewShell(theme)
|
||||
if path, err := config.DefaultPath(); err == nil {
|
||||
if store, err := config.New(path); err == nil {
|
||||
if saved, err := store.Load(); err == nil {
|
||||
shell.SetSettings(ui.SettingsState{ChromePath: saved.Settings.ChromePath, EdgePath: saved.Settings.EdgePath, DefaultDir: saved.Settings.DefaultDir, LogDir: saved.Settings.LogDir, CloseOnExit: saved.Settings.CloseOnExit})
|
||||
rows := make([]ui.InstanceRow, 0, len(saved.Instances))
|
||||
for _, item := range saved.Instances {
|
||||
rows = append(rows, ui.InstanceRow{Name: item.Name, Browser: string(item.Launch.Kind), Profile: item.Launch.ProfileDirectory, Status: "已退出"})
|
||||
}
|
||||
shell.SetInstances(rows)
|
||||
shell.OnSave(func(value ui.SettingsState) {
|
||||
saved.Settings = config.Settings{ChromePath: value.ChromePath, EdgePath: value.EdgePath, DefaultDir: value.DefaultDir, LogDir: value.LogDir, CloseOnExit: value.CloseOnExit}
|
||||
go saveSettings(logger, store, saved)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
var ops op.Ops
|
||||
for {
|
||||
switch event := window.Event().(type) {
|
||||
@@ -44,3 +61,10 @@ func runWindow(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func saveSettings(logger *slog.Logger, store *config.Store, value config.File) {
|
||||
err := store.Save(value)
|
||||
if err != nil {
|
||||
logger.Error("save settings", "error", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user