summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal/app
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-06-18 22:20:03 -0400
committerDax Raad <[email protected]>2025-06-18 23:01:19 -0400
commite5e9b3e3c04df00db57d573d3cc0a029736184b1 (patch)
tree0d86520f7b243a08168f27a2f1302a5ee1438560 /packages/tui/internal/app
parent1e8a681de923518e3828306c4897e72ac803b6dd (diff)
downloadopencode-e5e9b3e3c04df00db57d573d3cc0a029736184b1.tar.gz
opencode-e5e9b3e3c04df00db57d573d3cc0a029736184b1.zip
rework config
Diffstat (limited to 'packages/tui/internal/app')
-rw-r--r--packages/tui/internal/app/app.go38
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)
}