{"repo": "carrot-peace/deepseek-desktop", "files": {"src-tauri/src/secrets.rs": {"7f0eb17e6408dc214c356fea1b91830dc26e748b": {"t": 1785745865.8393455, "n": 1189, "h": "e515ef8ef9c471d3", "c": "const SERVICE: &str = \"DeepSeek Desktop\";\n\npub fn set_secret(key: &str, value: &str) -> Result<(), String> {\n if value.trim().is_empty() {\n return Err(\"密钥不能为空\".to_string());\n }\n keyring::Entry::new(SERVICE, key)\n .map_err(|error| error.to_string())?\n .set_password(value)\n .map_err(|error| error.to_string())\n}\n\npub fn get_secret(key: &str) -> Result {\n keyring::Entry::new(SERVICE, key)\n .map_err(|error| error.to_string())?\n .get_password()\n .map_err(|_| match key {\n \"deepseek_api_key\" => \"DeepSeek API Key 未配置,请先在设置中填写。\".to_string(),\n \"tavily_api_key\" => \"Tavily API Key 未配置,请先在设置中填写。\".to_string(),\n _ => \"密钥未配置\".to_string(),\n })\n}\n\npub fn has_secret(key: &str) -> bool {\n keyring::Entry::new(SERVICE, key)\n .and_then(|entry| entry.get_password())\n .map(|value| !value.is_empty())\n .unwrap_or(false)\n}\n\npub fn delete_secret(key: &str) -> Result<(), String> {\n let entry = keyring::Entry::new(SERVICE, key).map_err(|error| error.to_string())?;\n match entry.delete_credential() {\n Ok(()) => Ok(()),\n Err(_) => Ok(()),\n }\n}\n"}, "4d2cff3550e1cc0dd569fa567f1b6985131f30fa": {"t": 1785757392.5231895, "n": 1189, "h": "e515ef8ef9c471d3", "c": "const SERVICE: &str = \"DeepSeek Desktop\";\n\npub fn set_secret(key: &str, value: &str) -> Result<(), String> {\n if value.trim().is_empty() {\n return Err(\"密钥不能为空\".to_string());\n }\n keyring::Entry::new(SERVICE, key)\n .map_err(|error| error.to_string())?\n .set_password(value)\n .map_err(|error| error.to_string())\n}\n\npub fn get_secret(key: &str) -> Result {\n keyring::Entry::new(SERVICE, key)\n .map_err(|error| error.to_string())?\n .get_password()\n .map_err(|_| match key {\n \"deepseek_api_key\" => \"DeepSeek API Key 未配置,请先在设置中填写。\".to_string(),\n \"tavily_api_key\" => \"Tavily API Key 未配置,请先在设置中填写。\".to_string(),\n _ => \"密钥未配置\".to_string(),\n })\n}\n\npub fn has_secret(key: &str) -> bool {\n keyring::Entry::new(SERVICE, key)\n .and_then(|entry| entry.get_password())\n .map(|value| !value.is_empty())\n .unwrap_or(false)\n}\n\npub fn delete_secret(key: &str) -> Result<(), String> {\n let entry = keyring::Entry::new(SERVICE, key).map_err(|error| error.to_string())?;\n match entry.delete_credential() {\n Ok(()) => Ok(()),\n Err(_) => Ok(()),\n }\n}\n"}}}}