support custom userdata
This commit is contained in:
@@ -1,43 +1,32 @@
|
||||
use std::{
|
||||
collections::{BTreeMap, BTreeSet},
|
||||
fs,
|
||||
path::Path,
|
||||
path::{Path, PathBuf},
|
||||
};
|
||||
|
||||
use serde_json::Value;
|
||||
use tauri::AppHandle;
|
||||
|
||||
use crate::{
|
||||
browsers::browser_definitions,
|
||||
config_store,
|
||||
models::{
|
||||
BookmarkSummary, BrowserDefinition, BrowserStats, BrowserView, ExtensionSummary,
|
||||
BookmarkSummary, BrowserConfigEntry, BrowserStats, BrowserView, ExtensionSummary,
|
||||
ProfileSummary, ScanResponse, TempBookmark, TempExtension,
|
||||
},
|
||||
utils::{
|
||||
first_non_empty, load_image_as_data_url, local_app_data_dir, pick_latest_subdirectory,
|
||||
read_json_file,
|
||||
},
|
||||
utils::{first_non_empty, load_image_as_data_url, pick_latest_subdirectory, read_json_file},
|
||||
};
|
||||
|
||||
pub fn scan_browsers() -> Result<ScanResponse, String> {
|
||||
let local_app_data = local_app_data_dir().ok_or_else(|| {
|
||||
"Unable to resolve the LOCALAPPDATA directory for the current user.".to_string()
|
||||
})?;
|
||||
|
||||
let browsers = browser_definitions()
|
||||
pub fn scan_browsers(app: &AppHandle) -> Result<ScanResponse, String> {
|
||||
let browsers = config_store::resolve_browser_configs(app)?
|
||||
.into_iter()
|
||||
.filter_map(|definition| scan_browser(&local_app_data, definition))
|
||||
.filter_map(scan_browser)
|
||||
.collect();
|
||||
|
||||
Ok(ScanResponse { browsers })
|
||||
}
|
||||
|
||||
fn scan_browser(local_app_data: &Path, definition: BrowserDefinition) -> Option<BrowserView> {
|
||||
let root = definition
|
||||
.local_app_data_segments
|
||||
.iter()
|
||||
.fold(local_app_data.to_path_buf(), |path, segment| {
|
||||
path.join(segment)
|
||||
});
|
||||
fn scan_browser(config: BrowserConfigEntry) -> Option<BrowserView> {
|
||||
let root = PathBuf::from(&config.user_data_path);
|
||||
|
||||
if !root.is_dir() {
|
||||
return None;
|
||||
@@ -99,8 +88,9 @@ fn scan_browser(local_app_data: &Path, definition: BrowserDefinition) -> Option<
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
Some(BrowserView {
|
||||
browser_id: definition.id.to_string(),
|
||||
browser_name: definition.name.to_string(),
|
||||
browser_id: config.id,
|
||||
browser_family_id: config.browser_family_id,
|
||||
browser_name: config.name,
|
||||
data_root: root.display().to_string(),
|
||||
stats: BrowserStats {
|
||||
profile_count: profiles.len(),
|
||||
|
||||
Reference in New Issue
Block a user