import { assertEndpointId, fetchSessionizeView } from './client.ts'
import { slimSpeakerFromListed } from './project.ts'
import type {
EndpointInput,
SessionizeListedSpeaker,
SlimSpeaker,
} from './types.ts'
/**
* List Sessionize speakers with session titles and public links.
*
* @example
* import listSpeakers from 'kody:@kody/sessionize/list-speakers'
* const { items } = await listSpeakers({ endpointId: 'jl4ktls0' })
* // => { count: 10, items: [{ fullName: 'Aiden Test', sessionTitles: [...] }] }
*/
export default async function listSpeakers(input: EndpointInput): Promise<{
endpointId: string
count: number
items: Array<SlimSpeaker>
}> {
const endpointId = assertEndpointId(input.endpointId)
const speakers = await fetchSessionizeView<Array<SessionizeListedSpeaker>>({
endpointId,
view: 'Speakers',
})
const items = speakers.map((speaker) => slimSpeakerFromListed(speaker))
return { endpointId, count: items.length, items }
}