Skip to content

Commit f502443

Browse files
cameronrsudo-tee
authored andcommitted
chore(refactor): cleaner sub/unsub
1 parent 64fe528 commit f502443

File tree

1 file changed

+30
-16
lines changed

1 file changed

+30
-16
lines changed

lua/opencode/ui/renderer.lua

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -73,22 +73,36 @@ function M._setup_event_subscriptions(subscribe)
7373
return
7474
end
7575

76-
local method = (subscribe == false) and 'unsubscribe' or 'subscribe'
77-
78-
state.event_manager[method](state.event_manager, 'session.updated', M.on_session_updated)
79-
state.event_manager[method](state.event_manager, 'session.compacted', M.on_session_compacted)
80-
state.event_manager[method](state.event_manager, 'session.error', M.on_session_error)
81-
state.event_manager[method](state.event_manager, 'message.updated', M.on_message_updated)
82-
state.event_manager[method](state.event_manager, 'message.removed', M.on_message_removed)
83-
state.event_manager[method](state.event_manager, 'message.part.updated', M.on_part_updated)
84-
state.event_manager[method](state.event_manager, 'message.part.removed', M.on_part_removed)
85-
state.event_manager[method](state.event_manager, 'permission.updated', M.on_permission_updated)
86-
state.event_manager[method](state.event_manager, 'permission.replied', M.on_permission_replied)
87-
state.event_manager[method](state.event_manager, 'file.edited', M.on_file_edited)
88-
state.event_manager[method](state.event_manager, 'custom.restore_point.created', M.on_restore_points)
89-
state.event_manager[method](state.event_manager, 'custom.emit_events.finished', M.on_emit_events_finished)
90-
91-
state[method]('is_opencode_focused', M.on_focus_changed)
76+
subscribe = subscribe or true
77+
78+
local event_subscriptions = {
79+
{ 'session.updated', M.on_session_updated },
80+
{ 'session.compacted', M.on_session_compacted },
81+
{ 'session.error', M.on_session_error },
82+
{ 'message.updated', M.on_message_updated },
83+
{ 'message.removed', M.on_message_removed },
84+
{ 'message.part.updated', M.on_part_updated },
85+
{ 'message.part.removed', M.on_part_removed },
86+
{ 'permission.updated', M.on_permission_updated },
87+
{ 'permission.replied', M.on_permission_replied },
88+
{ 'file.edited', M.on_file_edited },
89+
{ 'custom.restore_point.created', M.on_restore_points },
90+
{ 'custom.emit_events.finished', M.on_emit_events_finished },
91+
}
92+
93+
for _, sub in ipairs(event_subscriptions) do
94+
if subscribe then
95+
state.event_manager:subscribe(sub[1], sub[2])
96+
else
97+
state.event_manager:unsubscribe(sub[1], sub[2])
98+
end
99+
end
100+
101+
if subscribe then
102+
state.subscribe('is_opencode_focused', M.on_focus_changed)
103+
else
104+
state.unsubscribe('is_opencode_focused', M.on_focus_changed)
105+
end
92106
end
93107

94108
---Unsubscribe from local state and server subscriptions

0 commit comments

Comments
 (0)