Small library to use Hive Keychain with Typescript
import {Keychain, EVM} from 'splinterlands-web3-wallets'
const main = async () => {
const keychain = new Keychain()
/**
* Initially keychain.state is 'none'
* You can either run the function below manually (make sure extension has be loaded within the website, could take a second or so)
* Or it will be run when you run keychain.call, keychain.requestSignBuffer, etc.
*
* Explanation:
* none => not installed
* installed => installed but not enabled
* enabled => ready to go
*/
await keychain.initialize()
const result = await keychain.requestSignBuffer({
// address: 'therealwolf', // optional - if not set, user can choose
role: 'Posting',
message: 'Super secret message',
title: 'Please sign this message so we can authenticate your account',
})
if (result.status === 'cancel') {
console.log(
'User cancelled the request. You can ignore this and just start over.',
)
return
} else if (result.status === 'error') {
console.log('There was an error')
if (result.state === 'none') {
console.log(`User has not installed Keychain or hasn't used it before.`)
} else if (result.state === 'installed') {
console.log(
`User has installed Keychain and used it before, but it seems to be disabled for this website. Remind user to enable again.`,
)
} else {
console.log(`Message: ${result.message}`, result.data)
}
return
} else {
console.log('Success!', result.data)
}
const evm = new EVM()
const result2 = await evm.requestAddress()
if (result2.status === 'cancel') {
console.log(
'User cancelled the request. You can ignore this and just start over.',
)
} else if (result2.status === 'error') {
if (result2.state === 'none') {
console.log(`User has not installed EVM Wallet or hasn't used it before.`)
} else if (result2.state === 'installed') {
console.log(
`User has installed EVM Wallet and used it before, but it seems to be disabled for this website. Remind user to enable again.`,
)
}
} else {
console.log('Success!', result.data)
}
}
main()