diff --git a/lua/avante/providers/copilot.lua b/lua/avante/providers/copilot.lua index 1078859bd..b21818148 100644 --- a/lua/avante/providers/copilot.lua +++ b/lua/avante/providers/copilot.lua @@ -91,7 +91,7 @@ H.refresh_token = function() not M.state.github_token or (M.state.github_token.expires_at and M.state.github_token.expires_at < math.floor(os.time())) then - curl.get(H.chat_auth_url, { + local response = curl.get(H.chat_auth_url, { headers = { ["Authorization"] = "token " .. M.state.oauth_token, ["Accept"] = "application/json", @@ -99,14 +99,16 @@ H.refresh_token = function() timeout = Config.copilot.timeout, proxy = Config.copilot.proxy, insecure = Config.copilot.allow_insecure, - on_error = function(err) error("Failed to get response: " .. vim.inspect(err)) end, - callback = function(output) - M.state.github_token = vim.json.decode(output.body) - local file = Path:new(copilot_path) - file:write(vim.json.encode(M.state.github_token), "w") - if not vim.g.avante_login then vim.g.avante_login = true end - end, }) + + if response.status == 200 then + M.state.github_token = vim.json.decode(response.body) + local file = Path:new(copilot_path) + file:write(vim.json.encode(M.state.github_token), "w") + if not vim.g.avante_login then vim.g.avante_login = true end + else + error("Failed to get success response: " .. vim.inspect(response)) + end end end @@ -168,7 +170,8 @@ M.setup = function() oauth_token = H.get_oauth_token(), } end - H.refresh_token() + + vim.schedule(function() H.refresh_token() end) require("avante.tokenizers").setup(M.tokenizer_id) vim.g.avante_login = true