|
|
@ -1,10 +1,11 @@
|
|
|
|
import React, { useEffect, useReducer, useState } from 'react';
|
|
|
|
import React, { useContext, useEffect, useReducer, useState } from 'react';
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
joinOpenGroupV2WithUIEvents,
|
|
|
|
joinOpenGroupV2WithUIEvents,
|
|
|
|
parseOpenGroupV2,
|
|
|
|
parseOpenGroupV2,
|
|
|
|
} from '../../opengroup/opengroupV2/JoinOpenGroupV2';
|
|
|
|
} from '../../opengroup/opengroupV2/JoinOpenGroupV2';
|
|
|
|
import { downloadPreviewOpenGroupV2 } from '../../opengroup/opengroupV2/OpenGroupAPIV2';
|
|
|
|
import { downloadPreviewOpenGroupV2 } from '../../opengroup/opengroupV2/OpenGroupAPIV2';
|
|
|
|
|
|
|
|
import { updateDefaultBase64RoomData } from '../../state/ducks/defaultRooms';
|
|
|
|
import { StateType } from '../../state/reducer';
|
|
|
|
import { StateType } from '../../state/reducer';
|
|
|
|
import { Avatar, AvatarSize } from '../Avatar';
|
|
|
|
import { Avatar, AvatarSize } from '../Avatar';
|
|
|
|
import { Flex } from '../basic/Flex';
|
|
|
|
import { Flex } from '../basic/Flex';
|
|
|
@ -15,24 +16,35 @@ import { H3 } from '../basic/Text';
|
|
|
|
export type JoinableRoomProps = {
|
|
|
|
export type JoinableRoomProps = {
|
|
|
|
completeUrl: string;
|
|
|
|
completeUrl: string;
|
|
|
|
name: string;
|
|
|
|
name: string;
|
|
|
|
|
|
|
|
roomId: string;
|
|
|
|
imageId?: string;
|
|
|
|
imageId?: string;
|
|
|
|
onClick: (completeUrl: string) => void;
|
|
|
|
onClick: (completeUrl: string) => void;
|
|
|
|
|
|
|
|
base64Data?: string;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const SessionJoinableRoomAvatar = (props: JoinableRoomProps) => {
|
|
|
|
const SessionJoinableRoomAvatar = (props: JoinableRoomProps) => {
|
|
|
|
const [base64Data, setBase64Data] = useState('');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
useEffect(() => {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
const parsedInfos = parseOpenGroupV2(props.completeUrl);
|
|
|
|
const parsedInfos = parseOpenGroupV2(props.completeUrl);
|
|
|
|
if (parsedInfos) {
|
|
|
|
if (parsedInfos) {
|
|
|
|
|
|
|
|
if (props.base64Data) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
void downloadPreviewOpenGroupV2(parsedInfos)
|
|
|
|
void downloadPreviewOpenGroupV2(parsedInfos)
|
|
|
|
.then(base64 => {
|
|
|
|
.then(base64 => {
|
|
|
|
setBase64Data(base64 || '');
|
|
|
|
const payload = {
|
|
|
|
|
|
|
|
roomId: props.roomId,
|
|
|
|
|
|
|
|
base64Data: base64 || '',
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
window.inboxStore?.dispatch(updateDefaultBase64RoomData(payload));
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.catch(e => {
|
|
|
|
.catch(e => {
|
|
|
|
window.log.warn('downloadPreviewOpenGroupV2 failed', e);
|
|
|
|
window.log.warn('downloadPreviewOpenGroupV2 failed', e);
|
|
|
|
setBase64Data('');
|
|
|
|
const payload = {
|
|
|
|
|
|
|
|
roomId: props.roomId,
|
|
|
|
|
|
|
|
base64Data: '',
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
window.inboxStore?.dispatch(updateDefaultBase64RoomData(payload));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
} catch (e) {
|
|
|
@ -42,7 +54,7 @@ const SessionJoinableRoomAvatar = (props: JoinableRoomProps) => {
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<Avatar
|
|
|
|
<Avatar
|
|
|
|
size={AvatarSize.XS}
|
|
|
|
size={AvatarSize.XS}
|
|
|
|
base64Data={base64Data}
|
|
|
|
base64Data={props.base64Data}
|
|
|
|
{...props}
|
|
|
|
{...props}
|
|
|
|
onAvatarClick={() => props.onClick(props.completeUrl)}
|
|
|
|
onAvatarClick={() => props.onClick(props.completeUrl)}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
@ -86,6 +98,8 @@ export const SessionJoinableRooms = () => {
|
|
|
|
key={r.id}
|
|
|
|
key={r.id}
|
|
|
|
completeUrl={r.completeUrl}
|
|
|
|
completeUrl={r.completeUrl}
|
|
|
|
name={r.name}
|
|
|
|
name={r.name}
|
|
|
|
|
|
|
|
roomId={r.id}
|
|
|
|
|
|
|
|
base64Data={r.base64Data}
|
|
|
|
onClick={completeUrl => {
|
|
|
|
onClick={completeUrl => {
|
|
|
|
void joinOpenGroupV2WithUIEvents(completeUrl, true);
|
|
|
|
void joinOpenGroupV2WithUIEvents(completeUrl, true);
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|