diff --git a/lua/cp/commands/init.lua b/lua/cp/commands/init.lua index 8731a8f..c13b196 100644 --- a/lua/cp/commands/init.lua +++ b/lua/cp/commands/init.lua @@ -428,7 +428,10 @@ function M.handle_command(opts) elseif cmd.action == 'login' then local p = cmd.platform or state.get_platform() if not p then - logger.log('No platform active. Usage: :CP login', { level = vim.log.levels.ERROR }) + logger.log( + 'No platform active. Usage: :CP login', + { level = vim.log.levels.ERROR } + ) return end if not check_platform_enabled(p) then @@ -438,7 +441,10 @@ function M.handle_command(opts) elseif cmd.action == 'logout' then local p = cmd.platform or state.get_platform() if not p then - logger.log('No platform active. Usage: :CP logout', { level = vim.log.levels.ERROR }) + logger.log( + 'No platform active. Usage: :CP logout', + { level = vim.log.levels.ERROR } + ) return end if not check_platform_enabled(p) then @@ -448,15 +454,15 @@ function M.handle_command(opts) elseif cmd.action == 'signup' then local p = cmd.platform or state.get_platform() if not p then - logger.log('No platform active. Usage: :CP signup', { level = vim.log.levels.ERROR }) + logger.log( + 'No platform active. Usage: :CP signup', + { level = vim.log.levels.ERROR } + ) return end local url = constants.SIGNUP_URLS[p] if not url then - logger.log( - ("No signup URL available for '%s'"):format(p), - { level = vim.log.levels.WARN } - ) + logger.log(("No signup URL available for '%s'"):format(p), { level = vim.log.levels.WARN }) return end vim.ui.open(url) diff --git a/lua/cp/credentials.lua b/lua/cp/credentials.lua index 78d260f..4f22038 100644 --- a/lua/cp/credentials.lua +++ b/lua/cp/credentials.lua @@ -14,47 +14,50 @@ local STATUS_MESSAGES = { ---@param platform string ---@param display string local function prompt_and_login(platform, display) - vim.ui.input({ prompt = '[cp.nvim]: ' .. display .. ' username ( to cancel): ' }, function(username) - if not username or username == '' then - logger.log(display .. ' login cancelled', { level = vim.log.levels.WARN }) - return - end - vim.fn.inputsave() - local password = vim.fn.inputsecret('[cp.nvim]: ' .. display .. ' password: ') - vim.fn.inputrestore() - if not password or password == '' then - logger.log(display .. ' login cancelled', { level = vim.log.levels.WARN }) - return - end + vim.ui.input( + { prompt = '[cp.nvim]: ' .. display .. ' username ( to cancel): ' }, + function(username) + if not username or username == '' then + logger.log(display .. ' login cancelled', { level = vim.log.levels.WARN }) + return + end + vim.fn.inputsave() + local password = vim.fn.inputsecret('[cp.nvim]: ' .. display .. ' password: ') + vim.fn.inputrestore() + if not password or password == '' then + logger.log(display .. ' login cancelled', { level = vim.log.levels.WARN }) + return + end - local credentials = { username = username, password = password } + local credentials = { username = username, password = password } - local scraper = require('cp.scraper') - scraper.login(platform, credentials, function(ev) - vim.schedule(function() - local msg = STATUS_MESSAGES[ev.status] or ev.status - logger.log(display .. ': ' .. msg, { level = vim.log.levels.INFO, override = true }) + local scraper = require('cp.scraper') + scraper.login(platform, credentials, function(ev) + vim.schedule(function() + local msg = STATUS_MESSAGES[ev.status] or ev.status + logger.log(display .. ': ' .. msg, { level = vim.log.levels.INFO, override = true }) + end) + end, function(result) + vim.schedule(function() + if result.success then + cache.set_credentials(platform, credentials) + logger.log( + display .. ' login successful', + { level = vim.log.levels.INFO, override = true } + ) + else + local err = result.error or 'unknown error' + cache.clear_credentials(platform) + logger.log( + display .. ' login failed: ' .. (constants.LOGIN_ERRORS[err] or err), + { level = vim.log.levels.ERROR } + ) + prompt_and_login(platform, display) + end + end) end) - end, function(result) - vim.schedule(function() - if result.success then - cache.set_credentials(platform, credentials) - logger.log( - display .. ' login successful', - { level = vim.log.levels.INFO, override = true } - ) - else - local err = result.error or 'unknown error' - cache.clear_credentials(platform) - logger.log( - display .. ' login failed: ' .. (constants.LOGIN_ERRORS[err] or err), - { level = vim.log.levels.ERROR } - ) - prompt_and_login(platform, display) - end - end) - end) - end) + end + ) end ---@param platform string? diff --git a/lua/cp/submit.lua b/lua/cp/submit.lua index 0b203c8..5a661ec 100644 --- a/lua/cp/submit.lua +++ b/lua/cp/submit.lua @@ -20,23 +20,26 @@ local function prompt_credentials(platform, callback) return end local display = constants.PLATFORM_DISPLAY_NAMES[platform] or platform - vim.ui.input({ prompt = '[cp.nvim]: ' .. display .. ' username ( to cancel): ' }, function(username) - if not username or username == '' then - logger.log('Submit cancelled', { level = vim.log.levels.WARN }) - return + vim.ui.input( + { prompt = '[cp.nvim]: ' .. display .. ' username ( to cancel): ' }, + function(username) + if not username or username == '' then + logger.log('Submit cancelled', { level = vim.log.levels.WARN }) + return + end + vim.fn.inputsave() + local password = vim.fn.inputsecret('[cp.nvim]: ' .. display .. ' password: ') + vim.fn.inputrestore() + vim.cmd.redraw() + if not password or password == '' then + logger.log('Submit cancelled', { level = vim.log.levels.WARN }) + return + end + local creds = { username = username, password = password } + cache.set_credentials(platform, creds) + callback(creds) end - vim.fn.inputsave() - local password = vim.fn.inputsecret('[cp.nvim]: ' .. display .. ' password: ') - vim.fn.inputrestore() - vim.cmd.redraw() - if not password or password == '' then - logger.log('Submit cancelled', { level = vim.log.levels.WARN }) - return - end - local creds = { username = username, password = password } - cache.set_credentials(platform, creds) - callback(creds) - end) + ) end ---@param opts { language?: string }?