(&mut self)
| 3151 | } |
| 3152 | |
| 3153 | fn draw(&mut self) -> anyhow::Result<()> { |
| 3154 | self.context |
| 3155 | .set_pending_permissions(self.permission_prompt.pending_count()); |
| 3156 | |
| 3157 | let route = self.context.current_route(); |
| 3158 | if let Route::Session { session_id } = &route { |
| 3159 | self.ensure_session_view(session_id); |
| 3160 | } else { |
| 3161 | self.active_session_id = None; |
| 3162 | self.session_view = None; |
| 3163 | } |
| 3164 | |
| 3165 | let context = self.context.clone(); |
| 3166 | let prompt = &self.prompt; |
| 3167 | let route_for_draw = route.clone(); |
| 3168 | let show_modal_overlay = self.has_open_dialog_layer() |
| 3169 | || self.permission_prompt.is_open |
| 3170 | || self.question_prompt.is_open; |
| 3171 | let session_view = self.session_view.as_mut(); |
| 3172 | let theme = self.context.theme.read().clone(); |
| 3173 | let command_palette = &self.command_palette; |
| 3174 | let model_select = &self.model_select; |
| 3175 | let agent_select = &self.agent_select; |
| 3176 | let session_list_dialog = &self.session_list_dialog; |
| 3177 | let theme_list_dialog = &self.theme_list_dialog; |
| 3178 | let status_dialog = &self.status_dialog; |
| 3179 | let mcp_dialog = &self.mcp_dialog; |
| 3180 | let help_dialog = &self.help_dialog; |
| 3181 | let alert_dialog = &self.alert_dialog; |
| 3182 | let session_rename_dialog = &self.session_rename_dialog; |
| 3183 | let session_export_dialog = &self.session_export_dialog; |
| 3184 | let prompt_stash_dialog = &self.prompt_stash_dialog; |
| 3185 | let skill_list_dialog = &self.skill_list_dialog; |
| 3186 | let timeline_dialog = &self.timeline_dialog; |
| 3187 | let fork_dialog = &self.fork_dialog; |
| 3188 | let provider_dialog = &self.provider_dialog; |
| 3189 | let subagent_dialog = &self.subagent_dialog; |
| 3190 | let tag_dialog = &self.tag_dialog; |
| 3191 | let permission_prompt = &self.permission_prompt; |
| 3192 | let question_prompt = &self.question_prompt; |
| 3193 | let slash_popup = &self.slash_popup; |
| 3194 | let toast = &self.toast; |
| 3195 | let selection = &self.selection; |
| 3196 | |
| 3197 | let mut captured_lines: Vec<String> = Vec::new(); |
| 3198 | |
| 3199 | self.terminal.draw(|frame| { |
| 3200 | let area = frame.size(); |
| 3201 | if area.width < 10 || area.height < 10 { |
| 3202 | return; |
| 3203 | } |
| 3204 | |
| 3205 | match route_for_draw { |
| 3206 | Route::Home => { |
| 3207 | let home = HomeView::new(context.clone()); |
| 3208 | home.render_with_prompt(frame, area, prompt); |
| 3209 | } |
| 3210 | Route::Session { .. } => { |
no test coverage detected