Skip to content

Commit 438155e

Browse files
author
cedya77
committed
PublicMetaDB UI tweaks, fix Tailwind 4 broken dropdowns
- Move watch tracking toggle to General Settings - Rename checkin logs to watch tracking - Remove watch tracking card from PMDB integration dialog - Fix select/dropdown/tooltip CSS var syntax for Tailwind 4
1 parent 2f8353e commit 438155e

7 files changed

Lines changed: 35 additions & 44 deletions

File tree

addon/lib/subtitleHandler.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ async function checkinSimkl(parsedId, config) {
560560
return;
561561
}
562562

563-
logger.debug(`[Simkl Checkin] Checking in movie (${buildIdSummary(ids)})`);
563+
logger.debug(`[Simkl Checkin] Tracking movie (${buildIdSummary(ids)})`);
564564
await checkinMovie(ids, accessToken);
565565
return;
566566
}
@@ -605,7 +605,7 @@ async function checkinTrakt(parsedId, config) {
605605
return;
606606
}
607607

608-
logger.debug(`[Trakt Checkin] Checking in movie (${buildIdSummary(ids)})`);
608+
logger.debug(`[Trakt Checkin] Tracking movie (${buildIdSummary(ids)})`);
609609
await checkinMovie(ids, accessToken);
610610
return;
611611
}
@@ -638,35 +638,35 @@ async function checkinPublicMetaDB(parsedId, config) {
638638
const apiKey = config.apiKeys?.publicmetadb;
639639

640640
if (!apiKey) {
641-
logger.debug('[PublicMetaDB Checkin] Skipping - missing API key');
641+
logger.debug('[PublicMetaDB Watch Tracking] Skipping - missing API key');
642642
return;
643643
}
644644

645645
if (parsedId.type === 'movie') {
646646
const ids = normalizeIdsForMovie(parsedId);
647647
if (!ids) {
648-
logger.debug(`[PublicMetaDB Checkin] No valid identifiers for movie provider ${parsedId.provider}`);
648+
logger.debug(`[PublicMetaDB Watch Tracking] No valid identifiers for movie provider ${parsedId.provider}`);
649649
return;
650650
}
651-
logger.debug(`[PublicMetaDB Checkin] Checking in movie (${buildIdSummary(ids)})`);
651+
logger.debug(`[PublicMetaDB Watch Tracking] Tracking movie (${buildIdSummary(ids)})`);
652652
await checkinMovie(ids, apiKey);
653653
return;
654654
}
655655

656656
if (parsedId.type === 'series') {
657657
const resolution = await resolveSeriesIds(parsedId, config);
658658
if (!resolution) {
659-
logger.debug(`[PublicMetaDB Checkin] Unable to resolve identifiers for series provider ${parsedId.provider}`);
659+
logger.debug(`[PublicMetaDB Watch Tracking] Unable to resolve identifiers for series provider ${parsedId.provider}`);
660660
return;
661661
}
662-
logger.debug(`[PublicMetaDB Checkin] Checking in episode (${buildIdSummary(resolution.ids)}) S${resolution.season}E${resolution.episode}`);
662+
logger.debug(`[PublicMetaDB Watch Tracking] Tracking episode (${buildIdSummary(resolution.ids)}) S${resolution.season}E${resolution.episode}`);
663663
await checkinEpisode(resolution.ids, resolution.season, resolution.episode, apiKey);
664664
return;
665665
}
666666

667-
logger.debug(`[PublicMetaDB Checkin] Unsupported content type: ${parsedId.type}`);
667+
logger.debug(`[PublicMetaDB Watch Tracking] Unsupported content type: ${parsedId.type}`);
668668
} catch (error) {
669-
logger.error(`[PublicMetaDB Checkin] Unexpected tracking error: ${error.message}`, {
669+
logger.error(`[PublicMetaDB Watch Tracking] Unexpected tracking error: ${error.message}`, {
670670
stack: error.stack
671671
});
672672
}

addon/utils/publicmetadbUtils.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -330,15 +330,15 @@ async function checkinMovie(ids: Record<string, any>, apiKey: string): Promise<b
330330
tmdbId = resolved?.tmdbId ? parseInt(resolved.tmdbId, 10) : null;
331331
}
332332
if (!tmdbId) {
333-
logger.debug(`[Checkin] Could not resolve TMDB ID for movie: ${JSON.stringify(ids)}`);
333+
logger.debug(`[Watch Tracking] Could not resolve TMDB ID for movie: ${JSON.stringify(ids)}`);
334334
return false;
335335
}
336336

337337
await markWatched(apiKey, tmdbId, 'movie');
338-
logger.info(`[Checkin] Movie marked as watched: tmdb:${tmdbId}`);
338+
logger.info(`[Watch Tracking] Movie marked as watched: tmdb:${tmdbId}`);
339339
return true;
340340
} catch (err: any) {
341-
logger.error(`[Checkin] Movie check-in failed: ${err.message}`);
341+
logger.error(`[Watch Tracking] Movie check-in failed: ${err.message}`);
342342
return false;
343343
}
344344
}
@@ -356,15 +356,15 @@ async function checkinEpisode(
356356
tmdbId = resolved?.tmdbId ? parseInt(resolved.tmdbId, 10) : null;
357357
}
358358
if (!tmdbId) {
359-
logger.debug(`[Checkin] Could not resolve TMDB ID for series: ${JSON.stringify(ids)}`);
359+
logger.debug(`[Watch Tracking] Could not resolve TMDB ID for series: ${JSON.stringify(ids)}`);
360360
return false;
361361
}
362362

