Files
tom goriunovandGitHub 19ddd87083 Implement NFT instance metadata refetch button (#2039)
* refactor token instance page title

* add menu item and modal with recaptcha

* initialize refresh and show loading state

* handle error state

* fix metadata atributes parser

* refactoring

* tests
2024-06-25 18:19:39 +02:00

41 lines
947 B
TypeScript

import React from 'react';
interface MetadataUpdateProviderProps {
children: React.ReactNode;
}
interface TMetadataUpdateContext {
status: Status;
setStatus: (status: Status) => void;
}
export const MetadataUpdateContext = React.createContext<TMetadataUpdateContext | null>(null);
type Status = 'INITIAL' | 'MODAL_OPENED' | 'WAITING_FOR_RESPONSE' | 'SUCCESS' | 'ERROR';
export function MetadataUpdateProvider({ children }: MetadataUpdateProviderProps) {
const [ status, setStatus ] = React.useState<Status>('INITIAL');
const value = React.useMemo(() => {
return {
status,
setStatus,
};
}, [ status ]);
return (
<MetadataUpdateContext.Provider value={ value }>
{ children }
</MetadataUpdateContext.Provider>
);
}
export function useMetadataUpdateContext() {
const context = React.useContext(MetadataUpdateContext);
if (context === undefined) {
return null;
}
return context;
}