tigerchange.jssdk
Version:
tigerchange js sdk for dapp
270 lines (244 loc) • 7.74 kB
JavaScript
;
exports.__esModule = true;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
* TigerChange client js sdk for dApp implementation.
*/
var TCClient = function () {
// 构造函数
function TCClient(source) {
_classCallCheck(this, TCClient);
this.source = source;
this.dAppEnvEnsureTip = "Please open the dApp in the TigerChange app";
}
// 检查当前 dapp 是否在 tigerchange app 环境中打开
TCClient.prototype.checkAppEnv = function checkAppEnv() {
var _this = this;
return new Promise(function (resolve, reject) {
var callbackName = _this.genCallbackName("check_app_env");
window[callbackName] = function () {
resolve(true);
};
if (window.TigerChangeJSBridge) {
window.TigerChangeJSBridge.checkAppEnv();
} else if (window.webkit) {
window.webkit.messageHandlers.checkAppEnv.postMessage(JSON.stringify({}));
} else {
resolve(false);
}
});
};
// 获取APP版本号
TCClient.prototype.getAppVersion = function getAppVersion() {
var _this2 = this;
return new Promise(function (resolve, reject) {
var callbackName = _this2.genCallbackName("get_app_version");
var errorName = _this2.genErrorName("get_app_version");
window[callbackName] = function (version) {
resolve(version);
};
window[errorName] = function (error) {
reject(error);
};
if (window.TigerChangeJSBridge) {
window.TigerChangeJSBridge.getAppVersion();
} else if (window.webkit) {
window.webkit.messageHandlers.getAppVersion.postMessage(JSON.stringify({}));
} else {
reject(_this2.dAppEnvEnsureTip);
}
});
};
// 生成 success callback 名称
TCClient.prototype.genCallbackName = function genCallbackName(method) {
return "tc_" + method + "_success";
};
// 生成 error callback 名称
TCClient.prototype.genErrorName = function genErrorName(method) {
return "tc_" + method + "_fail";
};
/*
getAccount(account = '') {
return new Promise((resolve, reject) => {
const callbackName = this.genCallbackName("get_account");
const errorName = this.genErrorName("get_account");
window[ callbackName ] = (accountInfo) => {
try {
accountInfo = JSON.parse(accountInfo);
if (!account) {
this.account = accountInfo.account_name;
}
resolve(accountInfo);
} catch (e) {
reject(e);
}
};
window[errorName] = (error) => {
reject(error);
};
if (window.TigerChangeJSBridge) {
window.TigerChangeJSBridge.getAccount(account);
} else if (window.webkit) {
window.webkit.messageHandlers.getAccount.postMessage(JSON.stringify({ account }));
} else {
reject(this.dAppEnvEnsureTip);
}
});
}
signText(text = '') {
return new Promise((resolve, reject) => {
const callbackName = this.genCallbackName("sign_text");
const errorName = this.genErrorName("sign_text");
window[callbackName] = signedText => {
resolve(signedText);
};
window[errorName] = (error) => {
reject(error);
};
if (window.TigerChangeJSBridge) {
window.TigerChangeJSBridge.signText(text);
} else if (window.webkit) {
window.webkit.messageHandlers.signText.postMessage(JSON.stringify({ text }));
} else {
reject(this.dAppEnvEnsureTip);
}
});
}
getCurrencyBalance(contract, symbol) {
return new Promise((resolve, reject) => {
const callbackName = this.genCallbackName("get_currency_balance");
const errorName = this.genErrorName("get_currency_balance");
window[callbackName] = (balance) => {
resolve(balance);
};
window[errorName] = (error) => {
reject(error);
};
const params = {
contract,
symbol
};
if (window.TigerChangeJSBridge) {
window.TigerChangeJSBridge.getCurrencyBalance(JSON.stringify(params));
} else if (window.webkit) {
window.webkit.messageHandlers.getCurrencyBalance.postMessage(JSON.stringify(params));
} else {
reject(this.dAppEnvEnsureTip);
}
});
}
getTableRows(params) {
return new Promise((resolve, reject) => {
const callbackName = this.genCallbackName("get_table_rows");
const errorName = this.genErrorName("get_table_rows");
window[callbackName] = (data) => {
try {
data = JSON.parse(data);
resolve(data);
} catch (e) {
reject(e);
}
};
window[errorName] = (error) => {
reject(error);
};
if (window.MoreJSBridge) {
window.MoreJSBridge.getTableRows(JSON.stringify(params));
} else if (window.webkit) {
window.webkit.messageHandlers.getTableRows.postMessage(JSON.stringify(params));
} else {
reject(this.dAppEnvEnsureTip);
}
});
}
checkAction(contract, action) {
return new Promise((resolve, reject) => {
const callbackName = this.genCallbackName("check_action");
const errorName = this.genErrorName("check_action");
window[callbackName] = (res) => {
resolve(res);
};
window[errorName] = (error) => {
reject(error);
};
const params = {
source: this.source,
contract,
action
};
if (window.MoreJSBridge) {
window.MoreJSBridge.checkAction(JSON.stringify(params));
} else if (window.webkit) {
window.webkit.messageHandlers.checkAction.postMessage(JSON.stringify(params));
} else {
reject(this.dAppEnvEnsureTip);
}
});
}
pushActions(actions) {
return new Promise((resolve, reject) => {
const callbackName = this.genCallbackName("push_actions");
const errorName = this.genErrorName("push_actions");
window[callbackName] = (res) => {
resolve(res);
};
window[errorName] = (error) => {
reject(error);
};
if (!this.account) {
reject("请选择执行账号");
return
}
const params = {
source: this.source,
account: this.account,
actions
};
if (window.MoreJSBridge) {
window.MoreJSBridge.pushActions(JSON.stringify(params));
} else if (window.webkit) {
window.webkit.messageHandlers.pushActions.postMessage(JSON.stringify(params));
} else {
reject("请在MORE WALLET中打开此DAPP");
}
});
}
pushAction(contract, action, authorization, data) {
return new Promise((resolve, reject) => {
if (!this.account) {
reject("请选择执行账号");
return
}
const actions = [{
account: contract,
name: action,
authorization,
data
}];
this.pushActions(actions).then(resolve).catch(reject);
});
}
transfer(contract, to, quantity, memo) {
return new Promise((resolve, reject) => {
if (!this.account) {
reject("请选择执行账号");
return
}
const data = {
from: this.account,
to,
quantity,
memo
};
const authorization = [{
actor: this.account,
permission: "active"
}];
this.pushAction(contract, "transfer", authorization, data).then(res => resolve(res)).catch(error => reject(error));
});
}
*/
return TCClient;
}();
exports.default = TCClient;
module.exports = exports["default"];