A personal media tracker built on the AT Protocol opnshelf.xyz
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(web): link episodes to episode pages

Build episode URLs for calendar and dashboard releases when
show entries represent specific episodes with season and
episode numbers.

+29 -4
+15 -1
apps/web/src/routes/calendar.tsx
··· 12 12 Tv, 13 13 } from "lucide-react"; 14 14 import { useEffect, useMemo, useState } from "react"; 15 - import { buildMovieUrl, buildShowUrl } from "#/lib/url-utils"; 15 + import { buildEpisodeUrl, buildMovieUrl, buildShowUrl } from "#/lib/url-utils"; 16 16 import { useAuth } from "../lib/auth-context"; 17 17 18 18 export const Route = createFileRoute("/calendar")({ ··· 243 243 const getItemUrl = (item: ReleaseCalendarItemDto) => { 244 244 if (item.mediaType === "movie" && item.movieId) { 245 245 return buildMovieUrl(item.movieId, item.title); 246 + } 247 + if ( 248 + item.mediaType === "show" && 249 + item.releaseKind === "episode" && 250 + item.showId && 251 + item.seasonNumber !== undefined && 252 + item.episodeNumber !== undefined 253 + ) { 254 + return buildEpisodeUrl( 255 + item.showId, 256 + item.title, 257 + item.seasonNumber, 258 + item.episodeNumber, 259 + ); 246 260 } 247 261 if (item.mediaType === "show" && item.showId) { 248 262 return buildShowUrl(item.showId, item.title);
+14 -3
apps/web/src/routes/dashboard.tsx
··· 553 553 to={ 554 554 release.mediaType === "movie" && release.movieId 555 555 ? buildMovieUrl(release.movieId, release.title) 556 - : release.showId 557 - ? buildShowUrl(release.showId, release.title) 558 - : "#" 556 + : release.mediaType === "show" && 557 + release.releaseKind === "episode" && 558 + release.showId && 559 + release.seasonNumber !== undefined && 560 + release.episodeNumber !== undefined 561 + ? buildEpisodeUrl( 562 + release.showId, 563 + release.title, 564 + release.seasonNumber, 565 + release.episodeNumber, 566 + ) 567 + : release.showId 568 + ? buildShowUrl(release.showId, release.title) 569 + : "#" 559 570 } 560 571 className="card card-interactive flex items-center gap-3 p-3" 561 572 >