mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 14:35:41 +00:00
c75297fcf6
Embed bash and zsh completion scripts and add a `completions` subcommand. Extend the player CLI (library, audio device, instant mix) and surface `music_library` in snapshots. Add a shared active-server switcher in the header and locales; instant mix can reseed the queue from CLI and UI.
31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import { pingWithCredentials, scheduleInstantMixProbeForServer } from '../api/subsonic';
|
|
import type { ServerProfile } from '../store/authStore';
|
|
import { useAuthStore } from '../store/authStore';
|
|
import { usePlayerStore } from '../store/playerStore';
|
|
|
|
/**
|
|
* Ping, update server identity / Instant Mix probe, set active server, clear local playback
|
|
* and pull the new server's saved play queue.
|
|
*/
|
|
export async function switchActiveServer(server: ServerProfile): Promise<boolean> {
|
|
try {
|
|
const ping = await pingWithCredentials(server.url, server.username, server.password);
|
|
if (!ping.ok) return false;
|
|
const identity = {
|
|
type: ping.type,
|
|
serverVersion: ping.serverVersion,
|
|
openSubsonic: ping.openSubsonic,
|
|
};
|
|
const auth = useAuthStore.getState();
|
|
auth.setSubsonicServerIdentity(server.id, identity);
|
|
scheduleInstantMixProbeForServer(server.id, server.url, server.username, server.password, identity);
|
|
auth.setActiveServer(server.id);
|
|
auth.setLoggedIn(true);
|
|
usePlayerStore.getState().clearQueue();
|
|
await usePlayerStore.getState().initializeFromServerQueue();
|
|
return true;
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|