363363
await markWatched(apiKey, tmdbId, 'tv', season, episode);
364-
logger.info(`[Checkin] Episode marked as watched: tmdb:${tmdbId} S${season}E${episode}`);
364+
logger.info(`[Watch Tracking] Episode marked as watched: tmdb:${tmdbId} S${season}E${episode}`);
365365
return true;
366366
} catch (err: any) {
367-
logger.error(`[Checkin] Episode check-in failed: ${err.message}`);
367+
logger.error(`[Watch Tracking] Episode check-in failed: ${err.message}`);
368368
return false;
369369
}
370370
}

configure/src/components/sections/GeneralSettings.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,10 @@ export function GeneralSettings() {
306306
setConfig(prevConfig => ({ ...prevConfig, traktWatchTracking: checked }));
307307
};
308308

309+
const handlePublicMetaDBTrackingChange = (checked: boolean) => {
310+
setConfig(prevConfig => ({ ...prevConfig, publicmetadbWatchTracking: checked }));
311+
};
312+
309313
const handleEnableRatingPostersForLibraryChange = (checked: boolean) => {
310314
setConfig(prevConfig => ({ ...prevConfig, enableRatingPostersForLibrary: checked }));
311315
};
@@ -503,6 +507,19 @@ export function GeneralSettings() {
503507
onCheckedChange={handleTraktTrackingChange}
504508
/>
505509
</div>
510+
<div className="flex items-center justify-between p-4 rounded-lg border border-transparent hover:border-border hover:bg-accent transition-colors">
511+
<div>
512+
<Label htmlFor="publicmetadb-watch-tracking" className="text-lg font-medium">PublicMetaDB Watch Tracking</Label>
513+
<p className="text-sm text-muted-foreground">
514+
Automatically log plays to your PublicMetaDB account when you watch content (requires API key in Integrations & API Keys).
515+
</p>
516+
</div>
517+
<Switch
518+
id="publicmetadb-watch-tracking"
519+
checked={!!config.publicmetadbWatchTracking}
520+
onCheckedChange={handlePublicMetaDBTrackingChange}
521+
/>
522+
</div>
506523
<div className="flex items-center justify-between p-4 rounded-lg border border-transparent hover:border-border hover:bg-accent transition-colors">
507524
<div>
508525
<Label htmlFor="enable-rating-posters-for-library" className="text-lg font-medium">Keep Rating Posters for Library Items</Label>

configure/src/components/sections/PublicMetaDBIntegration.tsx

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -402,32 +402,6 @@ export function PublicMetaDBIntegration({ isOpen, onClose }: PublicMetaDBIntegra
402402
</Card>
403403
)}
404404

405-
{/* Watch Tracking */}
406-
{isValid && (
407-
<Card>
408-
<CardHeader>
409-
<CardTitle>Watch Tracking</CardTitle>
410-
<CardDescription>
411-
Automatically log plays to your PublicMetaDB account when you watch content
412-
</CardDescription>
413-
</CardHeader>
414-
<CardContent>
415-
<div className="flex items-center justify-between p-3 border rounded-lg">
416-
<div className="space-y-0.5">
417-
<Label htmlFor="pmdb-tracking" className="text-sm font-medium">Mark as Watched</Label>
418-
<p className="text-xs text-muted-foreground">Automatically log plays when you watch content</p>
419-
</div>
420-
<Switch
421-
id="pmdb-tracking"
422-
checked={config.publicmetadbWatchTracking}
423-
onCheckedChange={(checked) =>
424-
setConfig(prev => ({ ...prev, publicmetadbWatchTracking: checked }))
425-
}
426-
/>
427-
</div>
428-
</CardContent>
429-
</Card>
430-
)}
431405
</div>
432406

433407
<DialogFooter className="sm:justify-between">

configure/src/components/ui/dropdown-menu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const DropdownMenuContent = React.forwardRef<
1717
ref={ref}
1818
sideOffset={sideOffset}
1919
className={cn(
20-
"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
20+
"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-dropdown-menu-content-transform-origin)",
2121
className
2222
)}
2323
{...props}

configure/src/components/ui/select.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ const SelectContent = React.forwardRef<
7171
<SelectPrimitive.Content
7272
ref={ref}
7373
className={cn(
74-
"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",
74+
"relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-select-content-transform-origin)",
7575
position === "popper" &&
7676
"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
7777
className

configure/src/components/ui/tooltip.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ const TooltipContent = React.forwardRef<
9393
ref={ref}
9494
sideOffset={sideOffset}
9595
className={cn(
96-
"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
96+
"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-tooltip-content-transform-origin)",
9797
className
9898
)}
9999
{...props}

0 commit comments

Comments
 (0)