import { assertEndpointId, fetchSessionizeView } from './client.ts'
import { flattenSessionGroups } from './project.ts'
import type {
EndpointInput,
SessionizeSessionGroup,
SlimSession,
} from './types.ts'
/**
* List flattened Sessionize sessions with room, speaker, and category names.
*
* @example
* import listSessions from 'kody:@kody/sessionize/list-sessions'
* const { items } = await listSessions({ endpointId: 'jl4ktls0' })
* // => { endpointId: 'jl4ktls0', count: 10, items: [{ title: "Aiden's Keynote", ... }] }
*/
export default async function listSessions(input: EndpointInput): Promise<{
endpointId: string
count: number
items: Array<SlimSession>
}> {
const endpointId = assertEndpointId(input.endpointId)
const groups = await fetchSessionizeView<Array<SessionizeSessionGroup>>({
endpointId,
view: 'Sessions',
})
const items = flattenSessionGroups(groups)
return { endpointId, count: items.length, items }
}