41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import toast from 'react-hot-toast'
|
|
import { derive, XRPL_Account } from 'xrpl-accountlib'
|
|
|
|
import state from '../index'
|
|
import { names } from './addFaucetAccount'
|
|
|
|
// Adds test account to global state with secret key
|
|
export const importAccount = (secret: string, name?: string) => {
|
|
if (!secret) {
|
|
return toast.error('You need to add secret!')
|
|
}
|
|
if (state.accounts.find(acc => acc.secret === secret)) {
|
|
return toast.error('Account already added!')
|
|
}
|
|
let account: XRPL_Account | null = null
|
|
try {
|
|
account = derive.familySeed(secret)
|
|
} catch (err: any) {
|
|
if (err?.message) {
|
|
toast.error(err.message)
|
|
} else {
|
|
toast.error('Error occurred while importing account')
|
|
}
|
|
return
|
|
}
|
|
if (!account || !account.secret.familySeed) {
|
|
return toast.error(`Couldn't create account!`)
|
|
}
|
|
state.accounts.push({
|
|
name: name || names[state.accounts.length],
|
|
address: account.address || '',
|
|
secret: account.secret.familySeed || '',
|
|
xrp: '0',
|
|
sequence: 1,
|
|
hooks: [],
|
|
isLoading: false,
|
|
version: '2'
|
|
})
|
|
return toast.success('Account imported successfully!')
|
|
}
|