OSDN Git Service

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