Skip to content

Commit 78ab771

Browse files
committed
fix(session_picker): switch to remaining session when deleting active one
1 parent 8625b2f commit 78ab771

1 file changed

Lines changed: 19 additions & 3 deletions

File tree

lua/opencode/ui/session_picker.lua

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,28 @@ function M.pick(sessions, callback)
5656

5757
local sessions_to_delete = type(selected) == 'table' and selected.id == nil and selected or { selected }
5858

59-
for _, session in ipairs(sessions_to_delete) do
60-
if state.active_session and state.active_session.id == session.id then
59+
local to_delete_ids = {}
60+
for _, s in ipairs(sessions_to_delete) do
61+
to_delete_ids[s.id] = true
62+
end
63+
64+
local deleting_current = state.active_session and to_delete_ids[state.active_session.id] or false
65+
66+
if deleting_current then
67+
local core = require('opencode.core')
68+
local remaining = vim.tbl_filter(function(item)
69+
return not to_delete_ids[item.id]
70+
end, opts.items or {})
71+
72+
if #remaining > 0 then
73+
core.switch_session(remaining[1].id):await()
74+
else
6175
vim.notify('deleting current session, creating new session')
62-
state.session.set_active(require('opencode.core').create_new_session():await())
76+
state.session.set_active(core.create_new_session():await())
6377
end
78+
end
6479

80+
for _, session in ipairs(sessions_to_delete) do
6581
state.api_client:delete_session(session.id):catch(function(err)
6682
vim.schedule(function()
6783
vim.notify('Failed to delete session ' .. session.id .. ': ' .. vim.inspect(err), vim.log.levels.ERROR)

0 commit comments

Comments
 (0)