- Spotify playlist, library, album and artist browsing with in-app playback - Song, playlist and album downloads via spotdl with YouTube and Bandcamp fallbacks - Electron desktop app (castLabs Widevine) with a permanent sidebar layout - Linux and Windows packaging scripts
24 lines
602 B
TypeScript
24 lines
602 B
TypeScript
import superjson from "superjson";
|
|
|
|
export type OutputType = {
|
|
connected: boolean;
|
|
accessToken?: string;
|
|
canDownload?: boolean;
|
|
profile?: {
|
|
id: string;
|
|
displayName: string;
|
|
email?: string;
|
|
imageUrl?: string;
|
|
product?: string;
|
|
};
|
|
};
|
|
|
|
export async function getSpotifySession(): Promise<OutputType> {
|
|
const result = await fetch("/_api/spotify-session", { cache: "no-store" });
|
|
if (!result.ok) {
|
|
const parsed = superjson.parse<{ error: string }>(await result.text());
|
|
throw new Error(parsed.error);
|
|
}
|
|
return superjson.parse<OutputType>(await result.text());
|
|
}
|