@arcblock/did-playground
Version:
React components that works with wallet-playground
528 lines (527 loc) • 13 kB
JavaScript
import _ from "mustache";
async function c(a) {
return { tid: (await a.post("/api/did/swap", {})).data.traceId };
}
const n = (a, e) => Number(a) >= 0 ? a : Number(e) >= 0 ? e : 1, t = (a = "", e = {}) => {
try {
return _.render(
a,
{
user: e.user || {},
token: e.token || {},
balance: e.balance || {}
},
{},
["(%", "%)"]
);
} catch {
return console.error("Cannot render message", { message: a, session: e }), a;
}
}, m = {
// Currency
receive_local_token: {
action: "receive_token",
extraParams: (a) => ({ chain: "local", amount: a.amount || 1 })
},
receive_foreign_token: {
action: "receive_token",
extraParams: (a) => ({ chain: "foreign", amount: a.amount || 1 })
},
send_local_token: {
action: "send_token",
extraParams: (a) => ({ chain: "local", amount: a.amount || 1 })
},
send_foreign_token: {
action: "send_token",
extraParams: (a) => ({ chain: "foreign", amount: a.amount || 1 })
},
exchange_to_foreign_token: {
action: "swap_token",
onStart: c,
extraParams: (a) => ({ action: "buy", rate: a.exchangeRate, amount: a.amount || 1 })
},
exchange_to_local_token: {
action: "swap_token",
onStart: c,
extraParams: (a) => ({ action: "sell", rate: a.exchangeRate, amount: a.amount || 1 })
},
exchange_to_foreign_token_v2: {
action: "swap_token_v2",
onStart: c,
extraParams: (a) => ({ action: "buy", rate: a.exchangeRate, amount: a.amount || 1 })
},
exchange_to_local_token_v2: {
action: "swap_token_v2",
onStart: c,
extraParams: (a) => ({ action: "sell", rate: a.exchangeRate, amount: a.amount || 1 })
},
// Cross chain assets and tokens
buy_foreign_certificate_with_local_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "buy",
type: "certificate",
pfc: "local",
price: a.price || 1,
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
buy_foreign_badge_with_local_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "buy",
type: "badge",
pfc: "local",
price: a.price || 1,
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl,
svg: a.svg
})
},
buy_foreign_ticket_with_local_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "buy",
type: "ticket",
pfc: "local",
price: a.price || 1,
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
sell_foreign_certificate_for_local_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "sell",
type: "certificate",
pfc: "local",
price: a.price || 1,
name: t(a.name, e)
})
},
sell_foreign_badge_for_local_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "sell",
type: "badge",
pfc: "local",
price: a.price || 1,
name: t(a.name, e)
})
},
sell_foreign_ticket_for_local_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "sell",
type: "ticket",
pfc: "local",
price: a.price || 1,
name: t(a.name, e)
})
},
buy_foreign_certificate_with_local_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
action: "buy",
type: "certificate",
pfc: "local",
price: a.price || 1,
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
buy_foreign_badge_with_local_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
action: "buy",
type: "badge",
pfc: "local",
price: a.price || 1,
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl,
svg: a.svg
})
},
buy_foreign_ticket_with_local_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
action: "buy",
type: "ticket",
pfc: "local",
price: a.price || 1,
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
sell_foreign_certificate_for_local_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
action: "sell",
type: "certificate",
pfc: "local",
price: a.price || 1,
name: t(a.name, e)
})
},
sell_foreign_badge_for_local_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
action: "sell",
type: "badge",
pfc: "local",
price: a.price || 1,
name: t(a.name, e)
})
},
sell_foreign_ticket_for_local_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
action: "sell",
type: "ticket",
pfc: "local",
price: a.price || 1,
name: t(a.name, e)
})
},
buy_local_certificate_with_foreign_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "buy",
type: "certificate",
pfc: "foreign",
price: a.price || 1,
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
buy_local_badge_with_foreign_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "buy",
type: "badge",
pfc: "foreign",
price: a.price || 0,
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl,
svg: a.svg
})
},
buy_local_ticket_with_foreign_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "buy",
type: "ticket",
pfc: "foreign",
price: a.price || 1,
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
sell_local_certificate_for_foreign_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "sell",
type: "certificate",
pfc: "foreign",
price: a.price || 1,
name: t(a.name, e)
})
},
sell_local_badge_for_foreign_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "sell",
type: "vc",
pfc: "foreign",
price: a.price || 1,
name: t(a.name, e)
})
},
sell_local_ticket_for_foreign_token: {
action: "swap_asset",
onStart: c,
extraParams: (a, e) => ({
action: "sell",
type: "ticket",
pfc: "foreign",
price: a.price || 1,
name: t(a.name, e)
})
},
buy_local_certificate_with_foreign_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
pa: n(a.payAmount, a.price),
pt: "token",
ra: a.receiveAmount || 1,
rt: "certificate",
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
buy_local_badge_with_foreign_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
pa: n(a.payAmount, a.price),
pt: "token",
ra: a.receiveAmount || 1,
rt: "badge",
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl,
svg: a.svg
})
},
buy_local_ticket_with_foreign_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
pa: n(a.payAmount, a.price),
pt: "token",
ra: a.receiveAmount || 1,
rt: "badge",
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
sell_local_certificate_for_foreign_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
pa: a.payAmount || 1,
pt: "certificate",
ra: n(a.receiveAmount, a.price),
rt: "token",
name: t(a.name, e)
})
},
sell_local_badge_for_foreign_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
pa: a.payAmount || 1,
pt: "badge",
ra: n(a.receiveAmount, a.price),
rt: "token",
name: t(a.name, e)
})
},
sell_local_ticket_for_foreign_token_v2: {
action: "swap_asset_v2",
extraParams: (a, e) => ({
pa: a.payAmount || 1,
pt: "ticket",
ra: n(a.receiveAmount, a.price),
rt: "token",
name: t(a.name, e)
})
},
// Exchange Scenarios
buy_local_certificate_with_local_token: {
action: "exchange_assets",
extraParams: (a, e) => ({
pa: n(a.payAmount, a.price),
pt: "token",
ra: a.receiveAmount || 1,
rt: "certificate",
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
sell_local_certificate_for_local_token: {
action: "exchange_assets",
extraParams: (a, e) => ({
pa: a.payAmount || 1,
pt: "certificate",
ra: n(a.receiveAmount, a.price),
rt: "token",
name: t(a.name, e)
})
},
buy_local_badge_with_local_token: {
action: "exchange_assets",
extraParams: (a, e) => ({
pa: n(a.payAmount, a.price),
pt: "token",
ra: a.receiveAmount || 1,
rt: "badge",
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl,
svg: a.svg
})
},
sell_local_badge_for_local_token: {
action: "exchange_assets",
extraParams: (a, e) => ({
pa: a.payAmount || 1,
pt: "badge",
ra: n(a.receiveAmount, a.price),
rt: "token",
name: t(a.name, e)
})
},
buy_local_ticket_with_local_token: {
action: "exchange_assets",
extraParams: (a, e) => ({
pa: n(a.payAmount, a.price),
pt: "token",
ra: a.receiveAmount || 1,
rt: "ticket",
name: t(a.name, e),
desc: t(a.description, e),
loc: t(a.location, e),
bg: a.backgroundUrl,
logo: a.logoUrl
})
},
sell_local_ticket_for_local_token: {
action: "exchange_assets",
extraParams: (a, e) => ({
pa: a.payAmount || 1,
pt: "ticket",
ra: n(a.receiveAmount, a.price),
rt: "token",
name: t(a.name, e)
})
},
buy_local_ticket_with_local_certificate: {
action: "exchange_assets",
extraParams: (a, e) => ({
pa: a.payAmount || 1,
pt: "certificate",
ra: a.receiveAmount || 1,
rt: "ticket",
name: t(a.name, e)
})
},
buy_local_certificate_with_local_ticket: {
action: "exchange_assets",
extraParams: (a, e) => ({
pa: a.payAmount || 1,
pt: "ticket",
ra: a.receiveAmount || 1,
rt: "certificate",
name: t(a.name, e)
})
},
consume_local_asset: {
action: "consume_asset",
extraParams: ({ type: a, typeUrl: e, name: o, did: i }, r) => ({
pfc: "local",
type: a,
tu: e,
name: t(o, r),
did: i
})
},
consume_foreign_asset: {
action: "consume_asset",
extraParams: ({ type: a, typeUrl: e, name: o, did: i }, r) => ({
pfc: "foreign",
type: a,
tu: e,
name: t(o, r),
did: i
})
},
consume_local_asset_by_name: {
action: "consume_asset",
extraParams: ({ name: a }, e) => ({
pfc: "local",
name: t(a, e)
})
},
consume_foreign_asset_by_name: {
action: "consume_asset",
extraParams: ({ name: a }, e) => ({
pfc: "foreign",
name: t(a, e)
})
},
consume_local_asset_by_did: {
action: "consume_asset",
extraParams: ({ did: a }) => ({
pfc: "local",
did: a
})
},
consume_foreign_asset_by_did: {
action: "consume_asset",
extraParams: ({ did: a }) => ({
pfc: "foreign",
did: a
})
},
claim_signature: {
action: "claim_signature",
extraParams: ({ type: a }) => ({ type: a })
},
consume_email_vc: {
action: "consume_vc",
extraParams: {}
}
}, g = (a, e) => {
if (typeof a == "string")
return a;
if (typeof a.action == "string")
return a.action;
if (typeof a.action == "function")
return a.action(e);
throw new Error("Cannot determine playground button action");
}, u = (a, e, o) => typeof a == "string" ? {} : a.extraParams ? typeof a.extraParams == "function" ? a.extraParams(e, o) : typeof a.extraParams == "object" ? a.extraParams : {} : {};
export {
m as actions,
g as getActionName,
u as getActionParams,
t as getMessage
};