import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation"; import type UserSessionRepresentation from "@keycloak/keycloak-admin-client/lib/defs/userSessionRepresentation"; import { PageSection } from "@patternfly/react-core"; import { useTranslation } from "react-i18next"; import { adminClient } from "../admin-client"; import type { LoaderFunction } from "../components/table-toolbar/KeycloakDataTable"; import SessionsTable from "../sessions/SessionsTable"; type ClientSessionsProps = { client: ClientRepresentation; }; export const ClientSessions = ({ client }: ClientSessionsProps) => { const { t } = useTranslation("sessions"); const loader: LoaderFunction = async ( first, max ) => { const mapSessionsToType = (type: string) => (sessions: UserSessionRepresentation[]) => sessions.map((session) => ({ type, ...session, })); const allSessions = await Promise.all([ adminClient.clients .listSessions({ id: client.id!, first, max }) .then(mapSessionsToType(t("sessions:sessionsType.regularSSO"))), adminClient.clients .listOfflineSessions({ id: client.id!, first, max, }) .then(mapSessionsToType(t("sessions:sessionsType.offline"))), ]); return allSessions.flat(); }; return ( ); };