import { useState, useEffect, useMemo } from 'react';
import { Action, Blink, type ActionAdapter } from "@dialectlabs/blinks";
import { useActionAdapter, useActionsRegistryInterval } from '@dialectlabs/blinks/react';
const App = () => {
const { isRegistryLoaded } = useActionsRegistryInterval();
const { adapter } = useActionAdapter(YOUR_RPC_URL_OR_CONNECTION);
return isRegistryLoaded ? <ManyActions adapter={adapter} /> : null;
};
const ManyActions = ({ adapter }) => {
const apiUrls = useMemo(() => ['https://actions.example.com/transaction1', 'https://actions.example.com/transaction2'], []);
const [actions, setActions] = useState([]);
useEffect(() => {
const fetchActions = async () => {
const promises = apiUrls.map(url => Action.fetch(url).catch(() => null));
const results = await Promise.all(promises);
setActions(results.filter(Boolean));
};
fetchActions();
}, [apiUrls]);
useEffect(() => {
actions.forEach(action => action.setAdapter(adapter));
}, [actions, adapter]);
return actions.map(action => (
<div key={action.url} className="flex gap-2">
<Blink action={action} websiteText={new URL(action.url).hostname} />
</div>
));
};