import _ from 'lodash'; import { allowOnlyOneAtATime } from '../../../utils/Promise'; import { updateDefaultRooms, updateDefaultRoomsInProgress, } from '../../../../state/ducks/defaultRooms'; import { getCompleteUrlFromRoom } from '../utils/OpenGroupUtils'; import { parseOpenGroupV2 } from './JoinOpenGroupV2'; import { getAllRoomInfos } from '../sogsv3/sogsV3RoomInfos'; export type OpenGroupRequestCommonType = { serverUrl: string; roomId: string; }; export type OpenGroupCapabilityRequest = { server: string; endpoint: string; serverPubKey: string; headers: Record; method: string; useV4: boolean; }; export type OpenGroupV2Info = { id: string; name: string; imageId?: string; capabilities?: Array; }; export type OpenGroupV2InfoJoinable = OpenGroupV2Info & { completeUrl: string; base64Data?: string; }; // tslint:disable: no-http-string const defaultServerUrl = 'http://116.203.70.33'; const defaultServerPublicKey = 'a03c383cf63c3c4efe67acc52112a6dd734b3a946b9545f488aaa93da7991238'; const defaultRoom = `${defaultServerUrl}/main?public_key=${defaultServerPublicKey}`; const loadDefaultRoomsSingle = () => allowOnlyOneAtATime( 'loadDefaultRoomsSingle', async (): Promise> => { const roomInfos = parseOpenGroupV2(defaultRoom); if (roomInfos) { try { const roomsGot = await getAllRoomInfos(roomInfos); if (!roomsGot) { return []; } return roomsGot.map(room => { return { ...room, completeUrl: getCompleteUrlFromRoom({ serverUrl: roomInfos.serverUrl, serverPublicKey: roomInfos.serverPublicKey, roomId: room.id, }), }; }); } catch (e) { window?.log?.warn('loadDefaultRoomloadDefaultRoomssIfNeeded failed', e); } return []; } return []; } ); /** * Load to the cache all the details of the room of the default opengroupv2 server * This call will only run once at a time. */ export const loadDefaultRooms = async () => { window.inboxStore?.dispatch(updateDefaultRoomsInProgress(true)); const allRooms: Array = await loadDefaultRoomsSingle(); window.inboxStore?.dispatch(updateDefaultRoomsInProgress(false)); if (allRooms !== undefined) { window.inboxStore?.dispatch(updateDefaultRooms(allRooms)); } };