Initial commit with 🏗️ Scaffold-ETH 2 @ 1.0.5
This commit is contained in:
21
packages/nextjs/hooks/scaffold-eth/useDisplayUsdMode.ts
Normal file
21
packages/nextjs/hooks/scaffold-eth/useDisplayUsdMode.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import { useGlobalState } from "~~/services/store/store";
|
||||
|
||||
export const useDisplayUsdMode = ({ defaultUsdMode = false }: { defaultUsdMode?: boolean }) => {
|
||||
const nativeCurrencyPrice = useGlobalState(state => state.nativeCurrency.price);
|
||||
const isPriceFetched = nativeCurrencyPrice > 0;
|
||||
const predefinedUsdMode = isPriceFetched ? Boolean(defaultUsdMode) : false;
|
||||
const [displayUsdMode, setDisplayUsdMode] = useState(predefinedUsdMode);
|
||||
|
||||
useEffect(() => {
|
||||
setDisplayUsdMode(predefinedUsdMode);
|
||||
}, [predefinedUsdMode]);
|
||||
|
||||
const toggleDisplayUsdMode = useCallback(() => {
|
||||
if (isPriceFetched) {
|
||||
setDisplayUsdMode(!displayUsdMode);
|
||||
}
|
||||
}, [displayUsdMode, isPriceFetched]);
|
||||
|
||||
return { displayUsdMode, toggleDisplayUsdMode };
|
||||
};
|
||||
Reference in New Issue
Block a user