mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-06-01 19:48:28 +01:00
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import { NativeModule, requireNativeModule } from "expo";
|
|
import { Platform } from "react-native";
|
|
|
|
import type { GlassPosterModuleEvents } from "./GlassPoster.types";
|
|
|
|
declare class GlassPosterModuleType extends NativeModule<GlassPosterModuleEvents> {
|
|
isGlassEffectAvailable(): boolean;
|
|
}
|
|
|
|
// Only load the native module on tvOS
|
|
let GlassPosterNativeModule: GlassPosterModuleType | null = null;
|
|
|
|
if (Platform.OS === "ios" && Platform.isTV) {
|
|
try {
|
|
GlassPosterNativeModule =
|
|
requireNativeModule<GlassPosterModuleType>("GlassPoster");
|
|
} catch {
|
|
// Module not available, will use fallback
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if the native glass effect is available (tvOS 26+)
|
|
* NOTE: Glass effect is currently disabled for performance reasons.
|
|
* The native module rebuilds views on every focus change which causes lag.
|
|
* Re-enable by uncommenting the native module check below.
|
|
*/
|
|
export function isGlassEffectAvailable(): boolean {
|
|
// Glass effect disabled - using JS-based focus effects instead
|
|
return false;
|
|
|
|
// Original implementation (re-enable when glass effect is optimized):
|
|
// if (!GlassPosterNativeModule) {
|
|
// return false;
|
|
// }
|
|
// try {
|
|
// return GlassPosterNativeModule.isGlassEffectAvailable();
|
|
// } catch {
|
|
// return false;
|
|
// }
|
|
}
|
|
|
|
export default GlassPosterNativeModule;
|