diff --git a/rust/gui-client/src-common/src/controller.rs b/rust/gui-client/src-common/src/controller.rs index 0230e685e..a312f7ec0 100644 --- a/rust/gui-client/src-common/src/controller.rs +++ b/rust/gui-client/src-common/src/controller.rs @@ -709,12 +709,10 @@ impl Controller { Status::RetryingConnection { .. } => system_tray::ConnlibState::RetryingConnection, Status::TunnelReady { resources } => { system_tray::ConnlibState::SignedIn(system_tray::SignedIn { - actor_name: &auth_session.actor_name, - favorite_resources: &self.advanced_settings.favorite_resources, - internet_resource_enabled: &self - .advanced_settings - .internet_resource_enabled, - resources, + actor_name: auth_session.actor_name.clone(), + favorite_resources: self.advanced_settings.favorite_resources.clone(), + internet_resource_enabled: self.advanced_settings.internet_resource_enabled, + resources: resources.clone(), }) } Status::WaitingForPortal { .. } => system_tray::ConnlibState::WaitingForPortal, diff --git a/rust/gui-client/src-common/src/system_tray.rs b/rust/gui-client/src-common/src/system_tray.rs index 3866d28d3..aaf3789d8 100644 --- a/rust/gui-client/src-common/src/system_tray.rs +++ b/rust/gui-client/src-common/src/system_tray.rs @@ -30,12 +30,12 @@ const ENABLE: &str = "Enable this resource"; mod builder; -pub struct AppState<'a> { - pub connlib: ConnlibState<'a>, +pub struct AppState { + pub connlib: ConnlibState, pub release: Option, } -impl<'a> AppState<'a> { +impl AppState { pub fn into_menu(self) -> Menu { let quit_text = match &self.connlib { ConnlibState::Loading @@ -61,25 +61,25 @@ impl<'a> AppState<'a> { } } -pub enum ConnlibState<'a> { +pub enum ConnlibState { Loading, Quitting, RetryingConnection, - SignedIn(SignedIn<'a>), + SignedIn(SignedIn), SignedOut, WaitingForBrowser, WaitingForPortal, WaitingForTunnel, } -pub struct SignedIn<'a> { - pub actor_name: &'a str, - pub favorite_resources: &'a HashSet, - pub resources: &'a [ResourceDescription], - pub internet_resource_enabled: &'a Option, +pub struct SignedIn { + pub actor_name: String, + pub favorite_resources: HashSet, + pub resources: Vec, + pub internet_resource_enabled: Option, } -impl<'a> SignedIn<'a> { +impl SignedIn { fn is_favorite(&self, resource: &ResourceId) -> bool { self.favorite_resources.contains(resource) } @@ -206,7 +206,7 @@ fn signed_in(signed_in: &SignedIn) -> Menu { // the favoriting feature was created // Always show Resources in the original order menu = menu.disabled(RESOURCES); - for res in *resources { + for res in resources { let mut name = res.name().to_string(); if res.is_internet_resource() { name = append_status(&name, internet_resource_enabled.unwrap_or_default()); @@ -312,14 +312,14 @@ mod tests { } } - fn signed_in<'a>( - resources: &'a [ResourceDescription], - favorite_resources: &'a HashSet, - internet_resource_enabled: &'a Option, - ) -> AppState<'a> { + fn signed_in( + resources: Vec, + favorite_resources: HashSet, + internet_resource_enabled: Option, + ) -> AppState { AppState { connlib: ConnlibState::SignedIn(SignedIn { - actor_name: "Jane Doe", + actor_name: "Jane Doe".to_string(), favorite_resources, resources, internet_resource_enabled, @@ -366,7 +366,7 @@ mod tests { let resources = vec![]; let favorites = Default::default(); let disabled_resources = Default::default(); - let input = signed_in(&resources, &favorites, &disabled_resources); + let input = signed_in(resources, favorites, disabled_resources); let actual = input.into_menu(); let expected = Menu::default() .disabled("Signed in as Jane Doe") @@ -388,7 +388,7 @@ mod tests { let resources = vec![]; let favorites = HashSet::from([ResourceId::from_u128(42)]); let disabled_resources = Default::default(); - let input = signed_in(&resources, &favorites, &disabled_resources); + let input = signed_in(resources, favorites, disabled_resources); let actual = input.into_menu(); let expected = Menu::default() .disabled("Signed in as Jane Doe") @@ -410,7 +410,7 @@ mod tests { let resources = resources(); let favorites = Default::default(); let disabled_resources = Default::default(); - let input = signed_in(&resources, &favorites, &disabled_resources); + let input = signed_in(resources, favorites, disabled_resources); let actual = input.into_menu(); let expected = Menu::default() .disabled("Signed in as Jane Doe") @@ -485,7 +485,7 @@ mod tests { "03000143-e25e-45c7-aafb-144990e57dcd", )?]); let disabled_resources = Default::default(); - let input = signed_in(&resources, &favorites, &disabled_resources); + let input = signed_in(resources, favorites, disabled_resources); let actual = input.into_menu(); let expected = Menu::default() .disabled("Signed in as Jane Doe") @@ -567,7 +567,7 @@ mod tests { "00000000-0000-0000-0000-000000000000", )?]); let disabled_resources = Default::default(); - let input = signed_in(&resources, &favorites, &disabled_resources); + let input = signed_in(resources, favorites, disabled_resources); let actual = input.into_menu(); let expected = Menu::default() .disabled("Signed in as Jane Doe")