From d3ee6c8239e1010ccc220cefbd414f3aeab2aa72 Mon Sep 17 00:00:00 2001 From: Uruk Date: Fri, 22 May 2026 02:07:10 +0200 Subject: [PATCH] feat(playback): handle remote-control messages over WebSocket --- providers/WebSocketProvider.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/providers/WebSocketProvider.tsx b/providers/WebSocketProvider.tsx index 78d3c3c83..a81923c5b 100644 --- a/providers/WebSocketProvider.tsx +++ b/providers/WebSocketProvider.tsx @@ -12,6 +12,7 @@ import { } from "react"; import { AppState, type AppStateStatus } from "react-native"; import useRouter from "@/hooks/useAppRouter"; +import { useRemoteControl } from "@/hooks/useRemoteControl"; import { apiAtom, getOrSetDeviceId } from "@/providers/JellyfinProvider"; import { useNetworkStatus } from "@/providers/NetworkStatusProvider"; @@ -41,6 +42,8 @@ export const WebSocketProvider = ({ children }: WebSocketProviderProps) => { const [ws, setWs] = useState(null); const [isConnected, setIsConnected] = useState(false); const [lastMessage, setLastMessage] = useState(null); + // Route Jellyfin remote-control messages to the active player. + useRemoteControl(lastMessage); const router = useRouter(); const deviceId = useMemo(() => { return getOrSetDeviceId(); @@ -164,7 +167,14 @@ export const WebSocketProvider = ({ children }: WebSocketProviderProps) => { IconUrl: "https://raw.githubusercontent.com/retardgerman/streamyfinweb/refs/heads/main/public/assets/images/icon_new_withoutBackground.png", PlayableMediaTypes: ["Audio", "Video"], - SupportedCommands: ["Play"], + SupportedCommands: [ + "Play", + "DisplayMessage", + "SetVolume", + "ToggleMute", + "Mute", + "Unmute", + ], SupportsMediaControl: true, SupportsPersistentIdentifier: true, },