Files
sovereign_browser_rust/src/session.rs
T

44 lines
1.1 KiB
Rust

//! Session save/restore for sovereign_browser
//!
//! Port of `session.c` / `session.h` from the C project.
use crate::db;
use crate::tab_manager;
/// Save the current session (open tabs) to the database.
pub fn session_save() {
let tabs = tab_manager::tab_manager_get_tabs();
let tab_data: Vec<serde_json::Value> = tabs
.iter()
.map(|t| {
serde_json::json!({
"id": t.id,
"title": t.title,
"url": t.url,
})
})
.collect();
if let Ok(json) = serde_json::to_string(&tab_data) {
let _ = db::db_kv_set("session.tabs", &json);
}
}
/// Restore the previous session.
pub fn session_restore() -> Vec<String> {
if let Ok(Some(json)) = db::db_kv_get("session.tabs") {
if let Ok(tabs) = serde_json::from_str::<Vec<serde_json::Value>>(&json) {
return tabs
.iter()
.filter_map(|t| t["url"].as_str().map(|s| s.to_string()))
.collect();
}
}
Vec::new()
}
/// Clear the saved session.
pub fn session_clear() {
let _ = db::db_kv_delete("session.tabs");
}