Skip to content

Commit

Permalink
Save current recently played page
Browse files Browse the repository at this point in the history
- Totally fucked up my migrations by not understanding the code I wrote. I'll delete these later and start over.
  • Loading branch information
frankhale committed Aug 26, 2020
1 parent 6827ced commit 9e15848
Show file tree
Hide file tree
Showing 17 changed files with 492 additions and 29 deletions.
22 changes: 13 additions & 9 deletions server/Components/VideoPagination.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,22 @@ public partial class VideoPagination : ComponentBase
[Parameter]
public RenderFragment<List<Models.Video>> Content { get; set; }

[Parameter]
public bool RecentlyPlayed { get; set; }

private readonly IVideoRepository videos = new VideoRepository();
private const int ChunkSize = 10;
private List<List<Models.Video>> Pages { get; set; }
private List<List<int>> PageIndices { get; set; }
private int CurrentPage { get; set; } = 1;
private int CurrentPageLinkPage { get; set; } = 1;
private string Message { get; set; } = String.Empty;
private bool PreviousButtonDisabled { get; set; } = false;
private bool NextButtonDisabled { get; set; } = false;
private string Message { get; set; } = string.Empty;
private bool PreviousButtonDisabled { get; set; }
private bool NextButtonDisabled { get; set; }

protected async override Task OnParametersSetAsync()
{
await base.OnParametersSetAsync();
await InitializePages(true);
}

Expand All @@ -44,15 +48,15 @@ private async Task InitializePages(bool resetCurrentPage = false)

if (preferences != null)
{
preferredPage = preferences.CurrentVideoPage;
preferredPage = (RecentlyPlayed) ? preferences.CurrentRecentlyPlayedVideoPage : preferences.CurrentVideoPage;
preferredLinkPage = preferences.CurrentVideoPageLinkPage;

if(preferredPage == 0 || preferredPage > Pages.Count())
if (preferredPage == 0 || preferredPage > Pages.Count)
{
preferredPage = 1;
}

if(preferredLinkPage == 0 || preferredLinkPage > PageIndices.Count())
if (preferredLinkPage == 0 || preferredLinkPage > PageIndices.Count)
{
preferredLinkPage = 1;
}
Expand Down Expand Up @@ -86,7 +90,7 @@ private void TogglePrevNextButtonsDisabled()

private void OnPageButtonClick(int page)
{
videos.SetCurrentVideoPage(page, CurrentPageLinkPage);
videos.SetCurrentVideoPage(RecentlyPlayed, page, CurrentPageLinkPage);

CurrentPage = page;
}
Expand All @@ -98,7 +102,7 @@ private void OnPreviousButtonClick()
CurrentPageLinkPage -= 1;
}

videos.SetCurrentVideoPage(CurrentPage, CurrentPageLinkPage);
videos.SetCurrentVideoPage(RecentlyPlayed, CurrentPage, CurrentPageLinkPage);

TogglePrevNextButtonsDisabled();
}
Expand All @@ -110,7 +114,7 @@ private void OnNextButtonClick()
CurrentPageLinkPage += 1;
}

videos.SetCurrentVideoPage(CurrentPage, CurrentPageLinkPage);
videos.SetCurrentVideoPage(RecentlyPlayed, CurrentPage, CurrentPageLinkPage);

TogglePrevNextButtonsDisabled();
}
Expand Down
4 changes: 2 additions & 2 deletions server/Data/IVideoRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ public interface IVideoRepository
public Task DeleteVideoRangeByGroupAsync(string group);
#endregion

#region Preferences
public Task SetCurrentVideoPage(int page, int linkPage);
#region Preferences
public Task SetCurrentVideoPage(bool recentlyPlayed, int page, int linkPage);
public Task<Preferences> GetCurrentPreferences();
#endregion
}
Expand Down
43 changes: 34 additions & 9 deletions server/Data/VideoRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -238,11 +238,11 @@ public async Task DeleteVideoAsync(string ytid, string group)

public async Task DeleteVideoRangeAsync(List<Video> videos)
{
foreach(var v in videos)
foreach (var v in videos)
{
var foundVideos = await db.Videos.Where(x => x.YTId == v.YTId).ToListAsync();

if(foundVideos != null)
if (foundVideos != null)
{
db.Videos.RemoveRange(foundVideos);
}
Expand Down Expand Up @@ -281,16 +281,41 @@ public async Task DeleteGroupRangeAsync(List<Group> groups)
#endregion

#region Preferences
public async Task SetCurrentVideoPage(int page, int linkPage)
public async Task SetCurrentVideoPage(bool recentlyPlayed, int page, int linkPage)
{
db.Preferences.RemoveRange(db.Preferences.ToList());
await db.SaveChangesAsync();
var preferences = await db.Preferences.FirstOrDefaultAsync();

db.Preferences.Add(new Preferences
if (preferences == null)
{
CurrentVideoPage = page,
CurrentVideoPageLinkPage = linkPage
});
if (recentlyPlayed)
{
db.Preferences.Add(new Preferences
{
CurrentRecentlyPlayedVideoPage = page
});

}
else
{
db.Preferences.Add(new Preferences
{
CurrentVideoPage = page,
CurrentVideoPageLinkPage = linkPage
});
}
}
else
{
if (recentlyPlayed)
{
preferences.CurrentRecentlyPlayedVideoPage = page;
}
else
{
preferences.CurrentVideoPage = page;
preferences.CurrentVideoPageLinkPage = linkPage;
}
}
await db.SaveChangesAsync();
}

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using Microsoft.EntityFrameworkCore.Migrations;

namespace TobyBlazor.Migrations
{
public partial class CurrentRecentlyPlayedPageLinkPageToPreferences : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<int>(
name: "CurrentRecentlyPlayedPageLinkPage",
table: "Preferences",
type: "INTEGER",
nullable: false,
defaultValue: 0);
}

protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "CurrentRecentlyPlayedPageLinkPage",
table: "Preferences");
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using Microsoft.EntityFrameworkCore.Migrations;

namespace TobyBlazor.Migrations
{
public partial class CurrentRecentlyPlayedVideoPageToPreferences : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<int>(
name: "CurrentRecentlyPlayedVideoPage",
table: "Preferences",
type: "INTEGER",
nullable: false,
defaultValue: 0);
}

protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "CurrentRecentlyPlayedVideoPage",
table: "Preferences");
}
}
}
Loading

0 comments on commit 9e15848

Please sign in to comment.