mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
support "smart_contract_was_verified" socket event (#1030)
* support "smart_contract_was_verified" socket event Fixes #1024 * remove test since it is not working in docker
This commit is contained in:
@@ -23,6 +23,7 @@ SocketMessage.AddressTxs |
|
||||
SocketMessage.AddressTxsPending |
|
||||
SocketMessage.AddressTokenTransfer |
|
||||
SocketMessage.AddressChangedBytecode |
|
||||
SocketMessage.SmartContractWasVerified |
|
||||
SocketMessage.TokenTransfers |
|
||||
SocketMessage.TokenTotalSupply |
|
||||
SocketMessage.ContractVerification |
|
||||
@@ -53,6 +54,7 @@ export namespace SocketMessage {
|
||||
export type AddressTxsPending = SocketMessageParamsGeneric<'pending_transaction', { transactions: Array<Transaction> }>;
|
||||
export type AddressTokenTransfer = SocketMessageParamsGeneric<'token_transfer', { token_transfers: Array<TokenTransfer> }>;
|
||||
export type AddressChangedBytecode = SocketMessageParamsGeneric<'changed_bytecode', Record<string, never>>;
|
||||
export type SmartContractWasVerified = SocketMessageParamsGeneric<'smart_contract_was_verified', Record<string, never>>;
|
||||
export type TokenTransfers = SocketMessageParamsGeneric<'token_transfer', {token_transfer: number }>;
|
||||
export type TokenTotalSupply = SocketMessageParamsGeneric<'total_supply', {total_supply: number }>;
|
||||
export type ContractVerification = SocketMessageParamsGeneric<'verification_result', SmartContractVerificationResponse>;
|
||||
|
||||
@@ -67,6 +67,7 @@ export function sendMessage(socket: WebSocket, channel: Channel, msg: 'new_block
|
||||
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'verification_result', payload: SmartContractVerificationResponse): void;
|
||||
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'total_supply', payload: { total_supply: number}): void;
|
||||
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'changed_bytecode', payload: Record<string, never>): void;
|
||||
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'smart_contract_was_verified', payload: Record<string, never>): void;
|
||||
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'token_transfer', payload: { token_transfers: Array<TokenTransfer> }): void;
|
||||
export function sendMessage(socket: WebSocket, channel: Channel, msg: string, payload: unknown): void {
|
||||
socket.send(JSON.stringify([
|
||||
|
||||
@@ -39,6 +39,7 @@ const ContractCode = ({ addressHash, noSocket }: Props) => {
|
||||
const [ isChangedBytecodeSocket, setIsChangedBytecodeSocket ] = React.useState<boolean>();
|
||||
|
||||
const queryClient = useQueryClient();
|
||||
const refetchQueries = queryClient.refetchQueries;
|
||||
const addressInfo = queryClient.getQueryData<AddressInfo>(getResourceKey('address', { pathParams: { hash: addressHash } }));
|
||||
|
||||
const { data, isPlaceholderData, isError } = useApiQuery('contract', {
|
||||
@@ -54,6 +55,15 @@ const ContractCode = ({ addressHash, noSocket }: Props) => {
|
||||
setIsChangedBytecodeSocket(true);
|
||||
}, [ ]);
|
||||
|
||||
const handleContractWasVerifiedMessage: SocketMessage.SmartContractWasVerified['handler'] = React.useCallback(() => {
|
||||
refetchQueries({
|
||||
queryKey: getResourceKey('address', { pathParams: { hash: addressHash } }),
|
||||
});
|
||||
refetchQueries({
|
||||
queryKey: getResourceKey('contract', { pathParams: { hash: addressHash } }),
|
||||
});
|
||||
}, [ addressHash, refetchQueries ]);
|
||||
|
||||
const channel = useSocketChannel({
|
||||
topic: `addresses:${ addressHash?.toLowerCase() }`,
|
||||
isDisabled: !addressHash,
|
||||
@@ -64,6 +74,11 @@ const ContractCode = ({ addressHash, noSocket }: Props) => {
|
||||
event: 'changed_bytecode',
|
||||
handler: handleChangedBytecodeMessage,
|
||||
});
|
||||
useSocketMessage({
|
||||
channel,
|
||||
event: 'smart_contract_was_verified',
|
||||
handler: handleContractWasVerifiedMessage,
|
||||
});
|
||||
|
||||
if (isError) {
|
||||
return <DataFetchAlert/>;
|
||||
|
||||
Reference in New Issue
Block a user