mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-06-28 08:40:27 +01:00
fix: issues listed in pr
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { useState } from "react";
|
import { useState, useCallback } from "react";
|
||||||
import dgram from "react-native-udp";
|
import dgram from "react-native-udp";
|
||||||
|
|
||||||
const JELLYFIN_DISCOVERY_PORT = 7359;
|
const JELLYFIN_DISCOVERY_PORT = 7359;
|
||||||
@@ -11,23 +11,16 @@ interface ServerInfo {
|
|||||||
serverName?: string;
|
serverName?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const stringToUint8Array = (str: string): Uint8Array => {
|
|
||||||
const arr = new Uint8Array(str.length);
|
|
||||||
for (let i = 0; i < str.length; i++) {
|
|
||||||
arr[i] = str.charCodeAt(i);
|
|
||||||
}
|
|
||||||
return arr;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useJellyfinDiscovery = () => {
|
export const useJellyfinDiscovery = () => {
|
||||||
const [servers, setServers] = useState<ServerInfo[]>([]);
|
const [servers, setServers] = useState<ServerInfo[]>([]);
|
||||||
const [isSearching, setIsSearching] = useState(false);
|
const [isSearching, setIsSearching] = useState(false);
|
||||||
|
|
||||||
const startDiscovery = () => {
|
const startDiscovery = useCallback(() => {
|
||||||
setIsSearching(true);
|
setIsSearching(true);
|
||||||
setServers([]);
|
setServers([]);
|
||||||
|
|
||||||
const discoveredServers = new Set<string>();
|
const discoveredServers = new Set<string>();
|
||||||
|
let discoveryTimeout: NodeJS.Timeout;
|
||||||
|
|
||||||
const socket = dgram.createSocket({
|
const socket = dgram.createSocket({
|
||||||
type: "udp4",
|
type: "udp4",
|
||||||
@@ -46,7 +39,7 @@ export const useJellyfinDiscovery = () => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
socket.setBroadcast(true);
|
socket.setBroadcast(true);
|
||||||
const messageBuffer = stringToUint8Array(DISCOVERY_MESSAGE);
|
const messageBuffer = new TextEncoder().encode(DISCOVERY_MESSAGE);
|
||||||
|
|
||||||
socket.send(
|
socket.send(
|
||||||
messageBuffer,
|
messageBuffer,
|
||||||
@@ -63,7 +56,7 @@ export const useJellyfinDiscovery = () => {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
setTimeout(() => {
|
discoveryTimeout = setTimeout(() => {
|
||||||
setIsSearching(false);
|
setIsSearching(false);
|
||||||
socket.close();
|
socket.close();
|
||||||
}, 5000);
|
}, 5000);
|
||||||
@@ -79,7 +72,7 @@ export const useJellyfinDiscovery = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = String.fromCharCode(...new Uint8Array(msg));
|
const response = new TextDecoder().decode(msg);
|
||||||
const serverInfo = JSON.parse(response);
|
const serverInfo = JSON.parse(response);
|
||||||
discoveredServers.add(rinfo.address);
|
discoveredServers.add(rinfo.address);
|
||||||
|
|
||||||
@@ -97,9 +90,13 @@ export const useJellyfinDiscovery = () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
clearTimeout(discoveryTimeout);
|
||||||
|
if (isSearching) {
|
||||||
|
setIsSearching(false);
|
||||||
|
}
|
||||||
socket.close();
|
socket.close();
|
||||||
};
|
};
|
||||||
};
|
}, []);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
servers,
|
servers,
|
||||||
|
|||||||
@@ -50,15 +50,6 @@ export const JellyfinProvider: React.FC<{ children: ReactNode }> = ({
|
|||||||
const [jellyfin, setJellyfin] = useState<Jellyfin | undefined>(undefined);
|
const [jellyfin, setJellyfin] = useState<Jellyfin | undefined>(undefined);
|
||||||
const [deviceId, setDeviceId] = useState<string | undefined>(undefined);
|
const [deviceId, setDeviceId] = useState<string | undefined>(undefined);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
async () => {
|
|
||||||
const servers = jellyfin?.discovery.getRecommendedServerCandidates(
|
|
||||||
"demo.jellyfin.org/stable"
|
|
||||||
);
|
|
||||||
console.log(servers);
|
|
||||||
};
|
|
||||||
}, [jellyfin]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
const id = getOrSetDeviceId();
|
const id = getOrSetDeviceId();
|
||||||
|
|||||||
Reference in New Issue
Block a user