61 lines
1.2 KiB
Vue
61 lines
1.2 KiB
Vue
<template>
|
|
<b-button :type="type" v-bind="$attrs" @click="onLogIn">{{ $t(actionText) }}</b-button>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapActions } from 'vuex'
|
|
|
|
import Web3Connect from './Modal'
|
|
|
|
import { detectMob } from '@/utils'
|
|
|
|
export default {
|
|
inheritAttrs: false,
|
|
props: {
|
|
type: {
|
|
type: String,
|
|
default: 'is-primary'
|
|
},
|
|
actionText: {
|
|
type: String,
|
|
default: () => 'connect'
|
|
}
|
|
},
|
|
computed: {
|
|
hasInjectedProvider() {
|
|
return Boolean(window.ethereum)
|
|
}
|
|
},
|
|
methods: {
|
|
...mapActions('metamask', ['initialize']),
|
|
async web3Connect(name) {
|
|
this.$store.dispatch('loading/enable', {})
|
|
try {
|
|
await this.initialize({
|
|
providerName: name
|
|
})
|
|
} catch (e) {
|
|
console.error(e)
|
|
}
|
|
this.$store.dispatch('loading/disable')
|
|
},
|
|
onLogIn() {
|
|
if (detectMob() && this.hasInjectedProvider) {
|
|
this.web3Connect('mobileWallet')
|
|
return
|
|
}
|
|
|
|
this.$buefy.modal.open({
|
|
parent: this,
|
|
component: Web3Connect,
|
|
hasModalCard: true,
|
|
width: 440,
|
|
props: {
|
|
web3Connect: this.web3Connect
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|