From 0418f8a7ccc4498be8329a98745fd538493669c2 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 9 Oct 2025 09:40:46 -0600 Subject: [PATCH] fix: Fix typos and enhance item selection handling Corrected parameter name in GenericUdpServer constructor. Added new action for item selection in ISelectableItemsMessenger with error handling for missing or invalid keys. Updated SetItems method to improve clarity and ensure proper clearing and re-adding of item actions. --- src/PepperDash.Core/Comm/GenericUdpServer.cs | 6 +-- .../Messengers/ISelectableItemsMessenger.cs | 45 +++++++++++++++---- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/src/PepperDash.Core/Comm/GenericUdpServer.cs b/src/PepperDash.Core/Comm/GenericUdpServer.cs index 61bebf8d..1c747998 100644 --- a/src/PepperDash.Core/Comm/GenericUdpServer.cs +++ b/src/PepperDash.Core/Comm/GenericUdpServer.cs @@ -131,14 +131,14 @@ namespace PepperDash.Core /// /// /// - /// - public GenericUdpServer(string key, string address, int port, int buffefSize) + /// + public GenericUdpServer(string key, string address, int port, int bufferSize) : base(key) { StreamDebugging = new CommunicationStreamDebugging(key); Hostname = address; Port = port; - BufferSize = buffefSize; + BufferSize = bufferSize; CrestronEnvironment.ProgramStatusEventHandler += new ProgramStatusEventHandler(CrestronEnvironment_ProgramStatusEventHandler); CrestronEnvironment.EthernetEventHandler += new EthernetEventHandler(CrestronEnvironment_EthernetEventHandler); diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ISelectableItemsMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ISelectableItemsMessenger.cs index c3b3715f..8e2f8f3e 100644 --- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ISelectableItemsMessenger.cs +++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ISelectableItemsMessenger.cs @@ -41,6 +41,32 @@ namespace PepperDash.Essentials.AppServer.Messengers AddAction("/itemsStatus", (id, content) => SendFullStatus(id)); + AddAction("/selectItem", (id, content) => + { + try + { + var key = content.ToObject(); + + if (key == null) + { + this.LogError("No key specified to select"); + return; + } + if (itemDevice.Items.ContainsKey((TKey)Convert.ChangeType(key, typeof(TKey)))) + { + itemDevice.Items[(TKey)Convert.ChangeType(key, typeof(TKey))].Select(); + } + else + { + this.LogError("Key {0} not found in items", key); + } + } + catch (Exception e) + { + this.LogError("Error selecting item: {0}", e.Message); + } + }); + itemDevice.ItemsUpdated += (sender, args) => { SetItems(); @@ -59,18 +85,21 @@ namespace PepperDash.Essentials.AppServer.Messengers /// private void SetItems() { - /// Clear out any existing item actions - foreach (var item in _itemKeys) + if (_itemKeys != null && _itemKeys.Count > 0) { - RemoveAction($"/{item}"); + /// Clear out any existing item actions + foreach (var item in _itemKeys) + { + RemoveAction($"/{item}"); + } + + _itemKeys.Clear(); } - _itemKeys.Clear(); - - foreach (var input in itemDevice.Items) + foreach (var item in itemDevice.Items) { - var key = input.Key; - var localItem = input.Value; + var key = item.Key; + var localItem = item.Value; AddAction($"/{key}", (id, content) => {