← Public packages
@kentcdodds/spotify
Spotify playback, playlist, search, library, and device helpers.
src/exports/get-devices.ts
25 lines · 1.2 KB · TypeScriptimport { 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