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); }
private async void Instance_ChatMessageListChanged(object sender, ChatMessageListEventArgs e) { flashMode = FlashMode.ChatMessage; channelName = e.Channel; pagedSequentialKey = e.CurrentPage * (e.NumberOfKeys - 2) + sequentialKey; if (sequentialKey == 0) { await Connection.SetTitleAsync("Exit"); } else if (e.ChatMessageKeys != null && sequentialKey == e.NumberOfKeys - 1 && e.ChatMessageKeys.Length > pagedSequentialKey) // There is more than one page) { await Connection.SetTitleAsync(">>"); numberOfElements = e.ChatMessageKeys.Length; numberOfKeys = e.NumberOfKeys; } else if (e.ChatMessageKeys != null && e.ChatMessageKeys.Length >= pagedSequentialKey) // >= because we're doing -1 as we're starting on the second key // +1 because starting on second key { var userInfo = e.ChatMessageKeys[pagedSequentialKey - 1]; using (Image image = FetchImage(userInfo.KeyImageURL.Replace(PREVIEW_IMAGE_WIDTH_TOKEN, PREVIEW_IMAGE_WIDTH_PIXELS.ToString()).Replace(PREVIEW_IMAGE_HEIGHT_TOKEN, PREVIEW_IMAGE_HEIGHT_PIXELS.ToString()))) { await DrawChatMessageImage(userInfo, image); } chatMessage = userInfo.ChatMessage; } }
private async void Instance_ChatMessageListChanged(object sender, ChatMessageListEventArgs e) { flashMode = FlashMode.ChatMessage; channelName = e.Channel; pagedSequentialKey = e.CurrentPage * (e.NumberOfKeys - NUMBER_OF_SPECIAL_KEYS) + sequentialKey; // -3 for the Exit, Back, Next buttons if (sequentialKey == 0) { await Connection.SetTitleAsync("Exit"); } else if (e.ChatMessageKeys != null && sequentialKey == e.NumberOfKeys - 1 && e.ChatMessageKeys.Length > e.NumberOfKeys - 3) // Next key, and there is more than one page *overall* { if (e.ChatMessageKeys.Length + NUMBER_OF_SPECIAL_KEYS < pagedSequentialKey) // We are on last page { await Connection.SetTitleAsync(null); } else { await Connection.SetTitleAsync(">>"); } numberOfElements = e.ChatMessageKeys.Length; numberOfKeys = e.NumberOfKeys; } else if (e.ChatMessageKeys != null && sequentialKey == e.NumberOfKeys - 2 && e.ChatMessageKeys.Length > e.NumberOfKeys - 3) // Prev key, and there is more than one page *overall* { if (sequentialKey == pagedSequentialKey) // We are on the first page { await Connection.SetTitleAsync(null); } else { await Connection.SetTitleAsync("<<"); } numberOfElements = e.ChatMessageKeys.Length; numberOfKeys = e.NumberOfKeys; } else if (e.ChatMessageKeys != null && e.ChatMessageKeys.Length >= pagedSequentialKey) // >= because we're doing -1 as we're starting on the second key // +1 because starting on second key { await Connection.SetTitleAsync(null); var userInfo = e.ChatMessageKeys[pagedSequentialKey - 1]; string userImageURL = null; if (!String.IsNullOrEmpty(userInfo?.KeyImageURL)) { userImageURL = userInfo.KeyImageURL.Replace(PREVIEW_IMAGE_WIDTH_TOKEN, PREVIEW_IMAGE_WIDTH_PIXELS.ToString()).Replace(PREVIEW_IMAGE_HEIGHT_TOKEN, PREVIEW_IMAGE_HEIGHT_PIXELS.ToString()); } using (Image image = FetchImage(userImageURL)) { await DrawChatMessageImage(userInfo, image); } chatMessage = userInfo.ChatMessage; } }
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); }