UNPKG

tigerchange.jssdk

Version:

tigerchange js sdk for dapp

270 lines (244 loc) 7.74 kB
"use strict"; 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"];