import React, { useEffect, useReducer, useState } from 'react'; import { useSelector } from 'react-redux'; import { joinOpenGroupV2WithUIEvents, parseOpenGroupV2, } from '../../opengroup/opengroupV2/JoinOpenGroupV2'; import { downloadPreviewOpenGroupV2 } from '../../opengroup/opengroupV2/OpenGroupAPIV2'; import { StateType } from '../../state/reducer'; import { Avatar, AvatarSize } from '../Avatar'; import { Flex } from '../basic/Flex'; import { PillContainer } from '../basic/PillContainer'; import { H3 } from '../basic/Text'; // tslint:disable: no-void-expression export type JoinableRoomProps = { completeUrl: string; name: string; imageId?: string; onClick: (completeUrl: string) => void; }; const SessionJoinableRoomAvatar = (props: JoinableRoomProps) => { const [base64Data, setBase64Data] = useState(''); useEffect(() => { try { const parsedInfos = parseOpenGroupV2(props.completeUrl); if (parsedInfos) { void downloadPreviewOpenGroupV2(parsedInfos) .then(base64 => { setBase64Data(base64 || ''); }) .catch(e => { window.log.warn('downloadPreviewOpenGroupV2 failed', e); setBase64Data(''); }); } } catch (e) { window.log.warn(e); } }, [props.imageId, props.completeUrl]); return ( props.onClick(props.completeUrl)} /> ); }; const SessionJoinableRoomName = (props: JoinableRoomProps) => { return {props.name}; }; const SessionJoinableRoomRow = (props: JoinableRoomProps) => { return ( { props.onClick(props.completeUrl); }} margin="5px" padding="5px" > ); }; export const SessionJoinableRooms = () => { const joinableRooms = useSelector((state: StateType) => state.defaultRooms); if (!joinableRooms?.length) { window.log.info('no default joinable rooms yet'); return <>; } return (

{joinableRooms.map(r => { return ( { void joinOpenGroupV2WithUIEvents(completeUrl, true); }} /> ); })} ); };