OSDN Git Service

update cross chain v3 api
[bytom/Byone.git] / src / models / account.js
1 import bytom from './bytom'
2 import uuid from 'uuid'
3 import address from "../utils/address";
4
5
6 let account = {
7   setupNet: bytom.setupNet
8 }
9
10 account.create = function(accountAlias, keyAlias, passwd, success, error) {
11   let retPromise = new Promise((resolve, reject) => {
12     if(!keyAlias){
13       keyAlias = `${accountAlias}-key-${uuid.v4()}`
14     }
15     bytom.keys
16       .create(keyAlias, passwd)
17       .then(res => {
18         bytom.accounts
19           .createAccountUseServer(res.xpub, accountAlias)
20           .then(ret => {
21             resolve(ret)
22           })
23           .catch(error => {
24             reject(error)
25           })
26       })
27       .catch(error => {
28         reject(error)
29       })
30   })
31   return retPromise
32 }
33
34 account.copy = function(guid) {
35   let retPromise = new Promise((resolve, reject) => {
36     bytom.accounts
37       .copyAccountUseServer(guid, 'btm')
38       .then(ret => {
39         resolve(ret)
40       })
41       .catch(error => {
42         reject(error)
43       })
44   })
45   return retPromise
46 }
47
48 account.listVapor = function(guid) {
49   let retPromise = new Promise((resolve, reject) => {
50     bytom.accounts
51       .listVaporAccountUseServer(guid)
52       .then(ret => {
53         resolve(ret)
54       })
55       .catch(error => {
56         reject(error)
57       })
58   })
59   return retPromise
60 }
61
62 account.balance = function(address) {
63   let retPromise = new Promise((resolve, reject) => {
64     bytom.accounts
65       .listAddressUseServer(address)
66       .then(address => {
67         let balances = address.balances || []
68         let votes = address.votes || []
69
70         resolve({
71             balances,
72             votes
73           })
74       })
75       .catch(error => {
76         reject(error)
77       })
78   })
79   return retPromise
80 }
81
82 account.list = function() {
83   let retPromise = new Promise((resolve, reject) => {
84     bytom.accounts
85       .listAccountUseServer()
86       .then(accounts => {
87         Promise.all(accounts.map(async (account) => {
88           try{
89             const obj = await this.balance(account.guid)
90             account.balances = obj.balances
91             account.votes = obj.votes
92           }catch (e) {
93             return e
94           }
95         })).then(()=>{
96           resolve(accounts)
97         }).catch(error=>{
98           throw error
99         })
100       })
101       .catch(error => {
102         reject(error)
103       })
104   })
105
106   return retPromise
107 }
108
109 account.backup = function() {
110   return bytom.wallet.backup()
111 }
112
113 account.restore = function(walletImage) {
114   return bytom.wallet.restore(walletImage)
115 }
116
117 export default account