MCPcopy Create free account
hub / github.com/GCWing/BitFun / navigate_back

Method navigate_back

src/apps/cli/src/modes/chat.rs:222–272  ·  view source on GitHub ↗

Navigate back to the previous popup in the stack, or close all if at the root

(&self, chat_view: &mut ChatView)

Source from the content-addressed store, hash-verified

220
221 /// Navigate back to the previous popup in the stack, or close all if at the root
222 fn navigate_back(&self, chat_view: &mut ChatView) {
223 // Pop the current popup from the stack and hide it
224 if let Some(current) = chat_view.popup_stack.pop() {
225 // Hide the current popup
226 match current {
227 crate::ui::chat::PopupType::CommandPalette => chat_view.hide_command_palette(),
228 crate::ui::chat::PopupType::ModelSelector => chat_view.hide_model_selector(),
229 crate::ui::chat::PopupType::AgentSelector => chat_view.hide_agent_selector(),
230 crate::ui::chat::PopupType::SessionSelector => chat_view.hide_session_selector(),
231 crate::ui::chat::PopupType::SkillSelector => chat_view.hide_skill_selector(),
232 crate::ui::chat::PopupType::SubagentSelector => chat_view.hide_subagent_selector(),
233 crate::ui::chat::PopupType::McpSelector => chat_view.hide_mcp_selector(),
234 crate::ui::chat::PopupType::McpAddDialog => chat_view.hide_mcp_add_dialog(),
235 crate::ui::chat::PopupType::ProviderSelector => chat_view.hide_provider_selector(),
236 crate::ui::chat::PopupType::ModelConfigForm => chat_view.hide_model_config_form(),
237 crate::ui::chat::PopupType::ThemeSelector => {
238 chat_view.hide_theme_selector();
239 chat_view.cancel_theme_preview();
240 }
241 crate::ui::chat::PopupType::InfoPopup => chat_view.dismiss_info_popup(),
242 }
243
244 // If there's a previous popup in the stack, re-show it
245 if let Some(previous) = chat_view.popup_stack.peek() {
246 match previous {
247 crate::ui::chat::PopupType::CommandPalette => {
248 chat_view.reshow_command_palette()
249 }
250 crate::ui::chat::PopupType::ModelSelector => chat_view.reshow_model_selector(),
251 crate::ui::chat::PopupType::AgentSelector => chat_view.reshow_agent_selector(),
252 crate::ui::chat::PopupType::SessionSelector => {
253 chat_view.reshow_session_selector()
254 }
255 crate::ui::chat::PopupType::SkillSelector => chat_view.reshow_skill_selector(),
256 crate::ui::chat::PopupType::SubagentSelector => {
257 chat_view.reshow_subagent_selector()
258 }
259 crate::ui::chat::PopupType::McpSelector => chat_view.reshow_mcp_selector(),
260 crate::ui::chat::PopupType::McpAddDialog => chat_view.reshow_mcp_add_dialog(),
261 crate::ui::chat::PopupType::ProviderSelector => {
262 chat_view.reshow_provider_selector()
263 }
264 crate::ui::chat::PopupType::ModelConfigForm => {
265 chat_view.reshow_model_config_form()
266 }
267 crate::ui::chat::PopupType::ThemeSelector => chat_view.reshow_theme_selector(),
268 crate::ui::chat::PopupType::InfoPopup => {}
269 }
270 }
271 }
272 }
273
274 pub fn run(
275 &mut self,

Callers 1

handle_key_eventMethod · 0.45

Calls 15

hide_command_paletteMethod · 0.80
hide_model_selectorMethod · 0.80
hide_agent_selectorMethod · 0.80
hide_session_selectorMethod · 0.80
hide_skill_selectorMethod · 0.80
hide_mcp_selectorMethod · 0.80
hide_mcp_add_dialogMethod · 0.80
hide_theme_selectorMethod · 0.80
dismiss_info_popupMethod · 0.80

Tested by

no test coverage detected