@ -5,6 +5,7 @@ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					@implements IDisposable 
					 
					 
					 
					@implements IDisposable 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					@inject NavigationManager NavigationManager 
					 
					 
					 
					@inject NavigationManager NavigationManager 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					@inject IMediator Mediator 
					 
					 
					 
					@inject IMediator Mediator 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					@inject SystemStartup SystemStartup 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					<MudThemeProvider Theme="_ersatzTvTheme"/> 
					 
					 
					 
					<MudThemeProvider Theme="_ersatzTvTheme"/> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					<MudDialogProvider DisableBackdropClick="true"/> 
					 
					 
					 
					<MudDialogProvider DisableBackdropClick="true"/> 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -17,54 +18,60 @@ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                <img src="images/ersatztv.png" alt="ErsatzTV"/> 
					 
					 
					 
					                <img src="images/ersatztv.png" alt="ErsatzTV"/> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            </a> 
					 
					 
					 
					            </a> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        </div> 
					 
					 
					 
					        </div> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        <div class="search-form"> 
					 
					 
					 
					        @if (SystemStartup.IsDatabaseReady && SystemStartup.IsSearchIndexReady) 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <EditForm Model="@_dummyModel" OnSubmit="@(_ => PerformSearch())"> 
					 
					 
					 
					        { 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudTextField T="string" 
					 
					 
					 
					            <div class="search-form"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                              @bind-Value="@Query" 
					 
					 
					 
					                <EditForm Model="@_dummyModel" OnSubmit="@(_ => PerformSearch())"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                              AdornmentIcon="@Icons.Material.Filled.Search" 
					 
					 
					 
					                    <MudTextField T="string" 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                              Adornment="Adornment.Start" 
					 
					 
					 
					                                  @bind-Value="@Query" 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                              Variant="Variant.Outlined" 
					 
					 
					 
					                                  AdornmentIcon="@Icons.Material.Filled.Search" 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                              Immediate="true" 
					 
					 
					 
					                                  Adornment="Adornment.Start" 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                              Class="search-bar" 
					 
					 
					 
					                                  Variant="Variant.Outlined" 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                              @onclick="@(() => _isOpen = true)" 
					 
					 
					 
					                                  Immediate="true" 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                              OnKeyUp="OnKeyUp"> 
					 
					 
					 
					                                  Class="search-bar" 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                </MudTextField> 
					 
					 
					 
					                                  @onclick="@(() => _isOpen = true)" 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudPopover Open="@_isOpen" MaxHeight="300" AnchorOrigin="Origin.BottomCenter" TransformOrigin="Origin.TopCenter" RelativeWidth="true"> 
					 
					 
					 
					                                  OnKeyUp="OnKeyUp"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                    @if (!string.IsNullOrWhiteSpace(_query) && _query.Length >= 3) 
					 
					 
					 
					                    </MudTextField> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                    { 
					 
					 
					 
					                    <MudPopover Open="@_isOpen" MaxHeight="300" AnchorOrigin="Origin.BottomCenter" TransformOrigin="Origin.TopCenter" RelativeWidth="true"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                        var matches = _searchTargets.Where(s => s.Name.Contains(_query, StringComparison.CurrentCultureIgnoreCase)).ToList(); 
					 
					 
					 
					                        @if (!string.IsNullOrWhiteSpace(_query) && _query.Length >= 3) 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                        if (matches.Any()) 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                        { 
					 
					 
					 
					                        { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                            <MudList Clickable="true" Dense="true"> 
					 
					 
					 
					                            var matches = _searchTargets.Where(s => s.Name.Contains(_query, StringComparison.CurrentCultureIgnoreCase)).ToList(); 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                @foreach (SearchTargetViewModel searchTarget in matches) 
					 
					 
					 
					                            if (matches.Any()) 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                { 
					 
					 
					 
					                            { 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                    <MudListItem @key="@searchTarget" OnClick="@(() => NavigateTo(searchTarget))"> 
					 
					 
					 
					                                <MudList Clickable="true" Dense="true"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                        <MudText Typo="Typo.body1">@searchTarget.Name</MudText> 
					 
					 
					 
					                                    @foreach (SearchTargetViewModel searchTarget in matches) 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                        <MudText Typo="Typo.subtitle1" Class="mud-text-disabled"> 
					 
					 
					 
					                                    { 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                            @(searchTarget.Kind switch 
					 
					 
					 
					                                        <MudListItem @key="@searchTarget" OnClick="@(() => NavigateTo(searchTarget))"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                            { 
					 
					 
					 
					                                            <MudText Typo="Typo.body1">@searchTarget.Name</MudText> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                SearchTargetKind.Channel => "Channel", 
					 
					 
					 
					                                            <MudText Typo="Typo.subtitle1" Class="mud-text-disabled"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                SearchTargetKind.FFmpegProfile => "FFmpeg Profile", 
					 
					 
					 
					                                                @(searchTarget.Kind switch 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                SearchTargetKind.ChannelWatermark => "Channel Watermark", 
					 
					 
					 
					                                                { 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                SearchTargetKind.Collection => "Collection", 
					 
					 
					 
					                                                    SearchTargetKind.Channel => "Channel", 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                SearchTargetKind.MultiCollection => "Multi Collection", 
					 
					 
					 
					                                                    SearchTargetKind.FFmpegProfile => "FFmpeg Profile", 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                SearchTargetKind.SmartCollection => "Smart Collection", 
					 
					 
					 
					                                                    SearchTargetKind.ChannelWatermark => "Channel Watermark", 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                SearchTargetKind.Schedule => "Schedule", 
					 
					 
					 
					                                                    SearchTargetKind.Collection => "Collection", 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                SearchTargetKind.ScheduleItems => "Schedule Items", 
					 
					 
					 
					                                                    SearchTargetKind.MultiCollection => "Multi Collection", 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                _ => string.Empty 
					 
					 
					 
					                                                    SearchTargetKind.SmartCollection => "Smart Collection", 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                }) 
					 
					 
					 
					                                                    SearchTargetKind.Schedule => "Schedule", 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                        </MudText> 
					 
					 
					 
					                                                    SearchTargetKind.ScheduleItems => "Schedule Items", 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                    </MudListItem> 
					 
					 
					 
					                                                    _ => string.Empty 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                                } 
					 
					 
					 
					                                                    }) 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                            </MudList> 
					 
					 
					 
					                                            </MudText> 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                                        </MudListItem> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                                    } 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                                </MudList> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                            } 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        } 
					 
					 
					 
					                        } 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    } 
					 
					 
					 
					                    </MudPopover>  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                </MudPopover> 
					 
					 
					 
					                </EditForm > 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            </EditForm> 
					 
					 
					 
					            </div > 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        </div>  
					 
					 
					 
					        }  
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        <MudSpacer/> 
					 
					 
					 
					        <MudSpacer/> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        <MudLink Color="Color.Info" Href="iptv/channels.m3u" Target="_blank" Underline="Underline.None">M3U</MudLink> 
					 
					 
					 
					        @if (SystemStartup.IsDatabaseReady && SystemStartup.IsSearchIndexReady) 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        <MudLink Color="Color.Info" Href="iptv/xmltv.xml" Target="_blank" Class="mx-4" Underline="Underline.None">XMLTV</MudLink> 
					 
					 
					 
					        { 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            <MudLink Color="Color.Info" Href="iptv/channels.m3u" Target="_blank" Underline="Underline.None">M3U</MudLink> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            <MudLink Color="Color.Info" Href="iptv/xmltv.xml" Target="_blank" Class="mx-4" Underline="Underline.None">XMLTV</MudLink> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        } 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        @* <MudLink Color="Color.Info" Href="/swagger" Target="_blank" Class="mr-4" Underline="Underline.None">API</MudLink> *@ 
					 
					 
					 
					        @* <MudLink Color="Color.Info" Href="/swagger" Target="_blank" Class="mr-4" Underline="Underline.None">API</MudLink> *@ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        <MudTooltip Text="Documentation"> 
					 
					 
					 
					        <MudTooltip Text="Documentation"> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudIconButton Icon="@Icons.Material.Filled.Help" Color="Color.Primary" Link="https://ersatztv.org" Target="_blank"/> 
					 
					 
					 
					            <MudIconButton Icon="@Icons.Material.Filled.Help" Color="Color.Primary" Link="https://ersatztv.org" Target="_blank"/> 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -83,45 +90,48 @@ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            </form> 
					 
					 
					 
					            </form> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        </AuthorizeView> 
					 
					 
					 
					        </AuthorizeView> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    </MudAppBar> 
					 
					 
					 
					    </MudAppBar> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    <MudDrawer Open="true" Elevation="2" ClipMode="DrawerClipMode.Always"> 
					 
					 
					 
					    @if (SystemStartup.IsDatabaseReady && SystemStartup.IsSearchIndexReady) 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        <MudNavMenu> 
					 
					 
					 
					    { 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavLink Href="channels">Channels</MudNavLink> 
					 
					 
					 
					        <MudDrawer Open="true" Elevation="2" ClipMode="DrawerClipMode.Always"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavLink Href="ffmpeg">FFmpeg Profiles</MudNavLink> 
					 
					 
					 
					            <MudNavMenu> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavLink Href="watermarks">Watermarks</MudNavLink> 
					 
					 
					 
					                <MudNavLink Href="channels">Channels</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavGroup Title="Media Sources" Expanded="true"> 
					 
					 
					 
					                <MudNavLink Href="ffmpeg">FFmpeg Profiles</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/sources/local">Local</MudNavLink> 
					 
					 
					 
					                <MudNavLink Href="watermarks">Watermarks</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/sources/emby">Emby</MudNavLink> 
					 
					 
					 
					                <MudNavGroup Title="Media Sources" Expanded="true"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/sources/jellyfin">Jellyfin</MudNavLink> 
					 
					 
					 
					                    <MudNavLink Href="media/sources/local">Local</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/sources/plex">Plex</MudNavLink> 
					 
					 
					 
					                    <MudNavLink Href="media/sources/emby">Emby</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            </MudNavGroup> 
					 
					 
					 
					                    <MudNavLink Href="media/sources/jellyfin">Jellyfin</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavGroup Title="Media" Expanded="true"> 
					 
					 
					 
					                    <MudNavLink Href="media/sources/plex">Plex</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/libraries">Libraries</MudNavLink> 
					 
					 
					 
					                </MudNavGroup> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/trash">Trash</MudNavLink> 
					 
					 
					 
					                <MudNavGroup Title="Media" Expanded="true"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/tv/shows">TV Shows</MudNavLink> 
					 
					 
					 
					                    <MudNavLink Href="media/libraries">Libraries</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/movies">Movies</MudNavLink> 
					 
					 
					 
					                    <MudNavLink Href="media/trash">Trash</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/music/artists">Music</MudNavLink> 
					 
					 
					 
					                    <MudNavLink Href="media/tv/shows">TV Shows</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/other/videos">Other Videos</MudNavLink> 
					 
					 
					 
					                    <MudNavLink Href="media/movies">Movies</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/music/songs">Songs</MudNavLink> 
					 
					 
					 
					                    <MudNavLink Href="media/music/artists">Music</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            </MudNavGroup> 
					 
					 
					 
					                    <MudNavLink Href="media/other/videos">Other Videos</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavGroup Title="Lists" Expanded="true"> 
					 
					 
					 
					                    <MudNavLink Href="media/music/songs">Songs</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/collections">Collections</MudNavLink> 
					 
					 
					 
					                </MudNavGroup> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/trakt/lists">Trakt Lists</MudNavLink> 
					 
					 
					 
					                <MudNavGroup Title="Lists" Expanded="true"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="media/filler/presets">Filler Presets</MudNavLink> 
					 
					 
					 
					                    <MudNavLink Href="media/collections">Collections</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            </MudNavGroup> 
					 
					 
					 
					                    <MudNavLink Href="media/trakt/lists">Trakt Lists</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavLink Href="schedules">Schedules</MudNavLink> 
					 
					 
					 
					                    <MudNavLink Href="media/filler/presets">Filler Presets</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavLink Href="playouts">Playouts</MudNavLink> 
					 
					 
					 
					                </MudNavGroup> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavLink Href="settings">Settings</MudNavLink> 
					 
					 
					 
					                <MudNavLink Href="schedules">Schedules</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudNavGroup Title="Support" Expanded="true"> 
					 
					 
					 
					                <MudNavLink Href="playouts">Playouts</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="system/logs">Logs</MudNavLink> 
					 
					 
					 
					                <MudNavLink Href="settings">Settings</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudNavLink Href="system/troubleshooting">Troubleshooting</MudNavLink> 
					 
					 
					 
					                <MudNavGroup Title="Support" Expanded="true"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            </MudNavGroup> 
					 
					 
					 
					                    <MudNavLink Href="system/logs">Logs</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudDivider Class="my-6" DividerType="DividerType.Middle"/> 
					 
					 
					 
					                    <MudNavLink Href="system/troubleshooting">Troubleshooting</MudNavLink> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            <MudContainer Style="text-align: right" Class="mr-6"> 
					 
					 
					 
					                </MudNavGroup> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudText Typo="Typo.body2">ErsatzTV Version</MudText> 
					 
					 
					 
					                <MudDivider Class="my-6" DividerType="DividerType.Middle"/> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                <MudText Typo="Typo.body2" Color="Color.Info">@InfoVersion</MudText> 
					 
					 
					 
					                <MudContainer Style="text-align: right" Class="mr-6"> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            </MudContainer> 
					 
					 
					 
					                    <MudText Typo="Typo.body2">ErsatzTV Version</MudText> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        </MudNavMenu> 
					 
					 
					 
					                    <MudText Typo="Typo.body2" Color="Color.Info">@InfoVersion</MudText> 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    </MudDrawer> 
					 
					 
					 
					                </MudContainer> 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            </MudNavMenu> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        </MudDrawer> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    } 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    <MudMainContent> 
					 
					 
					 
					    <MudMainContent> 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        @Body 
					 
					 
					 
					        @Body 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    </MudMainContent> 
					 
					 
					 
					    </MudMainContent> 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -140,8 +150,17 @@ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    private bool _isOpen; 
					 
					 
					 
					    private bool _isOpen; 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    private List<SearchTargetViewModel> _searchTargets; 
					 
					 
					 
					    private List<SearchTargetViewModel> _searchTargets; 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    protected override void OnInitialized() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SystemStartup.OnDatabaseReady += OnStartupProgress; 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SystemStartup.OnSearchIndexReady += OnStartupProgress; 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    } 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    public void Dispose() 
					 
					 
					 
					    public void Dispose() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
					 
					 
					 
					    { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SystemStartup.OnDatabaseReady -= OnStartupProgress; 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SystemStartup.OnSearchIndexReady -= OnStartupProgress; 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        _cts.Cancel(); 
					 
					 
					 
					        _cts.Cancel(); 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        _cts.Dispose(); 
					 
					 
					 
					        _cts.Dispose(); 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
					 
					 
					 
					    } 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -185,12 +204,17 @@ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        } 
					 
					 
					 
					        } 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
					 
					 
					 
					    } 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    private async void OnStartupProgress(object sender, EventArgs e) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        await InvokeAsync(StateHasChanged); 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    } 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    protected override async Task OnParametersSetAsync() 
					 
					 
					 
					    protected override async Task OnParametersSetAsync() 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
					 
					 
					 
					    { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        await base.OnParametersSetAsync(); 
					 
					 
					 
					        await base.OnParametersSetAsync(); 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        _query = NavigationManager.Uri.GetSearchQuery(); 
					 
					 
					 
					        _query = NavigationManager.Uri.GetSearchQuery(); 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if (_searchTargets is null) 
					 
					 
					 
					        if (SystemStartup.IsDatabaseReady &&  _searchTargets is null) 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        { 
					 
					 
					 
					        { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            _searchTargets = await Mediator.Send(new QuerySearchTargets(), _cts.Token); 
					 
					 
					 
					            _searchTargets = await Mediator.Send(new QuerySearchTargets(), _cts.Token); 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        } 
					 
					 
					 
					        }