import React, { useEffect, useState } from 'react'; import _get from 'lodash/get'; import { StackParams } from '../types'; import { ActivityIndicator, StyleSheet } from 'react-native'; import { RouteProp } from '@react-navigation/native'; import Institutions from '../components/Institutions/Institutions'; import { withPluggy } from '../hoc/withPluggy'; import { StackNavigationProp } from '@react-navigation/stack'; import { Connector } from 'pluggy-js/dist/types'; import { withConnectProps } from '../hoc/withConnectProps'; import Pluggy from 'pluggy-js'; type InstitutionScreenProp = { navigation: StackNavigationProp; route: RouteProp; pluggy: Pluggy; withSandbox: boolean; }; const InstitutionsScreen = (props: InstitutionScreenProp) => { const { navigation, route, pluggy, withSandbox } = props; const [institutions, setInstitutions] = useState | null>(null); const country = route.params?.country; const isLoading = institutions === null; useEffect(() => { const fetchInstitutions = async () => { const response = await pluggy.fetchConnectors({ countries: country ? [country] : undefined, sandbox: withSandbox, }); const data = _get(response, 'results'); setInstitutions(data); }; fetchInstitutions(); }, [country, pluggy, withSandbox]); const handleSelect = (institutionId: string) => { const institution = institutions!.find(x => x.id === institutionId)!; navigation.navigate('Connect', { institution }); }; if (isLoading) { return ; } return ; }; const styles = StyleSheet.create({ activityIndicator: { flex: 1, alignItems: 'center', justifyContent: 'center', }, }); export default withConnectProps(withPluggy(InstitutionsScreen));