Fix RadioBrowser crashes if no internet connection
This commit is contained in:
		@@ -117,7 +117,7 @@
 | 
				
			|||||||
                        <TextBlock x:Name="SnapcastText" Text="{x:Static properties:Resources.StartSnapcast}" Margin="5, 0, 0, 0"/>
 | 
					                        <TextBlock x:Name="SnapcastText" Text="{x:Static properties:Resources.StartSnapcast}" Margin="5, 0, 0, 0"/>
 | 
				
			||||||
                    </StackPanel>
 | 
					                    </StackPanel>
 | 
				
			||||||
                </Button>
 | 
					                </Button>
 | 
				
			||||||
                <Button x:Name="Radio" Padding="5, 2" HorizontalAlignment="Left" Click="Radios_Clicked"  Margin="5,0,10,0" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" FocusVisualStyle="{x:Null}">
 | 
					                <Button x:Name="Radio" Padding="5, 2" HorizontalAlignment="Left" Click="Radios_Clicked"  Margin="5,0,10,0" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" FocusVisualStyle="{x:Null}" IsEnabled="False">
 | 
				
			||||||
                    <StackPanel Orientation="Horizontal">
 | 
					                    <StackPanel Orientation="Horizontal">
 | 
				
			||||||
                        <emoji:TextBlock Text="📻" Padding="0,0,0,2"/>
 | 
					                        <emoji:TextBlock Text="📻" Padding="0,0,0,2"/>
 | 
				
			||||||
                        <TextBlock Text="{x:Static properties:Resources.Radios}" Margin="5, 0, 0, 0"/>
 | 
					                        <TextBlock Text="{x:Static properties:Resources.Radios}" Margin="5, 0, 0, 0"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -188,6 +188,11 @@ namespace unison
 | 
				
			|||||||
                SnapcastText.Text = unison.Resources.Resources.StartSnapcast;
 | 
					                SnapcastText.Text = unison.Resources.Resources.StartSnapcast;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnRadioBrowserConnected()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Radio.IsEnabled = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void UpdateButton(ref Border border, bool b)
 | 
					        public void UpdateButton(ref Border border, bool b)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            border.Style = b ? (Style)Resources["SelectedButton"] : (Style)Resources["UnselectedButton"];
 | 
					            border.Style = b ? (Style)Resources["SelectedButton"] : (Style)Resources["UnselectedButton"];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,8 +59,21 @@ namespace unison
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            InitializeComponent();
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            _radioBrowser = new RadioBrowserClient();
 | 
					            try
 | 
				
			||||||
            Initialize();
 | 
					            {
 | 
				
			||||||
 | 
					                _radioBrowser = new RadioBrowserClient();
 | 
				
			||||||
 | 
					                Initialize();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception e)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Debug.WriteLine("Exception while connecting to RadioBrowser: " + e.Message);
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            Application.Current.Dispatcher.Invoke(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                MainWindow MainWin = (MainWindow)Application.Current.MainWindow;
 | 
				
			||||||
 | 
					                MainWin.OnRadioBrowserConnected();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async void Initialize()
 | 
					        public async void Initialize()
 | 
				
			||||||
@@ -85,35 +98,42 @@ namespace unison
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public async Task SearchAdvanced(string name, string country, string tags)
 | 
					        public async Task SearchAdvanced(string name, string country, string tags)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            SearchStatus.Text = unison.Resources.Resources.Radio_Loading;
 | 
					            try
 | 
				
			||||||
 | 
					 | 
				
			||||||
            List<StationInfo> advancedSearch = await _radioBrowser.Search.AdvancedAsync(new AdvancedSearchOptions
 | 
					 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Name = name,
 | 
					                SearchStatus.Text = unison.Resources.Resources.Radio_Loading;
 | 
				
			||||||
                Country = country,
 | 
					 | 
				
			||||||
                TagList = tags
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            RadioListGrid.Items.Clear();
 | 
					                List<StationInfo> advancedSearch = await _radioBrowser.Search.AdvancedAsync(new AdvancedSearchOptions
 | 
				
			||||||
            if (advancedSearch.Count > 0)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                SearchStatus.Text = "";
 | 
					 | 
				
			||||||
                foreach (StationInfo station in advancedSearch)
 | 
					 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    RadioListGrid.Items.Add(new StationListItem
 | 
					                    Name = name,
 | 
				
			||||||
 | 
					                    Country = country,
 | 
				
			||||||
 | 
					                    TagList = tags
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                RadioListGrid.Items.Clear();
 | 
				
			||||||
 | 
					                if (advancedSearch.Count > 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    SearchStatus.Text = "";
 | 
				
			||||||
 | 
					                    foreach (StationInfo station in advancedSearch)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        Name = CleanString(station.Name),
 | 
					                        RadioListGrid.Items.Add(new StationListItem
 | 
				
			||||||
                        Country = station.CountryCode,
 | 
					                        {
 | 
				
			||||||
                        Codec = station.Codec,
 | 
					                            Name = CleanString(station.Name),
 | 
				
			||||||
                        Bitrate = station.Bitrate,
 | 
					                            Country = station.CountryCode,
 | 
				
			||||||
                        Url = station.Url,
 | 
					                            Codec = station.Codec,
 | 
				
			||||||
                        Tags = string.Join(", ", station.Tags)
 | 
					                            Bitrate = station.Bitrate,
 | 
				
			||||||
                    });
 | 
					                            Url = station.Url,
 | 
				
			||||||
 | 
					                            Tags = string.Join(", ", station.Tags)
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    FitToContent();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                FitToContent();
 | 
					                else
 | 
				
			||||||
 | 
					                    SearchStatus.Text = unison.Resources.Resources.Radio_NotFound;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception except)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Debug.WriteLine("Error on RadioBrowser search advanced: " + except.Message);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					 | 
				
			||||||
                SearchStatus.Text = unison.Resources.Resources.Radio_NotFound;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void FitToContent()
 | 
					        private void FitToContent()
 | 
				
			||||||
@@ -148,8 +168,15 @@ namespace unison
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        private async void Search_Clicked(object sender, RoutedEventArgs e)
 | 
					        private async void Search_Clicked(object sender, RoutedEventArgs e)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            CountryListItem a = (CountryListItem)CountryList.SelectedItem;
 | 
					            try
 | 
				
			||||||
            await SearchAdvanced(NameSearch.Text, a?.Name, TagSearch.Text);
 | 
					            {
 | 
				
			||||||
 | 
					                CountryListItem a = (CountryListItem)CountryList.SelectedItem;
 | 
				
			||||||
 | 
					                await SearchAdvanced(NameSearch.Text, a?.Name, TagSearch.Text);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception except)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Debug.WriteLine("Error on RadioBrowser search: " + except.Message);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void Reset_Clicked(object sender, RoutedEventArgs e)
 | 
					        private void Reset_Clicked(object sender, RoutedEventArgs e)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user