@@ -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
92106end
93107
94108--- Unsubscribe from local state and server subscriptions
0 commit comments