Skip to content
← Public packages

@kentcdodds/spotify

Spotify playback, playlist, search, library, and device helpers.

src/exports/get-devices.ts

25 lines · 1.2 KB · TypeScript
import { getAvailableDevices, normalizeDeviceSummary } from '../lib/spotify-api.ts'
import type { GetDevicesParams } from '../lib/export-types.ts'

/**
 * List Spotify Connect devices available to the authenticated account.
 * All params accept an optional `account` ('personal' | 'family', default 'personal').
 * @returns Array of device summaries with id, name, type, isActive, and volumePercent.
 * Prefer passing `name` (as `deviceName`) into playback helpers rather than copying `id` —
 * opaque Spotify device ids can trip agent-host safety guards.
 * @example
 * import getDevices from 'kody:@kentcdodds/spotify/get-devices'
 * import playContext from 'kody:@kentcdodds/spotify/play-context'
 * const devices = await getDevices({ account: 'personal' })
 * // => [{ id: '...', name: 'Living Room', type: 'Speaker', isActive: true, volumePercent: 40 }]
 * await playContext({
 *   contextUri: 'spotify:playlist:37i9dQZF1DX0XUsuxWHRQd',
 *   deviceName: devices[0]?.name,
 * })
 */
async function spotifyGetDevices(params: GetDevicesParams = {}) {
	const devices = await getAvailableDevices(params)
	return devices.map(normalizeDeviceSummary).filter(Boolean)
}

export default spotifyGetDevices