mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-06-04 21:18:31 +01:00
Type a loose address (media.example.com, https://…, host:port) and the app finds the working, canonical URL. - utils/serverUrl: generic candidate generator (https-first, port/path preserved, no Jellyfin-specific ports), parallel-probe resolver, numeric semver compare, and a Jellyseerr probe (/api/v1/status, min 2.0.0). - useServerUrlResolver: idle -> resolving -> ok | error state machine with cancellation. - ServerUrlField: shared input that auto-resolves on blur, inline status chip (tap to re-test) + resolved URL, persists the canonical URL. - Jellyseerr settings adopt the field and log in with the resolved URL. Probe contract makes Streamystats/Jellyfin/Merlin a drop-in follow-up.
17 lines
592 B
TypeScript
17 lines
592 B
TypeScript
/** Result of probing a single candidate URL for a specific service. */
|
|
export type ServerProbeOutcome =
|
|
| { status: "ok"; meta?: Record<string, unknown> }
|
|
| { status: "version-too-low"; version?: string }
|
|
| { status: "wrong-service" }
|
|
| { status: "unreachable" };
|
|
|
|
/**
|
|
* Validates one fully-qualified candidate URL for a given service.
|
|
* Implementations must resolve (never reject) — map errors to "unreachable".
|
|
* The provided signal is aborted on timeout or cancellation.
|
|
*/
|
|
export type ServerProbe = (
|
|
url: string,
|
|
signal: AbortSignal,
|
|
) => Promise<ServerProbeOutcome>;
|