[pdm-devel] applied: [PATCH datacenter-manager] ui: main menu: use initial remote list value from context

Wolfgang Bumiller w.bumiller at proxmox.com
Wed Sep 10 09:24:29 CEST 2025


applied, thanks

Fixes the menu for me - I do wonder why I'm the only one where this
happens, though.
Am I the only one using the non-debian firefox tarball with reasonable™
settings (That is, the "delete data on quit" with an exception-list
in which the PDM is not 😜 - and ublock & ff containers...)

On Wed, Sep 10, 2025 at 08:58:29AM +0200, Dominik Csapak wrote:
> if the main menu was created after the first update of the remote list,
> we don't see the changes there as long as the remote list stays the
> same.
> 
> So instead of discarding the initial value, use it to update the list
> here once in create.
> 
> Reported-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
>  ui/src/main_menu.rs | 45 +++++++++++++++++++++++++--------------------
>  1 file changed, 25 insertions(+), 20 deletions(-)
> 
> diff --git a/ui/src/main_menu.rs b/ui/src/main_menu.rs
> index 7eac775..d9e8f7c 100644
> --- a/ui/src/main_menu.rs
> +++ b/ui/src/main_menu.rs
> @@ -109,23 +109,43 @@ fn register_submenu(
>      );
>  }
>  
> -impl PdmMainMenu {}
> +impl PdmMainMenu {
> +    fn update_remote_list(&mut self, remote_list: RemoteList) -> bool {
> +        let remote_list_cache: Vec<RemoteListCacheEntry> = remote_list
> +            .into_iter()
> +            .map(|item| RemoteListCacheEntry {
> +                id: item.id.clone(),
> +                ty: item.ty,
> +            })
> +            .collect();
> +
> +        if *self.remote_list_cache != remote_list_cache {
> +            self.remote_list_cache.update(remote_list_cache);
> +            true
> +        } else {
> +            false
> +        }
> +    }
> +}
>  
>  impl Component for PdmMainMenu {
>      type Message = Msg;
>      type Properties = MainMenu;
>  
>      fn create(ctx: &Context<Self>) -> Self {
> -        let (_remote_list, _remote_list_observer) = ctx
> +        let (remote_list, _remote_list_observer) = ctx
>              .link()
>              .context(ctx.link().callback(Msg::RemoteListChanged))
>              .unwrap_throw();
> -        Self {
> +        let mut this = Self {
>              active: Key::from("dashboard"),
>              menu_selection: Selection::new(),
>              remote_list_cache: PersistentState::new("PdmRemoteListCache"),
>              _remote_list_observer,
> -        }
> +        };
> +
> +        this.update_remote_list(remote_list);
> +        this
>      }
>  
>      fn update(&mut self, _ctx: &Context<Self>, msg: Self::Message) -> bool {
> @@ -134,22 +154,7 @@ impl Component for PdmMainMenu {
>                  self.active = key;
>                  true
>              }
> -            Msg::RemoteListChanged(remote_list) => {
> -                let remote_list_cache: Vec<RemoteListCacheEntry> = remote_list
> -                    .into_iter()
> -                    .map(|item| RemoteListCacheEntry {
> -                        id: item.id.clone(),
> -                        ty: item.ty,
> -                    })
> -                    .collect();
> -
> -                if *self.remote_list_cache != remote_list_cache {
> -                    self.remote_list_cache.update(remote_list_cache);
> -                    true
> -                } else {
> -                    false
> -                }
> -            }
> +            Msg::RemoteListChanged(remote_list) => self.update_remote_list(remote_list),
>          }
>      }
>  
> -- 
> 2.47.3




More information about the pdm-devel mailing list