Skip to content

Commit 1f23916

Browse files
committed
fix: trigger topbar re-render when providers load for context limit
Replace unreliable :wait() approach with a one-time finally callback on the providers promise that calls topbar.render(). This guarantees the percentage appears even when providers load asynchronously after the initial render.
1 parent dc1d61c commit 1f23916

1 file changed

Lines changed: 12 additions & 9 deletions

File tree

lua/opencode/config_file.lua

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,27 @@ M.get_workspace_snapshot_path = Promise.async(function()
5151
return home .. '/.local/share/opencode/snapshot/' .. project.id
5252
end)
5353

54+
local _providers_render_callback = false
55+
5456
---@return Promise<OpencodeProvidersResponse|nil>
5557
function M.get_opencode_providers()
5658
if not M.providers_promise then
5759
local state = require('opencode.state')
5860
M.providers_promise = state.api_client:list_providers()
5961
end
60-
return M.providers_promise:catch(function(err)
62+
local wrapped = M.providers_promise:catch(function(err)
6163
vim.notify('Error fetching Opencode providers: ' .. vim.inspect(err), vim.log.levels.ERROR)
6264
return nil
6365
end)
66+
if not _providers_render_callback then
67+
_providers_render_callback = true
68+
wrapped:finally(function()
69+
local ok, _ = pcall(function()
70+
require('opencode.ui.topbar').render()
71+
end)
72+
end)
73+
end
74+
return wrapped
6475
end
6576

6677
--- Get model information for a specific provider and model
@@ -69,14 +80,6 @@ end
6980
--- @return OpencodeModel|nil Model information with variants
7081
M.get_model_info = function(provider, model)
7182
local providers_response = M.get_opencode_providers():peek()
72-
if not providers_response then
73-
local ok, result = pcall(function()
74-
return M.get_opencode_providers():wait(200)
75-
end)
76-
if ok then
77-
providers_response = result
78-
end
79-
end
8083

8184
local providers = providers_response and providers_response.providers or {}
8285

0 commit comments

Comments
 (0)