mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
3732c5f71e
ESLint rules have been added to enforce our JSDoc conventions. These rules were introduced by updating `@metamask/eslint-config` to v9. Some of the rules have been disabled because the effort to fix all lint errors was too high. It might be easiest to enable these rules one directory at a time, or one rule at a time. Most of the changes in this PR were a result of running `yarn lint:fix`. There were a handful of manual changes that seemed obvious and simple to make. Anything beyond that and the rule was left disabled.
37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
import { useEffect, useCallback } from 'react';
|
|
import { useDispatch, useSelector } from 'react-redux';
|
|
import { getContractMethodData as getContractMethodDataAction } from '../store/actions';
|
|
|
|
import { getKnownMethodData } from '../selectors/selectors';
|
|
|
|
/**
|
|
* Access known method data and attempt to resolve unknown method data
|
|
*
|
|
* encapsulates an effect that will fetch methodData when the component mounts,
|
|
* and subsequently anytime the provided data attribute changes. Note that
|
|
* the getContractMethodData action handles over-fetching prevention, first checking
|
|
* if the data is in the store and returning it directly. While using this hook
|
|
* in multiple places in a tree for the same data will create extra event ticks and
|
|
* hit the action more frequently, it should only ever result in a single store update
|
|
*
|
|
* @param {string} data - the transaction data to find method data for
|
|
* @returns {Object} contract method data
|
|
*/
|
|
export function useMethodData(data) {
|
|
const dispatch = useDispatch();
|
|
const knownMethodData = useSelector((state) =>
|
|
getKnownMethodData(state, data),
|
|
);
|
|
const getContractMethodData = useCallback(
|
|
(methodData) => dispatch(getContractMethodDataAction(methodData)),
|
|
[dispatch],
|
|
);
|
|
|
|
useEffect(() => {
|
|
if (data) {
|
|
getContractMethodData(data);
|
|
}
|
|
}, [getContractMethodData, data]);
|
|
return knownMethodData;
|
|
}
|