Skip to main content

📬 Events

Events are available as callback functions in the PolyswapApp config object. Each event will provide you with a set of outputs that can then be used in custom functions.

info

Note that events are fired locally, async functions are therefore not required.

onAccountChange

This event is triggered every time users connect or disconnect their wallet as well as switching between accounts.

/*
* available args
* newAccount: string
* oldAccount: string
*/
onAccountChange: newAccount => {
console.log(newAccount)
}

onChainChange

This event is triggered every time users change newtork (chain).

/*
* available args
* newChainId: chainId
* oldChainId: chainId
*/
onChainChange: newChainId => {
console.log(newChainId)
}

onTokenSelect

This event is triggered every time users change either the input or the output token.

It gives back 2 json objects - inputToken and outputToken

/*
* available args
* inputToken: Token
* outputToken: Token
*/
inputToken : {
address: string,
chainId: number,
decimals: number,
hasTransactonFees: boolean,
logoURI: string,
name: string,
symbol: string
}
outputToken : {
address: string,
chainId: number,
decimals: number,
hasTransactonFees: boolean,
logoURI: string,
name: string,
symbol: string
}

Usage example:

onTokenSelect: inputToken => {
console.log(inputToken.chainId)
console.log(inputToken.decimals)
}

onSuccessSwap

This event is triggered every time users succesfully swap a token through the widget

It gives back a json object - quote

The quote object represent the aggregator quote used to submit the transaction and therefore it includes all the information related to that transaction.

/*
* available args
* quote: aggregatorQuote
*/

quote : {
from: string, //address of the user
chainId: number, // chain where the transaction took place
buyTokenAddress: string, // address of the token to be bought
sellTokenAddress: string, // address of the token to be sold
sellAmount: number, // amount sold
buyAmount: string, // amount bought
}

This is particularly useful for tracking or analytics purposes:

// Database
onSuccessSwap: quote => {
//{code to push to database(quote)}
}

// Google analytics
// {define Google analytics event}
onSuccessSwap: quote => {
//{Google analytics event(quote)}
}