#include "session_state.h" namespace navegator { SessionState& g_session() { static SessionState s; return s; } void SessionState::select_browser(int port) { std::lock_guard lk(mu); if (selected_port == port) return; selected_port = port; selected_tab_id.clear(); selected_tab_ws_url.clear(); tabs.clear(); tabs_error.clear(); if (net) { net->close(); net.reset(); } } void SessionState::select_tab(const std::string& tab_id, const std::string& ws_url) { std::lock_guard lk(mu); if (selected_tab_id == tab_id) return; selected_tab_id = tab_id; selected_tab_ws_url = ws_url; if (net) { net->close(); net.reset(); } if (!ws_url.empty()) { net = std::make_unique(); std::string err; if (!net->open(ws_url, &err)) { net_error = err; net.reset(); } else { net_error.clear(); } } } void SessionState::clear_selection() { std::lock_guard lk(mu); selected_port = 0; selected_tab_id.clear(); selected_tab_ws_url.clear(); tabs.clear(); tabs_error.clear(); if (net) { net->close(); net.reset(); } } } // namespace navegator