bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/components-data/meetingGrapQlMiniMongoAdapter/component.tsx

33 lines
1.1 KiB
TypeScript
Raw Normal View History

import React, { useEffect, useRef } from 'react';
import { useCreateUseSubscription } from '/imports/ui/core/hooks/createUseSubscription';
import MEETING_SUBSCRIPTION from '/imports/ui/core/graphql/queries/meetingSubscription';
import { Meeting } from '/imports/ui/Types/meeting';
import Meetings from '/imports/api/meetings';
import { AdapterProps } from '../graphqlToMiniMongoAdapterManager/component';
const MeetingGrapQlMiniMongoAdapter: React.FC<AdapterProps> = ({
onReady,
children,
}) => {
const ready = useRef(false);
const meetingSubscription = useCreateUseSubscription<Meeting>(MEETING_SUBSCRIPTION, {}, true);
const {
data: meetingData,
} = meetingSubscription();
useEffect(() => {
if (meetingData) {
if (!ready.current) {
ready.current = true;
onReady('MeetingGrapQlMiniMongoAdapter');
}
const meeting = JSON.parse(JSON.stringify(meetingData[0]));
const { meetingId } = meeting;
Meetings.upsert({ meetingId }, meeting);
}
}, [meetingData]);
return children;
};
export default MeetingGrapQlMiniMongoAdapter;