diff options
Diffstat (limited to 'Pages/Gallery.razor')
| -rw-r--r-- | Pages/Gallery.razor | 95 |
1 files changed, 52 insertions, 43 deletions
diff --git a/Pages/Gallery.razor b/Pages/Gallery.razor index 743485e..2ff5486 100644 --- a/Pages/Gallery.razor +++ b/Pages/Gallery.razor @@ -1,15 +1,15 @@ @page "/" @page "/Gallery" -@inject ITagService tagService -@inject IFeedService feedService -@inject IUserService userService @inject IJSRuntime jsRuntime -@implements IDisposable -@attribute [Authorize] +@inject HBSession hb +@* + * @implements IDisposable + * @attribute [Authorize] + *@ <PageTitle>@Title</PageTitle> -@if(Ingest && !userService.UserSessionState.ShowNsfw) { +@if(Ingest && !hb.HasNsfwClaim) { <div id="feed-error"> <p><center>Ingest feed is not available unless NSFW mode is enabled!</center></p> <p><center><i>You must enable NSFW mode to continue...</i></center></p> @@ -21,12 +21,12 @@ </div> } else { <div style="padding:var(--size-default-gap);"> - @foreach(var media in displayMedia) { + @foreach(var mediaId in displayMedia) { // Precalculate thumbnail size to help the browser // lay out the images during initial page load - int width = (int) media.CurrentUploadedFile!.Width! * 200 / (int) media.CurrentUploadedFile.Height!; - <a href="/ViewMedia?m=@(media.Guid)"> - <img src="/media/thumb/@(media.Guid)?h=200" width=@width height="200"/> + @* int width = (int) media.CurrentUploadedFile!.Width! * 200 / (int) media.CurrentUploadedFile.Height!; *@ + <a href="/ViewMedia?m=@mediaId"> + <img src="/media/thumb/@mediaId?h=200" height="200"/> </a> } <div id="canary" style="height:1px;"></div> @@ -77,10 +77,10 @@ } } - private List<Media> displayMedia; + private List<Guid> displayMedia = new(); - protected override void OnInitialized() => - userService.UserSessionState.OnStateChange += ShowNsfwChanged; + // protected override void OnInitialized() => + // userService.UserSessionState.OnStateChange += ShowNsfwChanged; protected override void OnParametersSet() => LoadMedia(true); @@ -93,7 +93,8 @@ [JSInvokable("LoadMedia")] public void LoadMedia(bool initial = false) { - Media? key = displayMedia?.Any() ?? false && !initial ? displayMedia.Last() : null; + Guid? key = + displayMedia?.Any() ?? false && !initial ? displayMedia.Last() : null; if(initial) displayMedia = new(); @@ -102,40 +103,48 @@ if(Enum.TryParse<ApiModels.SortOrder>(SortOrder, true, out var so)) sortOrder = so; + FeedRequest feedRequest = new FeedRequest() { + SelectIngest = Ingest, + IncludeNsfw = hb.HasNsfwClaim, + ContinuationToken = key, + Count = PageSize, + SortOrder = sortOrder ?? default + }; + if(TagId is not null && Query is null) { - displayMedia!.AddRange(feedService.LoadChunk( - selectIngest: Ingest, - includeNsfw: userService.UserSessionState.ShowNsfw, - tagId: (Guid) TagId!, - key: key, - count: PageSize, - sortOrder: sortOrder ?? default)); + feedRequest = new FeedTagRequest() { + SelectIngest = Ingest, + IncludeNsfw = hb.HasNsfwClaim, + TagId = (Guid) TagId!, + ContinuationToken = key, + Count = PageSize, + SortOrder = sortOrder ?? default + }; } else if(Query is not null && TagId is null) { - displayMedia!.AddRange(feedService.LoadChunk( - selectIngest: Ingest, - includeNsfw: userService.UserSessionState.ShowNsfw, - query: string.IsNullOrWhiteSpace(Query) ? null : Query, - key: key, - count: PageSize, - sortOrder: sortOrder ?? default)); - } else { - displayMedia!.AddRange(feedService.LoadChunk( - selectIngest: Ingest, - includeNsfw: userService.UserSessionState.ShowNsfw, - key: key, - count: PageSize, - sortOrder: sortOrder ?? default)); + feedRequest = new FeedSearchRequest() { + SelectIngest = Ingest, + IncludeNsfw = hb.HasNsfwClaim, + Query = string.IsNullOrWhiteSpace(Query) ? null : Query, + ContinuationToken = key, + Count = PageSize, + SortOrder = sortOrder ?? default + }; } - StateHasChanged(); + hb.Feed + .LoadChunkAsync(feedRequest) + .ContinueWith(async m => { + displayMedia!.AddRange(await m); + await InvokeAsync(() => StateHasChanged()); + }); } - private async void ShowNsfwChanged(UserSessionState userSessionState) { - await InvokeAsync(() => { - LoadMedia(true); - }); - } + // private async void ShowNsfwChanged(UserSessionState userSessionState) { + // await InvokeAsync(() => { + // LoadMedia(true); + // }); + // } - public void Dispose() => - userService.UserSessionState.OnStateChange -= ShowNsfwChanged; + // public void Dispose() => + // userService.UserSessionState.OnStateChange -= ShowNsfwChanged; } |
