OSDN Git Service

change the create page and the login in page into vues
[bytom/Byone.git] / src / models / account.js
1 import bytom from './bytom'
2 import uuid from 'uuid'
3
4
5 let account = {
6   setupNet: bytom.setupNet
7 }
8
9 account.create = function(accountAlias, keyAlias, passwd, success, error) {
10   let retPromise = new Promise((resolve, reject) => {
11     if(!keyAlias){
12       keyAlias = `${accountAlias}-key-${uuid.v4()}`
13     }
14     bytom.keys
15       .create(keyAlias, passwd)
16       .then(res => {
17         bytom.accounts
18           .createAccountUseServer(res.xpub, accountAlias)
19           .then(ret => {
20             resolve(ret)
21           })
22           .catch(error => {
23             reject(error)
24           })
25       })
26       .catch(error => {
27         reject(error)
28       })
29   })
30   return retPromise
31 }
32
33 account.balance = function(guid) {
34   let retPromise = new Promise((resolve, reject) => {
35     bytom.accounts
36       .listAddressUseServer(guid)
37       .then(addresses => {
38         let balances = []
39         addresses.forEach(address => {
40           if (address.balances != null) {
41             balances = balances.concat(address.balances)
42           }
43         })
44         let obj = {};
45
46         balances.forEach(function (balance) {
47           if(obj.hasOwnProperty(balance.asset)) {
48             obj[balance.asset].balance = Number(obj[balance.asset].balance) + Number(balance.balance);
49           } else {
50             balance.balance =  Number(balance.balance)
51             obj[balance.asset] = balance;
52             delete obj[balance.asset]['total_received']
53             delete obj[balance.asset]['total_sent']
54             delete obj[balance.asset]['in_btc']
55             delete obj[balance.asset]['in_cny']
56             delete obj[balance.asset]['in_usd']
57           }
58         });
59
60
61         let res = [];
62
63         for(let prop in obj) {
64           res.push(obj[prop]);
65         }
66
67         resolve(res)
68       })
69       .catch(error => {
70         reject(error)
71       })
72   })
73   return retPromise
74 }
75
76 account.list = function() {
77   let retPromise = new Promise((resolve, reject) => {
78     bytom.accounts
79       .listAccountUseServer()
80       .then(accounts => {
81         Promise.all(accounts.map(async (account) => {
82           try{
83             const balances = await this.balance(account.guid)
84             account.balances = balances
85           }catch (e) {
86             return e
87           }
88         })).then(()=>{
89           resolve(accounts)
90         }).catch(error=>{
91           throw error
92         })
93       })
94       .catch(error => {
95         reject(error)
96       })
97   })
98
99   return retPromise
100 }
101
102 account.backup = function() {
103   return bytom.wallet.backup()
104 }
105
106 account.restore = function(walletImage) {
107   return bytom.wallet.restore(walletImage)
108 }
109
110 export default account