* feat(jellycompat): install web assets at runtime * fix(jellycompat): recover stale web operation locks * fix(jellycompat): harden web component management * feat(admin): refine compat settings and restart status * chore(dev): add hot-reload docker compose stack * fix(dev): include npm in hot-reload backend * feat(admin): refine Jellyfin compatibility settings * feat(settings): improve jellyfin proxy summary * feat(settings): improve jellyfin web controls * fix(settings): update jellyfin web removal status * fix(settings): enable jellyfin web after install * feat(jellycompat): auto-select web ui version * test(api): update rate limit handler setup * feat(jellycompat): refine web ui install onboarding * fix(jellycompat): address web ui install review issues * fix(onboarding): mirror jellyfin api runtime status * fix(admin): remove global restart banner * fix(settings): gate restart required tracking * fix(jellyfin): ignore live settings for restart status * fix(jellyfin): avoid restart for live compat settings * fix(subtitles): normalize AI language codes * fix(catalog): support partial title search tokens * feat(branding): add white-label customization * Add push relay engineering plan - Document relay API contracts, APNs/FCM behavior, auth, storage, and ops - Capture implementation plan, provider references, decisions, and README --------- Co-authored-by: Quick <31828688+Quick104@users.noreply.github.com>
17 lines
689 B
TypeScript
17 lines
689 B
TypeScript
import type { JellyfinCompatStatus } from "@/api/types";
|
|
|
|
type JellyfinWebInstallStatus = Pick<JellyfinCompatStatus, "installed_version" | "pinned_version">;
|
|
|
|
export function normalizeJellyfinCompatVersion(version?: string | null): string {
|
|
return version?.trim().replace(/^[vV]/, "") ?? "";
|
|
}
|
|
|
|
export function hasPinnedJellyfinWebInstalled(status?: JellyfinWebInstallStatus | null): boolean {
|
|
if (!status) return false;
|
|
|
|
const installedVersion = normalizeJellyfinCompatVersion(status.installed_version);
|
|
const pinnedVersion = normalizeJellyfinCompatVersion(status.pinned_version);
|
|
|
|
return installedVersion !== "" && pinnedVersion !== "" && installedVersion === pinnedVersion;
|
|
}
|