mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-07-07 13:02:52 +01:00
Some checks are pending
🏗️ Build Apps / 🤖 Build Android APK (Phone) (push) Waiting to run
🏗️ Build Apps / 🤖 Build Android APK (TV) (push) Waiting to run
🏗️ Build Apps / 🍎 Build iOS IPA (Phone) (push) Waiting to run
🏗️ Build Apps / 🍎 Build iOS IPA (Phone - Unsigned) (push) Waiting to run
🏗️ Build Apps / 🍎 Build tvOS IPA (push) Waiting to run
🏗️ Build Apps / 🍎 Build tvOS IPA (Unsigned) (push) Waiting to run
🔒 Lockfile Consistency Check / 🔍 Check bun.lock and package.json consistency (push) Waiting to run
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (actions) (push) Waiting to run
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (javascript-typescript) (push) Waiting to run
🏷️🔀Merge Conflict Labeler / 🏷️ Labeling Merge Conflicts (push) Waiting to run
🚦 Security & Quality Gate / 📝 Validate PR Title (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Vulnerable Dependencies (push) Waiting to run
🚦 Security & Quality Gate / 🚑 Expo Doctor Check (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Lint & Test (check) (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Lint & Test (format) (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Lint & Test (i18n:check) (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Lint & Test (typecheck) (push) Waiting to run
🛡️ Trivy Security Scan / 🔎 Filesystem scan (push) Waiting to run
28 lines
836 B
TypeScript
28 lines
836 B
TypeScript
import { atom } from "jotai";
|
|
|
|
export type TVOptionItem<T = any> = {
|
|
label: string;
|
|
sublabel?: string;
|
|
value: T;
|
|
selected: boolean;
|
|
};
|
|
|
|
export type TVOptionModalState = {
|
|
title: string;
|
|
options: TVOptionItem[];
|
|
onSelect: (value: any) => void;
|
|
cardWidth?: number;
|
|
cardHeight?: number;
|
|
/**
|
|
* Run onSelect AFTER the modal route is dismissed. Needed only when onSelect
|
|
* navigates (the in-player audio switch replacing the player while
|
|
* transcoding), which the still-active modal route would otherwise swallow.
|
|
* Default (false) runs onSelect before closing, so state-only callers (detail
|
|
* page, library filters, settings) don't re-render after focus returns and
|
|
* lose TV focus.
|
|
*/
|
|
deferApplyUntilDismissed?: boolean;
|
|
} | null;
|
|
|
|
export const tvOptionModalAtom = atom<TVOptionModalState>(null);
|