mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-14 13:16:16 -08:00
fix(tmdb): resolve confirmed review findings — matching correctness, race guards, cache schema
Fixes the confirmed findings from the PR #1123 code review: - Stalker search: setSelectedContentType now runs BEFORE setSelectedItem, so the TMDB enrichment gate in the selection hook no longer sees the content type of the previously open tab (wrong/no enrichment after ITV -> search -> movie). - Title normalization is now two-tier (normalizeTitleKeys): the exact normalized form keeps a trailing year, the base form strips it and remembers the tag. Year stripping is anchored to the end of the title ("2001: A Space Odyssey" keeps its year) and language-prefix stripping is UPPERCASE-only ("It: Chapter Two" is no longer amputated). - All catalog matching (similar rail, actor pages, DB worker DB_MATCH_TITLES) compares exact forms first and only accepts year-stripped matches when the stripped tag is year-compatible (+-1) with the TMDB year — "Blade Runner" (1982) can no longer claim a catalog "Blade Runner 2049". CatalogTitleMatch carries the stripped trailingYear so the renderer can apply the guard to worker matches. - mergedBackdrops tolerates a plain-string backdrop_path; enrichment merge+patch blocks are wrapped in try/catch so a malformed provider payload can no longer become an unhandled rejection. - loadGlobalMatches (both actor routes) guards against actor->actor navigation races — a slow match for the previous person no longer overwrites the current one's results. - tmdb_metadata media_type CHECK widened to ('movie','tv','person') and person rows now use the honest 'person' type (TmdbCacheMediaType). Pre-release dev DBs with the narrow CHECK are rebuilt in place — the table is a pure cache, so the migration is a self-healing drop-and-recreate keyed off sqlite_master. Docs updated (tmdb-metadata-enrichment.md, CLAUDE.md). New regression coverage: title-normalization.util.spec.ts, two-tier cases in tmdb-similar.util.spec.ts and title-match.operations.spec.ts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
aa92a3b826
commit
ac3a4e91f3
25 files changed
+545
-124
No files matched your search
@@ -31,7 +31,7 @@ import {
|
||||
import { PortalDebugEvent } from './portal-debug.interface';
|
||||
import { CatalogTitleMatch } from './catalog-title-match.interface';
|
||||
import { Settings } from './settings.interface';
|
||||
import { TmdbCacheEntry, TmdbMediaType } from './tmdb.interface';
|
||||
import { TmdbCacheEntry, TmdbCacheMediaType } from './tmdb.interface';
|
||||
import { XtreamCategory } from './xtream-category.interface';
|
||||
|
||||
export const ELECTRON_BRIDGE_CONTENT_TYPES = {
|
||||
@@ -780,7 +780,7 @@ export interface ElectronBridgeApi {
|
||||
) => Promise<ElectronBridgeResult>;
|
||||
// TMDB metadata cache
|
||||
dbGetTmdbMetadata: (
|
||||
mediaType: TmdbMediaType,
|
||||
mediaType: TmdbCacheMediaType,
|
||||
lookupKey: string,
|
||||
language: string
|
||||
) => Promise<TmdbCacheEntry | null>;
|
||||
|
||||
Reference in new issue
Block a user