mirror of
https://github.com/luxfhe/example-smart-wallet.git
synced 2026-10-30 18:13:16 +00:00
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { create } from "zustand";
|
|
import scaffoldConfig from "~~/scaffold.config";
|
|
import { ChainWithAttributes } from "~~/utils/scaffold-eth";
|
|
|
|
/**
|
|
* Zustand Store
|
|
*
|
|
* You can add global state to the app using this useGlobalState, to get & set
|
|
* values from anywhere in the app.
|
|
*
|
|
* Think about it as a global useState.
|
|
*/
|
|
|
|
type GlobalState = {
|
|
nativeCurrency: {
|
|
price: number;
|
|
isFetching: boolean;
|
|
};
|
|
setNativeCurrencyPrice: (newNativeCurrencyPriceState: number) => void;
|
|
setIsNativeCurrencyFetching: (newIsNativeCurrencyFetching: boolean) => void;
|
|
targetNetwork: ChainWithAttributes;
|
|
setTargetNetwork: (newTargetNetwork: ChainWithAttributes) => void;
|
|
};
|
|
|
|
export const useGlobalState = create<GlobalState>(set => ({
|
|
nativeCurrency: {
|
|
price: 0,
|
|
isFetching: true,
|
|
},
|
|
setNativeCurrencyPrice: (newValue: number): void =>
|
|
set(state => ({ nativeCurrency: { ...state.nativeCurrency, price: newValue } })),
|
|
setIsNativeCurrencyFetching: (newValue: boolean): void =>
|
|
set(state => ({ nativeCurrency: { ...state.nativeCurrency, isFetching: newValue } })),
|
|
targetNetwork: scaffoldConfig.targetNetworks[0],
|
|
setTargetNetwork: (newTargetNetwork: ChainWithAttributes) => set(() => ({ targetNetwork: newTargetNetwork })),
|
|
}));
|