fix: pass watchlist status to anime detail page
Anime detail page never looked up or passed the user's watchlist status, so the dropdown always showed 'Add to Watchlist'. Now queries watch_list_entry and passes Status and WatchlistIDs.
This commit is contained in:
@@ -253,9 +253,17 @@ func (h *AnimeHandler) HandleAnimeDetails(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
user, _ := c.Get("User")
|
user, _ := c.Get("User")
|
||||||
|
status := ""
|
||||||
|
var watchlistIDs []int64
|
||||||
ep := 1
|
ep := 1
|
||||||
var cwSeconds float64
|
var cwSeconds float64
|
||||||
if u, ok := user.(*domain.User); ok {
|
if u, ok := user.(*domain.User); ok {
|
||||||
|
entry, err := h.watchlistSvc.GetWatchListEntry(c.Request.Context(), u.ID, int64(id))
|
||||||
|
if err == nil {
|
||||||
|
status = entry.Status
|
||||||
|
watchlistIDs = []int64{entry.AnimeID}
|
||||||
|
}
|
||||||
|
|
||||||
cwEntry, err := h.watchlistSvc.GetContinueWatchingEntry(c.Request.Context(), u.ID, int64(id))
|
cwEntry, err := h.watchlistSvc.GetContinueWatchingEntry(c.Request.Context(), u.ID, int64(id))
|
||||||
if err == nil && cwEntry.CurrentEpisode.Valid {
|
if err == nil && cwEntry.CurrentEpisode.Valid {
|
||||||
ep = int(cwEntry.CurrentEpisode.Int64)
|
ep = int(cwEntry.CurrentEpisode.Int64)
|
||||||
@@ -267,6 +275,8 @@ func (h *AnimeHandler) HandleAnimeDetails(c *gin.Context) {
|
|||||||
"Anime": anime,
|
"Anime": anime,
|
||||||
"CurrentPath": fmt.Sprintf("/anime/%d", id),
|
"CurrentPath": fmt.Sprintf("/anime/%d", id),
|
||||||
"User": user,
|
"User": user,
|
||||||
|
"Status": status,
|
||||||
|
"WatchlistIDs": watchlistIDs,
|
||||||
"ContinueWatchingEp": ep,
|
"ContinueWatchingEp": ep,
|
||||||
"ContinueWatchingTime": cwSeconds,
|
"ContinueWatchingTime": cwSeconds,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ type WatchlistService interface {
|
|||||||
UpdateEntry(ctx context.Context, userID string, animeID int64, status string) error
|
UpdateEntry(ctx context.Context, userID string, animeID int64, status string) error
|
||||||
RemoveEntry(ctx context.Context, userID string, animeID int64) error
|
RemoveEntry(ctx context.Context, userID string, animeID int64) error
|
||||||
GetWatchlist(ctx context.Context, userID string) ([]UserWatchListRow, error)
|
GetWatchlist(ctx context.Context, userID string) ([]UserWatchListRow, error)
|
||||||
|
GetWatchListEntry(ctx context.Context, userID string, animeID int64) (WatchlistEntry, error)
|
||||||
GetContinueWatchingEntry(ctx context.Context, userID string, animeID int64) (db.ContinueWatchingEntry, error)
|
GetContinueWatchingEntry(ctx context.Context, userID string, animeID int64) (db.ContinueWatchingEntry, error)
|
||||||
DeleteContinueWatching(ctx context.Context, userID string, animeID int64) error
|
DeleteContinueWatching(ctx context.Context, userID string, animeID int64) error
|
||||||
}
|
}
|
||||||
@@ -22,6 +23,7 @@ type WatchlistRepository interface {
|
|||||||
UpsertWatchListEntry(ctx context.Context, arg db.UpsertWatchListEntryParams) (db.WatchListEntry, error)
|
UpsertWatchListEntry(ctx context.Context, arg db.UpsertWatchListEntryParams) (db.WatchListEntry, error)
|
||||||
DeleteWatchListEntry(ctx context.Context, arg db.DeleteWatchListEntryParams) error
|
DeleteWatchListEntry(ctx context.Context, arg db.DeleteWatchListEntryParams) error
|
||||||
GetUserWatchList(ctx context.Context, userID string) ([]db.GetUserWatchListRow, error)
|
GetUserWatchList(ctx context.Context, userID string) ([]db.GetUserWatchListRow, error)
|
||||||
|
GetWatchListEntry(ctx context.Context, arg db.GetWatchListEntryParams) (db.WatchListEntry, error)
|
||||||
GetContinueWatchingEntry(ctx context.Context, arg db.GetContinueWatchingEntryParams) (db.ContinueWatchingEntry, error)
|
GetContinueWatchingEntry(ctx context.Context, arg db.GetContinueWatchingEntryParams) (db.ContinueWatchingEntry, error)
|
||||||
DeleteContinueWatchingEntry(ctx context.Context, arg db.DeleteContinueWatchingEntryParams) error
|
DeleteContinueWatchingEntry(ctx context.Context, arg db.DeleteContinueWatchingEntryParams) error
|
||||||
SaveWatchProgress(ctx context.Context, arg db.SaveWatchProgressParams) error
|
SaveWatchProgress(ctx context.Context, arg db.SaveWatchProgressParams) error
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ func (r *watchlistRepository) GetUserWatchList(ctx context.Context, userID strin
|
|||||||
return r.queries.GetUserWatchList(ctx, userID)
|
return r.queries.GetUserWatchList(ctx, userID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *watchlistRepository) GetWatchListEntry(ctx context.Context, arg db.GetWatchListEntryParams) (db.WatchListEntry, error) {
|
||||||
|
return r.queries.GetWatchListEntry(ctx, arg)
|
||||||
|
}
|
||||||
|
|
||||||
func (r *watchlistRepository) GetContinueWatchingEntry(ctx context.Context, arg db.GetContinueWatchingEntryParams) (db.ContinueWatchingEntry, error) {
|
func (r *watchlistRepository) GetContinueWatchingEntry(ctx context.Context, arg db.GetContinueWatchingEntryParams) (db.ContinueWatchingEntry, error) {
|
||||||
return r.queries.GetContinueWatchingEntry(ctx, arg)
|
return r.queries.GetContinueWatchingEntry(ctx, arg)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,13 @@ func (s *watchlistService) GetWatchlist(ctx context.Context, userID string) ([]d
|
|||||||
return s.repo.GetUserWatchList(ctx, userID)
|
return s.repo.GetUserWatchList(ctx, userID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *watchlistService) GetWatchListEntry(ctx context.Context, userID string, animeID int64) (db.WatchListEntry, error) {
|
||||||
|
return s.repo.GetWatchListEntry(ctx, db.GetWatchListEntryParams{
|
||||||
|
UserID: userID,
|
||||||
|
AnimeID: animeID,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (s *watchlistService) GetContinueWatchingEntry(ctx context.Context, userID string, animeID int64) (db.ContinueWatchingEntry, error) {
|
func (s *watchlistService) GetContinueWatchingEntry(ctx context.Context, userID string, animeID int64) (db.ContinueWatchingEntry, error) {
|
||||||
return s.repo.GetContinueWatchingEntry(ctx, db.GetContinueWatchingEntryParams{
|
return s.repo.GetContinueWatchingEntry(ctx, db.GetContinueWatchingEntryParams{
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
|
|||||||
Reference in New Issue
Block a user