@page "/Wishlist" @using BlazorFrontend.Services @using LibraryManagement.Shared.Models @using Microsoft.AspNetCore.Authorization @inject WishlistService WishlistService @inject IJSRuntime JS @inject NavigationManager Navigation My Wishlist & Favourites

My Collections

Track books you want to borrow and your all-time favourites.

@if (_isLoading) {
} else {
@if (_activeTab == "wishlist") { @if (!_wishlist.Any()) {

Your wishlist is empty. Add books that are currently out of stock!

Browse Catalog →
} else {
@foreach (var book in _wishlist) {
@if (!string.IsNullOrWhiteSpace(book.CoverUrl)) { @book.Title } else { }

@book.Title

@book.Author

@(book.AvailableCopies > 0 ? "Now Available" : "Out of Stock")
|
@if (book.AvailableCopies > 0) {
}
}

We'll notify you via Firebase when out-of-stock items become available!

} } else { @if (!_favourites.Any()) {

You haven't added any favourites yet.

Browse Catalog →
} else {
@foreach (var book in _favourites) {
@if (!string.IsNullOrWhiteSpace(book.CoverUrl)) { @book.Title } else { }

@book.Title

@book.Author

|
}
} }
}

Please log in as a member to view your wishlist.

@code { private string _activeTab = "wishlist"; private bool _isLoading = true; private List _wishlist = new(); private List _favourites = new(); protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { await LoadDataAsync(); _isLoading = false; StateHasChanged(); } } private async Task LoadDataAsync() { _wishlist = await WishlistService.GetWishlistAsync(); _favourites = await WishlistService.GetFavouritesAsync(); // Ensure server is synced with current local storage await WishlistService.SyncCurrentWishlistAsync(); } private async Task RemoveFromWishlist(int id) { await WishlistService.RemoveFromWishlistAsync(id); await LoadDataAsync(); await JS.InvokeVoidAsync("showToast", "Removed from wishlist", "success"); } private async Task RemoveFromFavourite(int id) { await WishlistService.RemoveFromFavouriteAsync(id); await LoadDataAsync(); await JS.InvokeVoidAsync("showToast", "Removed from favourites", "success"); } }