ios-unity/js/main.js
2022-12-07 16:02:13 +08:00

488 lines
11 KiB
JavaScript

console.log(">>begin load wallet main file");
/**
* init wallet, must call this before all other method
* @param {string} type: wallet type, 0: internal wallet, 1: third party wallet
*/
function initWallet(funId, type, chain, channel) {
type = parseInt(type)
chain = parseInt(chain)
channel = channel || 2; // 0:google, 1: apple, 2: tiktok
channel = parseInt(channel);
console.log(`initWallet:: type: ${type}, chain: ${chain}, channel: ${channel}`)
try {
let wallet;
if (!window.jc || !jc.wallet) {
wallet = new jcwallet.default({ chain, type });
} else {
wallet = jc.wallet;
}
type = parseInt(type);
if (type === 1) {
console.log("wallet init success, begin connect");
wallet
.initThirdPartyWallet()
.then(() => {
console.log("walletconnect connect success");
let account = jc.wallet.currentAccount();
jsb.jcCallback(funId,JSON.stringify({errcode: 0,data: account}));
})
.catch((err) => {
console.log("walletconnect connect error: " + JSON.stringify(err));
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
} else {
wallet.initInternalWallet(channel)
.then(() => {
console.log("internal init success");
let address = jc.wallet.nativeAccount;
jsb.jcCallback(funId,JSON.stringify({errcode: 0,data: address}));
})
.catch((err) => {
console.log("internal wallet error: " + JSON.stringify(err));
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
} catch (err) {
console.error("wallet init with error: " + JSON.stringify(err));
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
}
}
/**
* current account for internal wallet
*/
function currentAccount(funId) {
try {
let data = jc.wallet.currentAccountData;
return JSON.stringify({errcode: 0, data});
} catch (err) {
return JSON.stringify({errcode: 1, errmsg: err});
}
}
/**
* all chain list we supported
*/
function chainList(funId) {
try {
let data = jc.wallet.chainList;
return JSON.stringify({errcode: 0, data});
} catch (err) {
return JSON.stringify({ errcode: 1, errmsg: err });
}
}
/**
* chain active
*/
function currentChain(funId) {
try {
let data = jc.wallet.currentChain;
return JSON.stringify({errcode: 0,data});
} catch (err) {
return JSON.stringify({
errcode: 1,
errmsg: err,
});
}
}
/**
* [BOTH]change chain
*/
function changeChain(funId, chainId) {
chainId = parseInt(chainId);
jc.wallet
.updateCurrentChain(chainId)
.then((result) => {
jsb.jcCallback(funId, JSON.stringify({ errcode: 0,data: result }));
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({ errcode: 1,errmsg: err }));
});
}
/**
* [BOTH] get sign for login
* @param {string} nonce: nonce from server
* @param {string} tips: tips message when sign
*/
function loginSign(funId, nonce, tips) {
jc.wallet
.loginSign(nonce, tips)
.then((result) => {
jsb.jcCallback(funId, JSON.stringify({ errcode: 0, data: result }));
})
.catch((err) => {
jsb.jcCallback(funId, JSON.stringify({errcode: 1,errmsg: err }));
});
}
/**
* get balance of ETH
* @param {string} account: account
* if account is null, we`ll query for current account of wallet
*/
function getEthBalance(funId, account) {
jc.wallet
.getBalance(account)
.then((result) => {
jsb.jcCallback(funId, JSON.stringify({ errcode: 0, data: result }));
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
/**
* send ETH from current account
* @param {string} to: target account
* @param {string} amount:
*/
function sendEth(funId, to, amount) {
jc.wallet
.sendEth(to, amount)
.then((result) => {
jsb.jcCallback(funId, JSON.stringify({ errcode: 0, data: result }));
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
/**
* [BOTH] generate ICON with hashed message
* @param {string} msg:
* @param {string} diameter: size of icon
*/
function generateIcon(funId, msg, diameter) {
try {
diameter = parseFloat(diameter);
let result = jc.wallet.generateIconData(msg, diameter);
return JSON.stringify({ errcode: 0, data: result });
} catch (err) {
return JSON.stringify({ errcode: 1, errmsg: err });
}
}
/**
* get symbol and decimal of ERC20, symbol and decimal
* @param {string} address: address of ERC20
*/
function erc20Info(funId, address) {
jc.wallet
.erc20Info(address)
.then((result) => {
jsb.jcCallback(funId, JSON.stringify({ errcode: 0, data: result }));
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
/**
* get balance of ERC20
* @param {string} address:
* @param {string} account:
*/
function erc20Balance(funId, address, account) {
jc.wallet
.erc20Balance(address, account)
.then((result) => {
jsb.jcCallback(funId, JSON.stringify({ errcode: 0, data: result }));
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
/**
* send ERC20 token to to
*/
function sendErc20(funId, address, to, amount) {
jc.wallet.sendErc20(address, to, amount)
.then((result) => {
jsb.jcCallback(funId, JSON.stringify({ errcode: 0, data: result }));
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1, errmsg: err}));
});
}
function showQRCode(funId, content) {
try {
jsb.showQRCode(funId, content);
return JSON.stringify({ errcode: 0, data: 1 });
} catch (err) {
return JSON.stringify({ errcode: 1, errmsg: err });
}
}
function scanQRCode(funId, title) {
console.log('scanQRCode: ' + title)
jc.wallet.nativeSvr.scanQRCode(title)
.then((result)=> {
jsb.jcCallback(funId, JSON.stringify({ errcode: 0, data: result }));
})
.catch((err) => {
jsb.jcCallback(funId, JSON.stringify({errcode: 1, errmsg: err }));
});
}
function exportWalletSecKey(funId) {
try {
let key = jsb.walletSecKey(funId)
return JSON.stringify({ errcode: 0, data: key });
} catch (err) {
return JSON.stringify({ errcode: 1, errmsg: err });
}
}
// ======= begin of interact with contract =======
function buyNft721(funId, addresses, values, signature) {
addresses = JSON.parse(addresses)
values = JSON.parse(values)
jc.wallet.jcStandard
.buyNft721({
addresses,
values,
signature,
})
.then((result) => {
jsb.jcCallback(
funId,
JSON.stringify({
errcode: 0,
data: JSON.stringify(result),
})
);
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
function buyNft1155(funId, addresses, values, ids, amounts, signature) {
addresses = JSON.parse(addresses)
values = JSON.parse(values)
ids = JSON.parse(ids)
amounts = JSON.parse(amounts)
jc.wallet.jcStandard
.buyNft1155({
addresses,
values,
ids,
amounts,
signature,
})
.then((result) => {
jsb.jcCallback(
funId,
JSON.stringify({
errcode: 0,
data: JSON.stringify(result),
})
);
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
function evolveNft721(
funId,
nftAddress,
tokenIds,
startTime,
nonce,
signature
) {
tokenIds = JSON.parse(tokenIds)
jc.wallet.jcStandard
.evolve721NFT({
nftAddress,
tokenIds,
startTime,
nonce,
signature,
})
.then((result) => {
jsb.jcCallback(
funId,
JSON.stringify({
errcode: 0,
data: JSON.stringify(result),
})
);
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
function evolveChip(funId, tokenIds, startTime, nonce, signature) {
tokenIds = JSON.parse(tokenIds)
jc.wallet.jcStandard
.evolveChip({
tokenIds,
startTime,
nonce,
signature,
})
.then((result) => {
jsb.jcCallback(
funId,
JSON.stringify({
errcode: 0,
data: JSON.stringify(result),
})
);
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
function mintShardBatchUser(
funId,
tokenIds,
amounts,
startTime,
nonce,
signature
) {
tokenIds = JSON.parse(tokenIds)
amounts = JSON.parse(amounts)
jc.wallet.jcStandard
.mintShardBatchUser({
tokenIds,
amounts,
startTime,
nonce,
signature,
})
.then((result) => {
jsb.jcCallback(
funId,
JSON.stringify({
errcode: 0,
data: JSON.stringify(result),
})
);
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
function shardMixByUser(
funId,
tokenId,
nftType,
payToken,
payAmount,
ids,
amounts,
startTime,
nonce,
signature
) {
ids = JSON.parse(ids)
amounts = JSON.parse(amounts)
jc.wallet.jcStandard
.shardMixByUser({
tokenId,
nftType,
payToken,
payAmount,
ids,
amounts,
startTime,
nonce,
signature,
})
.then((result) => {
jsb.jcCallback(
funId,
JSON.stringify({
errcode: 0,
data: JSON.stringify(result),
})
);
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
// addresses: [nftId, chip, sign_address]
// values: [token_id,salt_nonce,startTime]
// chipIds: [...chipIds]
function pluginChip(
funId,
addresses,
values,
chipIds,
slots,
signature
) {
console.log('addresses:' + addresses)
console.log('values:' + values)
console.log('chipIds:' + chipIds)
console.log('slots:' + slots)
console.log('signature:' + signature)
addresses = JSON.parse(addresses)
values = JSON.parse(values)
chipIds = JSON.parse(chipIds)
slots = JSON.parse(slots)
jc.wallet.jcStandard
.pluginChip({
addresses,
values,
chipIds,
slots,
signature
})
.then((result) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 0,data: JSON.stringify(result)}));
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
// addresses: [nftId, chip, sign_address]
// values: [token_id,salt_nonce,startTime]
// chipIds: [...chipIds]
function unplugChip(
funId,
addresses,
values,
chipIds,
slots,
signature
) {
addresses = JSON.parse(addresses)
values = JSON.parse(values)
chipIds = JSON.parse(chipIds)
slots = JSON.parse(slots)
jc.wallet.jcStandard
.unplugChip({
addresses,
values,
chipIds,
slots,
signature
})
.then((result) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 0,data: JSON.stringify(result)}));
})
.catch((err) => {
jsb.jcCallback(funId,JSON.stringify({errcode: 1,errmsg: err}));
});
}
// ======= end of interact with contract =======