fix(discovery): only offer aired episodes in Continue Watching; unify "today"

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
jakeandClaude Opus 5.5 committed 2026-10-04 15:17:11 -04:00
1 parent 72d9f8f2d1
commit 2529b132ef
7 files changed
+163 -43

No files matched your search

+3 -1
View File
@@ -1,5 +1,7 @@
import { and, asc, desc, eq, gte, inArray, lte, sql } from "drizzle-orm";
import { localDateString } from "@sofa/config";
import { db } from "../client";
import {
episodes,
@@ -82,7 +84,7 @@ export function getUserStatusCounts(userId: string) {
.all();
// Count TV shows where all aired episodes are watched (caught_up + completed display states)
const today = new Date().toISOString().slice(0, 10);
const today = localDateString();
const [tvRow] = db
.select({ count: sql<number>`count(*)` })
.from(userTitleStatus)
+3 -1
View File
@@ -1,5 +1,7 @@
import { and, asc, countDistinct, desc, eq, gte, isNotNull, lte, sql } from "drizzle-orm";
import { localDateString } from "@sofa/config";
import { db } from "../client";
import {
episodes,
@@ -51,7 +53,7 @@ function watchedEpisodeCount(
}
function displayStatusExpr() {
const today = new Date().toISOString().slice(0, 10);
const today = localDateString();
const aired = airedEpisodeCount(titles.id, today);
const watched = watchedEpisodeCount(titles.id, userTitleStatus.userId, today);
+3 -1
View File
@@ -1,5 +1,7 @@
import { and, eq, inArray, sql } from "drizzle-orm";
import { localDateString } from "@sofa/config";
import { db } from "../client";
import {
episodes,
@@ -226,7 +228,7 @@ export function getUserStatusesByTitleIds(userId: string, titleIds: string[]) {
export function getEpisodeProgressByTitleIds(userId: string, titleIds: string[]) {
if (titleIds.length === 0) return [];
const today = new Date().toISOString().slice(0, 10);
const today = localDateString();
return db
.select({
titleId: titles.id,