private void RefreshChannelState(IChannel s) { var model = CoreData.GetLocal <ChannelModel>(s); if (model == null) { return; } if (s.IsOn && !CoreData.Settings.StreamingToCloudStarted) { model.State.Value = ChannelModelState.WaitingForStreamToCloud; model.Bitrate.Value = ""; model.TextState.Value = "Waiting for a stream to cloud..."; } else if ((s.IsOn == false) != (s.State == ChannelState.Idle)) { model.State.Value = ChannelModelState.InProgress; model.TextState.Value = s.IsOn ? "Connecting..." : "Disconnecting..."; model.TimerState.Value = null; } else { switch (s.State) { case ChannelState.Idle: model.State.Value = ChannelModelState.Idle; model.TextState.Value = ""; model.Bitrate.Value = ""; break; case ChannelState.RunningOk: model.State.Value = ChannelModelState.RunningOk; model.TextState.Value = "Connected"; model.Bitrate.Value = $"{s.Bitrate} Kb/s"; break; case ChannelState.RunningConnectError: model.State.Value = ChannelModelState.RunningConnectError; model.TextState.Value = "Failed. Check your stream Key"; model.Bitrate.Value = $"{s.Bitrate} Kb/s"; break; case ChannelState.RunningInitError: model.State.Value = ChannelModelState.RunningInitError; model.TextState.Value = "Failed. Url or Key is not set"; model.Bitrate.Value = $"{s.Bitrate} Kb/s"; break; } model.TimerState.Value = s.Timer; } string name = s.Name == null ? model.Target.Name : s.Name; model.Name.SilentValue = name; string webUrl = s.WebUrl == null ? model.Target.WebUrl : s.WebUrl; model.WebUrl.SilentValue = webUrl; string rtmpUrl = s.RtmpUrl == null ? model.Target.DefaultRtmpUrl : s.RtmpUrl; model.RtmpUrl.SilentValue = rtmpUrl; model.IsTranscoded.SilentValue = Transcoding.IsTranscoded(s); }