private async void OnSaveCommandExecute() { var registrationSettingChanged = false; if (SignalingSettings.SignalingServerPort != SignalingServerPort.ToString()) { SignalingSettings.SignalingServerPort = SignalingServerPort.ToString(); registrationSettingChanged = true; } if (SignalingSettings.SignalingServerHost != SignalingServerHost) { SignalingSettings.SignalingServerHost = SignalingServerHost; registrationSettingChanged = true; } if (RegistrationSettings.Domain != Domain) { RegistrationSettings.Domain = Domain; registrationSettingChanged = true; } if (registrationSettingChanged) { OnRegistrationSettingsChanged?.Invoke(); } SignalingSettings.AppInsightsEnabled = AppInsightsEnabled; if (NtpServerIp != null) { _localSettings.Values[nameof(NtpServerIp)] = NtpServerIp; } if (SelectedCamera != null) { await _mediaSettings.SetVideoDeviceAsync(SelectedCamera); } if (SelectedMicrophone != null) { await _mediaSettings.SetAudioDeviceAsync(SelectedMicrophone.Id == DefaultAudioDeviceId ?null : SelectedMicrophone); } if (SelectedAudioPlayoutDevice != null) { await _mediaSettings.SetAudioPlayoutDeviceAsync(SelectedAudioPlayoutDevice.Id == DefaultAudioDeviceId ?null : SelectedAudioPlayoutDevice); } if (SelectedVideoCodec != null) { await _mediaSettings.SetVideoCodecAsync(SelectedVideoCodec); _localSettings.Values[nameof(SelectedVideoCodec)] = SelectedVideoCodec.Id; } if (SelectedAudioCodec != null) { await _mediaSettings.SetAudioCodecAsync(SelectedAudioCodec); _localSettings.Values[nameof(SelectedAudioCodec)] = SelectedAudioCodec.Id; } if (SelectedCapFpsItem != null) { await _mediaSettings.SetPreferredVideoCaptureFormatAsync(new VideoCaptureFormat((int)SelectedCapFpsItem.Width, (int)SelectedCapFpsItem.Height, (int)SelectedCapFpsItem.FrameRate)); _localSettings.Values[nameof(SelectedCapResItem)] = SelectedCapResItem; _localSettings.Values[SelectedFrameRateId] = SelectedCapFpsItem?.FrameRate; } var newList = (from iceServerVm in IceServers where iceServerVm.Apply() select iceServerVm.IceServer).ToList(); IceServerSettings.IceServers = newList; _localSettings.Values[nameof(StatsServerPort)] = StatsServerPort; _localSettings.Values[nameof(StatsServerHost)] = StatsServerHost; await _mediaSettings.SetStatsConfigAsync(new StatsConfig { SendStatsToServerEnabled = _statsSendToServerEnabled, StatsServerHost = StatsServerHost, StatsServerPort = StatsServerPort }); OnCloseCommandExecute(); }