diff options
| author | Dax Raad <[email protected]> | 2025-06-18 22:20:03 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-06-18 23:01:19 -0400 |
| commit | e5e9b3e3c04df00db57d573d3cc0a029736184b1 (patch) | |
| tree | 0d86520f7b243a08168f27a2f1302a5ee1438560 /packages/tui/internal/app | |
| parent | 1e8a681de923518e3828306c4897e72ac803b6dd (diff) | |
| download | opencode-e5e9b3e3c04df00db57d573d3cc0a029736184b1.tar.gz opencode-e5e9b3e3c04df00db57d573d3cc0a029736184b1.zip | |
rework config
Diffstat (limited to 'packages/tui/internal/app')
| -rw-r--r-- | packages/tui/internal/app/app.go | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go index 6f0733aa3..eb4bd2dad 100644 --- a/packages/tui/internal/app/app.go +++ b/packages/tui/internal/app/app.go @@ -22,8 +22,9 @@ type App struct { Info client.AppInfo Version string StatePath string - Config *config.Config + Configg *client.ConfigInfo Client *client.ClientWithResponses + State *config.State Provider *client.ProviderInfo Model *client.ModelInfo Session *client.SessionInfo @@ -54,14 +55,15 @@ func New( ) (*App, error) { RootPath = appInfo.Path.Root - appConfigPath := filepath.Join(appInfo.Path.Config, "config") - appConfig, err := config.LoadConfig(appConfigPath) + configResponse, err := httpClient.PostConfigGetWithResponse(ctx) if err != nil { - appConfig = config.NewConfig() + return nil, err } - if len(appConfig.Keybinds) == 0 { - appConfig.Keybinds = make(map[string]string) - appConfig.Keybinds["leader"] = "ctrl+x" + configInfo := configResponse.JSON200 + if configInfo.Keybinds == nil { + keybinds := make(map[string]string) + keybinds["leader"] = "ctrl+x" + configInfo.Keybinds = &keybinds } appStatePath := filepath.Join(appInfo.Path.State, "tui") @@ -71,20 +73,25 @@ func New( config.SaveState(appStatePath, appState) } - mergedConfig := config.MergeState(appState, appConfig) - theme.SetTheme(mergedConfig.Theme) + if configInfo.Theme != nil { + appState.Theme = *configInfo.Theme + } + if appState.Theme != "" { + theme.SetTheme(appState.Theme) + } - slog.Debug("Loaded config", "config", mergedConfig) + slog.Debug("Loaded config", "config", configInfo) app := &App{ Info: appInfo, Version: version, StatePath: appStatePath, - Config: mergedConfig, + Configg: configInfo, + State: appState, Client: httpClient, Session: &client.SessionInfo{}, Messages: []client.MessageInfo{}, - Commands: commands.LoadFromConfig(mergedConfig), + Commands: commands.LoadFromConfig(configInfo), } return app, nil @@ -130,11 +137,11 @@ func (a *App) InitializeProvider() tea.Cmd { var currentProvider *client.ProviderInfo var currentModel *client.ModelInfo for _, provider := range providers { - if provider.Id == a.Config.Provider { + if provider.Id == a.State.Provider { currentProvider = &provider for _, model := range provider.Models { - if model.Id == a.Config.Model { + if model.Id == a.State.Model { currentModel = &model } } @@ -182,8 +189,7 @@ func (a *App) IsBusy() bool { } func (a *App) SaveState() { - state := config.ConfigToState(a.Config) - err := config.SaveState(a.StatePath, state) + err := config.SaveState(a.StatePath, a.State) if err != nil { slog.Error("Failed to save state", "error", err) } |
