OSDN Git Service

Create export-key and reset-password component
[bytom/bytom-electron.git] / src / features / mockhsm / actions.js
1 import { baseListActions, baseCreateActions } from 'features/shared/actions'
2 import { chainClient } from 'utility/environment'
3 import {reset} from 'redux-form'
4
5 const type = 'key'
6 const clientApi = () => chainClient().mockHsm.keys
7
8 const list = baseListActions(type, {
9   className: 'Key',
10   clientApi,
11 })
12 const create = baseCreateActions(type, {
13   className: 'Key',
14   clientApi,
15 })
16
17 const resetPassword = {
18   submitResetForm: (params) => {
19     let promise = Promise.resolve()
20     return (dispatch)  => {
21       return promise.then(() => clientApi().resetPassword(params).then((resp) => {
22         if(resp.data.changed){
23           dispatch({ type: `RESET_PASSWORD_${type.toUpperCase()}`, resp })
24           dispatch(reset('ResetPassword'))
25         }else{
26           let msg = 'Unable to reset the key password.'
27           dispatch({ type: 'ERROR', payload: {message: msg} })
28           throw new Error(msg)
29         }
30       }))
31     }
32   }
33 }
34
35 export default {
36   ...create,
37   ...list,
38   ...resetPassword,
39   createExport: (arg, fileName) => (dispatch) => {
40     clientApi().export(arg).then(resp => {
41       if(resp.status == 'success'){
42         const privateKey = resp.data.privateKey
43
44         var element = document.createElement('a')
45         element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(privateKey))
46         element.setAttribute('download', fileName)
47         element.style.display = 'none'
48         document.body.appendChild(element)
49         element.click()
50
51         document.body.removeChild(element)
52       }else if(resp.status == 'fail'){
53         dispatch({ type: 'ERROR', payload: {message: resp.msg} })
54       }
55     })
56   }
57 }