OSDN Git Service

Merge pull request #1 from Bytom/wsmb
[bytom/Byone.git] / src / models / account.js
1 import bytom from './bytom'
2
3 let account = {
4   setupNet: bytom.setupNet
5 }
6
7 account.create = function(accountAlias, keyAlias, passwd, success, error) {
8   let retPromise = new Promise((resolve, reject) => {
9     bytom.keys
10       .create(keyAlias, passwd)
11       .then(res => {
12         bytom.accounts
13           .createAccountUseServer(res.xpub, accountAlias)
14           .then(ret => {
15             resolve(ret)
16           })
17           .catch(error => {
18             reject(error)
19           })
20       })
21       .catch(error => {
22         reject(error)
23       })
24   })
25   return retPromise
26 }
27
28 const ASSET_BTM =
29   'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
30
31 account.balance = function(guid, dstAsset) {
32   if (dstAsset == undefined) {
33     dstAsset = ASSET_BTM
34   }
35
36   let retPromise = new Promise((resolve, reject) => {
37     bytom.accounts
38       .listAddressUseServer(guid)
39       .then(addresses => {
40         let balance = 0
41         addresses.forEach(item => {
42           if (item.balances != null) {
43             item.balances.forEach(asset => {
44               if (asset.asset == dstAsset) {
45                 balance += Number(asset.balance)
46               }
47             })
48           }
49         })
50         balance = dstAsset === ASSET_BTM? (balance / 100000000): balance
51         resolve(balance)
52       })
53       .catch(error => {
54         reject(error)
55       })
56   })
57   return retPromise
58 }
59
60 account.list = function() {
61   let retPromise = new Promise((resolve, reject) => {
62     bytom.accounts
63       .listAccountUseServer()
64       .then(accounts => {
65         accounts.forEach(account => {
66           this.balance(account.guid).then(balance => {
67             account.balance = balance
68           })
69         })
70         resolve(accounts)
71       })
72       .catch(error => {
73         reject(error)
74       })
75   })
76
77   return retPromise
78 }
79
80 account.backup = function() {
81   return bytom.wallet.backup()
82 }
83
84 account.restore = function(walletImage) {
85   return bytom.wallet.restore(walletImage)
86 }
87
88 export default account