Fix infinite update loop

This commit is contained in:
Justin Starry
2020-05-02 19:34:44 +08:00
committed by Michael Vines
parent 42225446c4
commit f2a034f938

View File

@ -130,6 +130,7 @@ export function TransactionsProvider({ children }: TransactionsProviderProps) {
const { cluster, url } = useCluster(); const { cluster, url } = useCluster();
const accountsDispatch = useAccountsDispatch(); const accountsDispatch = useAccountsDispatch();
const query = useQuery(); const query = useQuery();
const testFlag = query.get("test");
// Check transaction statuses whenever cluster updates // Check transaction statuses whenever cluster updates
React.useEffect(() => { React.useEffect(() => {
@ -143,14 +144,18 @@ export function TransactionsProvider({ children }: TransactionsProviderProps) {
}); });
// Create a test transaction // Create a test transaction
if (cluster === Cluster.Devnet && query.get("test") !== null) { if (cluster === Cluster.Devnet && testFlag !== null) {
createTestTransaction(dispatch, accountsDispatch, url); createTestTransaction(dispatch, accountsDispatch, url);
} }
}, [query, cluster, url]); // eslint-disable-line react-hooks/exhaustive-deps }, [testFlag, cluster, url]); // eslint-disable-line react-hooks/exhaustive-deps
// Check for transactions in the url params // Check for transactions in the url params
const values = TX_ALIASES.flatMap(key => [
query.get(key),
query.get(key + "s")
]);
React.useEffect(() => { React.useEffect(() => {
TX_ALIASES.flatMap(key => [query.get(key), query.get(key + "s")]) values
.filter((value): value is string => value !== null) .filter((value): value is string => value !== null)
.flatMap(value => value.split(",")) .flatMap(value => value.split(","))
// Remove duplicates // Remove duplicates
@ -164,7 +169,7 @@ export function TransactionsProvider({ children }: TransactionsProviderProps) {
}); });
checkTransactionStatus(dispatch, signature, url); checkTransactionStatus(dispatch, signature, url);
}); });
}, [query]); // eslint-disable-line react-hooks/exhaustive-deps }, [values.toString()]); // eslint-disable-line react-hooks/exhaustive-deps
return ( return (
<StateContext.Provider value={state}> <StateContext.Provider value={state}>