[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