mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-06-02 20:18:29 +01:00
feat(playback): handle remote-control messages over WebSocket
This commit is contained in:
@@ -12,6 +12,7 @@ import {
|
|||||||
} from "react";
|
} from "react";
|
||||||
import { AppState, type AppStateStatus } from "react-native";
|
import { AppState, type AppStateStatus } from "react-native";
|
||||||
import useRouter from "@/hooks/useAppRouter";
|
import useRouter from "@/hooks/useAppRouter";
|
||||||
|
import { useRemoteControl } from "@/hooks/useRemoteControl";
|
||||||
import { apiAtom, getOrSetDeviceId } from "@/providers/JellyfinProvider";
|
import { apiAtom, getOrSetDeviceId } from "@/providers/JellyfinProvider";
|
||||||
import { useNetworkStatus } from "@/providers/NetworkStatusProvider";
|
import { useNetworkStatus } from "@/providers/NetworkStatusProvider";
|
||||||
|
|
||||||
@@ -41,6 +42,8 @@ export const WebSocketProvider = ({ children }: WebSocketProviderProps) => {
|
|||||||
const [ws, setWs] = useState<WebSocket | null>(null);
|
const [ws, setWs] = useState<WebSocket | null>(null);
|
||||||
const [isConnected, setIsConnected] = useState(false);
|
const [isConnected, setIsConnected] = useState(false);
|
||||||
const [lastMessage, setLastMessage] = useState<WebSocketMessage | null>(null);
|
const [lastMessage, setLastMessage] = useState<WebSocketMessage | null>(null);
|
||||||
|
// Route Jellyfin remote-control messages to the active player.
|
||||||
|
useRemoteControl(lastMessage);
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const deviceId = useMemo(() => {
|
const deviceId = useMemo(() => {
|
||||||
return getOrSetDeviceId();
|
return getOrSetDeviceId();
|
||||||
@@ -164,7 +167,14 @@ export const WebSocketProvider = ({ children }: WebSocketProviderProps) => {
|
|||||||
IconUrl:
|
IconUrl:
|
||||||
"https://raw.githubusercontent.com/retardgerman/streamyfinweb/refs/heads/main/public/assets/images/icon_new_withoutBackground.png",
|
"https://raw.githubusercontent.com/retardgerman/streamyfinweb/refs/heads/main/public/assets/images/icon_new_withoutBackground.png",
|
||||||
PlayableMediaTypes: ["Audio", "Video"],
|
PlayableMediaTypes: ["Audio", "Video"],
|
||||||
SupportedCommands: ["Play"],
|
SupportedCommands: [
|
||||||
|
"Play",
|
||||||
|
"DisplayMessage",
|
||||||
|
"SetVolume",
|
||||||
|
"ToggleMute",
|
||||||
|
"Mute",
|
||||||
|
"Unmute",
|
||||||
|
],
|
||||||
SupportsMediaControl: true,
|
SupportsMediaControl: true,
|
||||||
SupportsPersistentIdentifier: true,
|
SupportsPersistentIdentifier: true,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user