OSDN Git Service

update balances display format.
[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 account.balance = function(guid) {
29   let retPromise = new Promise((resolve, reject) => {
30     bytom.accounts
31       .listAddressUseServer(guid)
32       .then(addresses => {
33         let balances = []
34         addresses.forEach(address => {
35           if (address.balances != null) {
36             balances = balances.concat(address.balances)
37           }
38         })
39         let obj = {};
40
41         balances.forEach(function (balance) {
42           if(obj.hasOwnProperty(balance.asset)) {
43             obj[balance.asset].balance = Number(obj[balance.asset].balance) + Number(balance.balance);
44           } else {
45             balance.balance =  Number(balance.balance)
46             obj[balance.asset] = balance;
47             delete obj[balance.asset]['total_received']
48             delete obj[balance.asset]['total_sent']
49             delete obj[balance.asset]['in_btc']
50             delete obj[balance.asset]['in_cny']
51             delete obj[balance.asset]['in_usd']
52           }
53         });
54
55
56         let res = [];
57
58         for(let prop in obj) {
59           res.push(obj[prop]);
60         }
61
62         resolve(res)
63       })
64       .catch(error => {
65         reject(error)
66       })
67   })
68   return retPromise
69 }
70
71 account.list = function() {
72   let retPromise = new Promise((resolve, reject) => {
73     bytom.accounts
74       .listAccountUseServer()
75       .then(accounts => {
76         Promise.all(accounts.map(async (account) => {
77           const balances = await this.balance(account.guid)
78           account.balances = balances
79         })).then(()=>{
80           resolve(accounts)
81         })
82       })
83       .catch(error => {
84         reject(error)
85       })
86   })
87
88   return retPromise
89 }
90
91 account.backup = function() {
92   return bytom.wallet.backup()
93 }
94
95 account.restore = function(walletImage) {
96   return bytom.wallet.restore(walletImage)
97 }
98
99 export default account