Skip to Content

Events

TaskOnEmbed extends EventEmitter.
Use embed.on(eventName, handler) to subscribe.

Event List

EventPayloadTrigger
loginRequirednoneGuest user performs action requiring login
routeChangedfullPath: stringIframe internal route changed
taskCompletedTaskCompletedDataUser completes a task
bindConflictBindConflictDataSNS/address is already bound to another email

Usage Example

embed.on("loginRequired", () => { openLoginModal(); }); embed.on("routeChanged", (fullPath) => { console.log("Route:", fullPath); }); embed.on("taskCompleted", (data) => { console.log("Task:", data.taskId, data.taskName); console.log("Rewards:", data.rewards); }); embed.on("bindConflict", (data) => { console.log("Bind conflict email:", data.email); });

taskCompleted Payload

FieldTypeDescription
taskIdstringCompleted task ID
taskNamestringCompleted task name
templateIdstringTask template ID
rewardsTaskReward[]Rewards list (may be empty for review-based tasks)

TaskReward fields:

FieldTypeDescription
rewardType"Token" | "GTCPoints"Reward category
rewardAmountstringReward amount
rewardDescriptionstringHuman-readable text
pointNamestring | undefinedPoints name (for points reward)
tokenAddressstring | undefinedToken contract address
tokenNetworkstring | undefinedToken network

bindConflict Payload

FieldTypeDescription
emailstringExisting bound email
bindType"sns" | "address"Conflict type
snsType"twitter" | "discord" | "telegram" | "reddit" | undefinedPresent when bindType is sns
addressstring | undefinedPresent when bindType is address
Last updated on