mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
* display methods accordion * add method_id to methods * query read method via public client * query read methods without inputs at accordion section open * add custom abi tabs * add proxy tabs * custom wagmi config if wc is not configured * remove ContractAbiItemConstant component * display tuple properties in method outputs * display read result * clean up * support nested arrays in the read result * re-write test for contract methods * change result view for address output * refactoring * fix tests * remove web3 provider fallback * fix tab loading * refactoring * add implementation contract selector * add "copy to clipboard" for address, remove top-level square brackets * add preview mode to contract method result * tests for read result * fix tests * change styles for result preview * review fix
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import React from 'react';
|
|
|
|
import type { MatchInt } from './utils';
|
|
|
|
interface Params {
|
|
argType: string;
|
|
argTypeMatchInt: MatchInt | null;
|
|
}
|
|
|
|
export default function useFormatFieldValue({ argType, argTypeMatchInt }: Params) {
|
|
|
|
return React.useCallback((value: string | undefined) => {
|
|
if (!value) {
|
|
return;
|
|
}
|
|
|
|
if (argTypeMatchInt) {
|
|
// we have to store all numbers as strings to avoid precision loss
|
|
// and we cannot store them as BigInt because the NumberFormat component will not work properly
|
|
// so we just remove all white spaces here otherwise the `viem` library will throw an error on attempt to write value to a contract
|
|
const formattedString = value.replace(/\s/g, '');
|
|
return formattedString;
|
|
}
|
|
|
|
if (argType === 'bool') {
|
|
const formattedValue = value.toLowerCase();
|
|
|
|
switch (formattedValue) {
|
|
case 'true': {
|
|
return true;
|
|
}
|
|
|
|
case 'false':{
|
|
return false;
|
|
}
|
|
|
|
default:
|
|
return value;
|
|
}
|
|
}
|
|
|
|
return value;
|
|
}, [ argType, argTypeMatchInt ]);
|
|
}
|