mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-06-02 12:08:37 +01:00
feat(tv): add glass poster module and refactor grid layouts
This commit is contained in:
36
modules/glass-poster/src/GlassPosterModule.ts
Normal file
36
modules/glass-poster/src/GlassPosterModule.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
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+)
|
||||
*/
|
||||
export function isGlassEffectAvailable(): boolean {
|
||||
if (!GlassPosterNativeModule) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return GlassPosterNativeModule.isGlassEffectAvailable();
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export default GlassPosterNativeModule;
|
||||
Reference in New Issue
Block a user