newpay-wallet-js
Version:
320 lines (247 loc) • 13.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _bitsharesjsWs = require("bitsharesjs-ws");
var _es = require("bitsharesjs/es");
var _idbInstance = require("./idb-instance.js");
var _idbInstance2 = _interopRequireDefault(_idbInstance);
var _WalletDb = require("./WalletDb.js");
var _WalletDb2 = _interopRequireDefault(_WalletDb);
var _WalletManagerStore = require("./WalletManagerStore.js");
var _WalletManagerStore2 = _interopRequireDefault(_WalletManagerStore);
var _WalletActions = require("./WalletActions.js");
var _WalletActions2 = _interopRequireDefault(_WalletActions);
var _AccountStore = require("./AccountStore.js");
var _AccountStore2 = _interopRequireDefault(_AccountStore);
var _ApplicationApi = require("./ApplicationApi.js");
var _ApplicationApi2 = _interopRequireDefault(_ApplicationApi);
var _PrivateKeyStore = require("./PrivateKeyStore.js");
var _PrivateKeyStore2 = _interopRequireDefault(_PrivateKeyStore);
var _Transfer = require("./Transfer.js");
var _Transfer2 = _interopRequireDefault(_Transfer);
var _QueryChainStore = require("./QueryChainStore.js");
var _QueryChainStore2 = _interopRequireDefault(_QueryChainStore);
var _utils = require("./lib/common/utils.js");
var _utils2 = _interopRequireDefault(_utils);
var _immutable = require("immutable");
var _immutable2 = _interopRequireDefault(_immutable);
var _AccountRefsStore = require("./AccountRefsStore.js");
var _AccountRefsStore2 = _interopRequireDefault(_AccountRefsStore);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var newpay_password = "newpaypassword987654321";
var NewpayInstance = function () {
function NewpayInstance() {
_classCallCheck(this, NewpayInstance);
}
_createClass(NewpayInstance, null, [{
key: "init",
// static getInstance() {
// if (!NewpayInstance.instance) {
// NewpayInstance.instance = new NewpayInstance();
// }
// return NewpayInstance.instance;
// }
//初始化
value: function init(connection_url) {
var urls = [connection_url];
var connectionManager = new _bitsharesjsWs.Manager({ url: connection_url, urls: urls });
return connectionManager.connectWithFallback(true).then(function () {
_idbInstance2.default.close();
var db = _idbInstance2.default.init_instance(indexedDB).init_promise;
return Promise.all([db]).then(function () {
return Promise.all([_PrivateKeyStore2.default.onLoadDbData().then(function () {
_AccountRefsStore2.default.loadDbData();
}), _WalletDb2.default.loadDbData(), _WalletManagerStore2.default.init()]).then(function () {
return _es.ChainStore.init().then(function () {
return Promise.all([_AccountStore2.default.loadDbData(_bitsharesjsWs.Apis.instance().chainId)]).then(function () {
return _AccountStore2.default.tryToSetCurrentAccount();
}).catch(function (error) {
console.log("[NewpayInstance.js] ----- ERROR ----->", error);
return Promise.reject(error);
});
}).catch(function (error) {
console.log("[NewpayInstance.js] ----- ChainStore.init error ----->", error);
return Promise.reject(error);
});
});
});
});
}
//创建钱包和账户
}, {
key: "createWalletAndAccount",
value: function createWalletAndAccount(walletName, accountName, faucet_url) {
var password = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
if (password == '') {
password = newpay_password;
}
var key = "__graphene__" + _AccountStore2.default._getCurrentAccountKey();
var databaseName = _QueryChainStore2.default.getDatabaseName();
_idbInstance2.default.impl.deleteDatabase(databaseName);
localStorage.removeItem(key);
_idbInstance2.default.close();
return _idbInstance2.default.init_instance().init_promise.then(function () {
var setRoot1 = _idbInstance2.default.root.setProperty("wallet_names", []);
var setRoot2 = _idbInstance2.default.root.setProperty("current_wallet", "");
var setRoot3 = _idbInstance2.default.root.setProperty("AddressIndex", null);
return Promise.all([setRoot1, setRoot2, setRoot3]).then(function () {
return _WalletManagerStore2.default.init().then(function () {
return _WalletManagerStore2.default.onSetWallet(walletName, password).then(function () {
//钱包的名字 ,钱包的密码六位密码
console.log("Congratulations, your wallet was successfully created.");
return _WalletActions2.default.createAccount(accountName, null, null, 0, null, faucet_url).then(_AccountStore2.default.onCreateAccount(accountName)).then(function () {
return (0, _es.FetchChain)("getAccount", name);
}).catch(function (error) {
console.log("ERROR AccountActions.createAccount", error);
var error_msg = error.base && error.base.length && error.base.length > 0 ? error.base[0] : "unknown error";
if (error.remote_ip) error_msg = error.remote_ip[0];
return Promise.reject(error_msg);
});
});
});
});
});
// return WalletManagerStore.onSetWallet(walletName, newpay_password).then(()=> { //钱包的名字 ,钱包的密码六位密码
// console.log("Congratulations, your wallet was successfully created.");
// return WalletActions.createAccount(accountName, null, null, 0, null).then(
// AccountStore.onCreateAccount(accountName)
// ).then( () =>{
// return FetchChain("getAccount", name)
// }).catch(error =>{
// console.log("ERROR AccountActions.createAccount", error);
// let error_msg = error.base && error.base.length && error.base.length > 0 ? error.base[0] : "unknown error";
// if (error.remote_ip) error_msg = error.remote_ip[0];
// return Promise.reject(error_msg);
// })
// })
}
//转账
}, {
key: "transfer",
value: function transfer(fromAccount, toAccount, amount, asset_id, memo) {
var password = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '';
if (password == '') {
password = newpay_password;
}
if (_WalletDb2.default.validatePassword(password, true)) {
var application_api = new _ApplicationApi2.default();
return application_api.transfer(fromAccount, toAccount, amount, //为用户输入的数字乘以此资产类型的精度
asset_id, memo).then(function (result) {
console.log(result);
return Promise.resolve(result);
}).catch(function (error) {
console.log(error);
return Promise.reject(error);
});
} else {
return Promise.reject("验证密码错误!");
}
}
//导出脑钥
}, {
key: "exportBrainKey",
value: function exportBrainKey() {
var password = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
if (password == '') {
password = newpay_password;
}
if (_WalletDb2.default.validatePassword(password, true)) {
return _WalletDb2.default.getBrainKey();
} else {
return false;
}
}
//导入脑钥
}, {
key: "importBrainKey",
value: function importBrainKey(walletName, brainkey_plaintext, callbackFun) {
var password = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
if (password == '') {
password = newpay_password;
}
return _QueryChainStore2.default.importBrainkey(walletName, password, brainkey_plaintext, callbackFun);
}
//查询余额
}, {
key: "getAccountBalances",
value: function getAccountBalances(name) {
return _QueryChainStore2.default.listAccountBalances(name);
}
//查找用户是否存在
}, {
key: "checkAccountExists",
value: function checkAccountExists(name) {
return _bitsharesjsWs.Apis.instance().db_api().exec("lookup_accounts", [name, 20]);
}
//查找当前用户local_storage
}, {
key: "getCurAccountLocalKey",
value: function getCurAccountLocalKey() {
var key = "__graphene__" + _AccountStore2.default._getCurrentAccountKey();
return JSON.parse(localStorage.getItem(key));
}
//获取转账记录
}, {
key: "getTransferList",
value: function getTransferList(name, start) {
return _QueryChainStore2.default.getTransferList(name, start);
}
//获取转账明细(返回时间和解析后的备注)
}, {
key: "getTransferInfo",
value: function getTransferInfo(block_num, trx_in_block) {
var password = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var res_obj = {};
if (password == '') {
password = newpay_password;
}
if (_WalletDb2.default.validatePassword(password, true)) {
return _bitsharesjsWs.Apis.instance().db_api().exec("get_transaction", [block_num, trx_in_block]).then(function (res) {
res_obj["expiration"] = res.expiration;
if (res.operations[0][1].memo) {
//解析备注
res_obj["memo"] = _PrivateKeyStore2.default.decodeMemo(res.operations[0][1].memo).text;
}
return res_obj;
});
} else {
return res_obj;
}
}
//修改本地密码
}, {
key: "changePassword",
value: function changePassword(old_password, new_password) {
if (old_password == '') {
old_password = newpay_password;
}
if (new_password == '') {
new_password = newpay_password;
}
return _WalletDb2.default.changePassword(old_password, new_password, true);
}
//验证密码
}, {
key: "validatePassword",
value: function validatePassword(password) {
return _WalletDb2.default.validatePassword(password, true);
}
//检测用户名是否合法
}, {
key: "validateAccountName",
value: function validateAccountName(accountName) {
var info = accountName === "" ? "请输入一个合法账户名称" : _QueryChainStore2.default.is_account_name_error(accountName);
if (!info && !_QueryChainStore2.default.is_cheap_name(accountName)) {
info = "这是高级账户名。高级账户名的注册需要花费更多,因为无法通过免费水龙头服务进行注册。请选择其他名字,包含至少一个横杠、数字或者不含元音字母";
}
return info;
}
}]);
return NewpayInstance;
}();
//var NewpayInstanceWrapped = NewpayInstance.getInstance();
//export default NewpayInstanceWrapped
exports.default = NewpayInstance;