diff --git a/src/app/browser/window/tab/item/identity/default/widget/form/list/item.rs b/src/app/browser/window/tab/item/identity/default/widget/form/list/item.rs index cc8611d8..de6e40b9 100644 --- a/src/app/browser/window/tab/item/identity/default/widget/form/list/item.rs +++ b/src/app/browser/window/tab/item/identity/default/widget/form/list/item.rs @@ -63,9 +63,10 @@ impl Item { // Extract certificate details from PEM string Ok(ref pem) => match TlsCertificate::from_pem(pem) { // Collect certificate scopes for item - Ok(ref certificate) => match scope(profile, profile_identity_id) { - // Ready to build `Item` GObject - Ok(ref scope) => Ok(Object::builder() + Ok(ref certificate) => { + let scope = &profile.identity.auth.scope(profile_identity_id); + + Ok(Object::builder() .property("value", profile_identity_id) .property("title", title::new_for_profile_identity_id(certificate)) .property( @@ -84,9 +85,8 @@ impl Item { auth_url, ), ) - .build()), - Err(_) => todo!(), - }, + .build()) + } Err(e) => Err(Error::TlsCertificate(e)), }, Err(_) => todo!(), @@ -106,7 +106,7 @@ impl Item { Ok(ref pem) => match TlsCertificate::from_pem(pem) { Ok(ref certificate) => { // Get current scope - let scope = &scope(profile, profile_identity_id)?; + let scope = &profile.identity.auth.scope(profile_identity_id); // Update properties self.set_title(title::new_for_profile_identity_id(certificate)); @@ -153,22 +153,3 @@ impl Item { } } } - -// Tools - -/// Collect certificate scope vector from `Profile` database for `profile_identity_id` -fn scope(profile: &Rc, profile_identity_id: i64) -> Result, Error> { - match profile.identity.auth.database.records_scope(None) { - Ok(result) => { - let mut scope = Vec::new(); - for auth in result - .iter() - .filter(|this| this.profile_identity_id == profile_identity_id) - { - scope.push(auth.scope.clone()) - } - Ok(scope) - } - Err(_) => todo!(), - } -} diff --git a/src/profile/identity/auth.rs b/src/profile/identity/auth.rs index 8e24bed8..4d7265cf 100644 --- a/src/profile/identity/auth.rs +++ b/src/profile/identity/auth.rs @@ -11,10 +11,10 @@ use memory::Memory; use sqlite::{Connection, Transaction}; use std::{rc::Rc, sync::RwLock}; -/// API for `profile_identity_id` + `scope` auth pairs operations +/// Auth pair operations pub struct Auth { - pub database: Rc, - pub memory: Rc, + database: Rc, + memory: Rc, } impl Auth { @@ -124,6 +124,23 @@ impl Auth { .is_some_and(|auth| auth.profile_identity_id == profile_identity_id) } + /// Collect certificate scope vector from `Profile` database for `profile_identity_id` + pub fn scope(&self, profile_identity_id: i64) -> Vec { + let mut scope = Vec::new(); + match self.database.records_scope(None) { + Ok(result) => { + for auth in result + .iter() + .filter(|this| this.profile_identity_id == profile_identity_id) + { + scope.push(auth.scope.clone()) + } + } + Err(_) => todo!(), + } + scope + } + /// Get memory item string match request pub fn get(&self, request: &str) -> Option { self.memory.match_scope(&filter_scope(request))