mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 10:18:54 +00:00
refactor(rust/gui-client): remove borrows from part of the system tray code (#6916)
Extracted from #6838 This leads to extra cloning of strings, but if there's less than 1,000 Resources and the tray doesn't update often, it should be fine. We can sample performance with sentry.io if we're worried.
This commit is contained in:
@@ -709,12 +709,10 @@ impl<I: GuiIntegration> Controller<I> {
|
||||
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,
|
||||
|
||||
@@ -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<Release>,
|
||||
}
|
||||
|
||||
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<ResourceId>,
|
||||
pub resources: &'a [ResourceDescription],
|
||||
pub internet_resource_enabled: &'a Option<bool>,
|
||||
pub struct SignedIn {
|
||||
pub actor_name: String,
|
||||
pub favorite_resources: HashSet<ResourceId>,
|
||||
pub resources: Vec<ResourceDescription>,
|
||||
pub internet_resource_enabled: Option<bool>,
|
||||
}
|
||||
|
||||
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<ResourceId>,
|
||||
internet_resource_enabled: &'a Option<bool>,
|
||||
) -> AppState<'a> {
|
||||
fn signed_in(
|
||||
resources: Vec<ResourceDescription>,
|
||||
favorite_resources: HashSet<ResourceId>,
|
||||
internet_resource_enabled: Option<bool>,
|
||||
) -> 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")
|
||||
|
||||
Reference in New Issue
Block a user