将jcwallet挂载到全局对象, 修正一些方法引用错误

This commit is contained in:
cebgcontract 2022-07-10 08:54:52 +08:00
parent 2b4235449e
commit aeef85a4fb
4 changed files with 39 additions and 43 deletions

View File

@ -8,10 +8,10 @@ import { createWalletEvents, WALLET_ACCOUNT_CHANGE, WALLET_CHAIN_CHANGE, WALLET_
import { ERC20Standard } from "./standards/ERC20Standard";
import { ERC721Standard } from "./standards/ERC721Standard";
import { IAccount, initAccount } from "./data/DataModel";
import { DataManage } from "./manage/DataManage";
import { loadData, saveData } from "./manage/DataManage";
import { WALLET_STORAGE_KEY_NAME } from "./config/constants";
import { DEFALUT_TOKENS } from "./config/chain_config";
import { newMnemonic, restoreWalletByMnemonic } from "./manage/WalletManage";
import { newAccount, newMnemonic, restoreWalletByMnemonic } from "./manage/WalletManage";
var global =
@ -53,7 +53,6 @@ export default class JCWallet {
public erc20Standard: ERC20Standard
public erc721Standard: ERC721Standard
public mainHandlers = createWalletEvents()
private dataManage = new DataManage()
public data: IAccount[] = []
public iconType = 'jazz'
private accountIndex = 0
@ -64,7 +63,7 @@ export default class JCWallet {
this.erc20Standard = new ERC20Standard(this.web3);
this.erc721Standard = new ERC721Standard(this.web3);
this.wallet = this.web3.eth.accounts.wallet.load(this.password, WALLET_STORAGE_KEY_NAME)
this.data = this.dataManage.loadData()
this.data = loadData()
window.jc = { wallet: this };
window.cc = window.cc || {};
@ -165,7 +164,7 @@ export default class JCWallet {
}
}
this.dataManage.saveData(this.data)
saveData(this.data)
return data
}
@ -176,7 +175,7 @@ export default class JCWallet {
public createAccount() {
// let account = this.web3.eth.accounts.create()
const index = this.getMaxIdexOfType(0);
const accountNew = this.dataManage.newAccount(this.password, index)
const accountNew = newAccount(this.password, index)
const account = this.wallet.add(accountNew)
this.wallet.save(this.password, WALLET_STORAGE_KEY_NAME)
const chain = this.currentChain.id
@ -191,7 +190,7 @@ export default class JCWallet {
index
})
this.data.push(data);
this.dataManage.saveData(this.data)
saveData(this.data)
}
this.accountIndex = this.wallet.length - 1
@ -213,7 +212,7 @@ export default class JCWallet {
index
})
this.data.push(data);
this.dataManage.saveData(this.data)
saveData(this.data)
}
this.web3.eth.accounts.wallet.save(this.password, WALLET_STORAGE_KEY_NAME);
this.accountIndex = this.wallet.length - 1

View File

@ -1,43 +1,39 @@
import { IAccount } from "../data/DataModel";
import { singleton } from "../decorator/singleton.decorator";
import { aesDecrypt, aesEncrypt } from "../util/crypto.util";
const LOCAL_ACCOUNT_DATAS = 'local_account_datas'
const LOCAL_WALLET_MNEMONIC = 'local_wallet_mnemonic'
@singleton
export class DataManage{
public loadData(){
const dataStr = localStorage.getItem(LOCAL_ACCOUNT_DATAS)
let result: IAccount[] = []
if (dataStr) {
try {
result = JSON.parse(dataStr)
} catch (err) {
console.log('load local data error')
}
export function loadData(){
const dataStr = localStorage.getItem(LOCAL_ACCOUNT_DATAS)
let result: IAccount[] = []
if (dataStr) {
try {
result = JSON.parse(dataStr)
} catch (err) {
console.log('load local data error')
}
return result
}
public saveData(datas: IAccount[]) {
const dataStr = JSON.stringify(datas)
localStorage.setItem(LOCAL_ACCOUNT_DATAS, dataStr)
}
public loadMnemonic(password: string) {
let dataStr: string = localStorage.getItem(LOCAL_WALLET_MNEMONIC)
if (dataStr) {
dataStr = aesDecrypt(dataStr, password)
}
return dataStr
}
public saveMnemonic(mnemonic: string, password: string) {
const dataStr = aesEncrypt(mnemonic, password);
localStorage.setItem(LOCAL_WALLET_MNEMONIC, dataStr);
}
return result
}
export function saveData(datas: IAccount[]) {
const dataStr = JSON.stringify(datas)
localStorage.setItem(LOCAL_ACCOUNT_DATAS, dataStr)
}
export function loadMnemonic(password: string) {
let dataStr: string = localStorage.getItem(LOCAL_WALLET_MNEMONIC)
if (dataStr) {
dataStr = aesDecrypt(dataStr, password)
}
return dataStr
}
export function saveMnemonic(mnemonic: string, password: string) {
const dataStr = aesEncrypt(mnemonic, password);
localStorage.setItem(LOCAL_WALLET_MNEMONIC, dataStr);
}

View File

@ -1,9 +1,10 @@
import { hdkey } from 'ethereumjs-wallet'
import { generateMnemonic, mnemonicToSeedSync } from "bip39";
import { loadMnemonic, saveMnemonic } from './DataManage';
export function newAccount(password: string, index: number) {
const mnemonic = this.loadMnemonic(password)
const mnemonic = loadMnemonic(password)
const seed = mnemonicToSeedSync(mnemonic)
const hdWallet = hdkey.fromMasterSeed(seed)
const keyPair1 = hdWallet.derivePath(`m/44'/60'/0'/0/${index}`)
@ -13,10 +14,10 @@ export function newAccount(password: string, index: number) {
export function newMnemonic(password: string) {
let mnemonic = generateMnemonic()
this.saveMnemonic(mnemonic, password)
saveMnemonic(mnemonic, password)
return mnemonic
}
export function restoreWalletByMnemonic(mnemonic: string, password: string) {
this.saveMnemonic(mnemonic, password)
saveMnemonic(mnemonic, password)
}

View File

@ -45,7 +45,7 @@ module.exports = {
path: path.resolve(__dirname, "dist"),
filename: "jcwallet.js",
library: "jcwallet",
libraryTarget: "commonjs2",
// libraryTarget: "window",
// libraryTarget: "commonjs2",
libraryTarget: "window",
},
};