import { Card, Collection, Flex, Heading } from '@aws-amplify/ui-react';
import { API } from 'aws-amplify';
import { useEffect, useState } from 'react';
import Observable from 'zen-observable-ts';
import { CONNECTION_STATE_CHANGE, ConnectionState } from '@aws-amplify/pubsub';
import { Hub } from 'aws-amplify';
import pluralize from 'pluralize';
import _ from 'lodash';
import { AuthMode, HarnessContext, HarnessContextType } from './HarnessContext';
type SubscriptionComponentProps = {
id: string;
query: string;
title: string;
authMode?: AuthMode;
};
const SubscriptionState = ({ authMode }: { authMode?: AuthMode }) => {
const [areSubscriptionsReady, setSubscriptionsReady] = useState(false);
useEffect(() => {
const hubListener = (data: any) => {
const { payload } = data;
if (payload.event === CONNECTION_STATE_CHANGE) {
const connectionState = payload.data.connectionState as ConnectionState;
if (connectionState === 'Connected') {
setSubscriptionsReady(true);
}
}
}
Hub.listen('api', hubListener);
return () => Hub.remove('api', hubListener);
}, [authMode]);
const stateIndicator = areSubscriptionsReady ? '✅' : '❌';
return ({ stateIndicator });
};
const SubscriptionComponent = ({ id, query, title, authMode }: SubscriptionComponentProps) => {
const [loggedSubscriptionMessages, setSubscriptionMessages] = useState