public async void ShowChatMessages(ChatMessageKey[] chatMessageKeys, string channel)
        {
            StopFlashAndReset();
            Logger.Instance.LogMessage(TracingLevel.INFO, $"ShowChatMessages called");

            await SwitchToFullScreen();

            // Wait until the UI Action keys have subscribed to get events
            int retries = 0;

            while (!IsReady && retries < 60)
            {
                Thread.Sleep(100);
                retries++;
            }
            if (!IsReady)
            {
                Logger.Instance.LogMessage(TracingLevel.WARN, "Could not get full screen ready!");
                await connection.SwitchProfileAsync(null);

                return;
            }
            StopFlashAndReset();

            chatMessageEventArgs = new ChatMessageListEventArgs(chatMessageKeys, channel, numberOfKeys, 0);
            ChatMessageListChanged?.Invoke(this, chatMessageEventArgs);
        }
 public void MoveToNextChatPage()
 {
     if (chatMessageEventArgs == null)
     {
         return;
     }
     StopFlash();
     chatMessageEventArgs.CurrentPage++;
     ChatMessageListChanged?.Invoke(this, chatMessageEventArgs);
 }
        public async void ShowChatMessages(ChatMessageKey[] chatMessageKeys, string channel)
        {
            StopFlashAndReset();
            Logger.Instance.LogMessage(TracingLevel.INFO, $"ShowChatMessages called");

            switch (connection.DeviceInfo().Type)
            {
            case StreamDeckDeviceType.StreamDeckClassic:
                await connection.SwitchProfileAsync("FullScreenAlert");

                break;

            case StreamDeckDeviceType.StreamDeckMini:
                await connection.SwitchProfileAsync("FullScreenAlertMini");

                break;

            case StreamDeckDeviceType.StreamDeckXL:
                await connection.SwitchProfileAsync("FullScreenAlertXL");

                break;

            default:
                Logger.Instance.LogMessage(TracingLevel.WARN, $"SwitchProfileAsync: Unsupported device type: {connection.DeviceInfo().Type}");
                break;
            }

            // Wait until the UI Action keys have subscribed to get events
            int retries = 0;

            while (!IsReady && retries < 60)
            {
                Thread.Sleep(100);
                retries++;
            }
            if (!IsReady)
            {
                Logger.Instance.LogMessage(TracingLevel.WARN, "Could not get full screen ready!");
                await connection.SwitchProfileAsync(null);

                return;
            }
            StopFlashAndReset();

            chatMessageEventArgs = new ChatMessageListEventArgs(chatMessageKeys, channel, numberOfKeys, 0);
            ChatMessageListChanged?.Invoke(this, chatMessageEventArgs);
        }
        public void MoveToPrevChatPage()
        {
            if (chatMessageEventArgs == null)
            {
                return;
            }

            if (chatMessageEventArgs.CurrentPage == 0) // Already on first page
            {
                return;
            }


            StopFlashAndReset();
            chatMessageEventArgs.CurrentPage--;
            ChatMessageListChanged?.Invoke(this, chatMessageEventArgs);
        }