generated from Tahul/vue-composable-starter
-
-
Notifications
You must be signed in to change notification settings - Fork 56
/
Copy pathapp.vue
77 lines (66 loc) · 1.98 KB
/
app.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<script lang="ts" setup>
import { BrowserWalletConnector, useVueDapp, type ConnWallet } from '@vue-dapp/core'
import { VueDappModal } from '@vue-dapp/modal'
import '@vue-dapp/modal/dist/style.css'
// import { WalletConnectConnector } from '@vue-dapp/walletconnect'
// import { CoinbaseWalletConnector } from '@vue-dapp/coinbase'
import { darkTheme, lightTheme, type GlobalThemeOverrides } from 'naive-ui'
const lightThemeOverrides: GlobalThemeOverrides = {
common: {
primaryColor: '#42b883',
successColor: darkTheme.common.successColor,
},
}
useHead({
titleTemplate: title => {
if (title) return `${title} - Vue Dapp`
else return 'Vue Dapp - Essential Web3 Tools for Vue Developers'
},
})
const { addConnectors, onWalletUpdated, onDisconnected } = useVueDapp()
if (process.client) {
addConnectors([
new BrowserWalletConnector(),
// new WalletConnectConnector({
// projectId: 'd1e65611568666138126d315c0bafd7d',
// chains: [1],
// showQrModal: true,
// qrModalOptions: {
// themeMode: 'light',
// themeVariables: undefined,
// desktopWallets: undefined,
// walletImages: undefined,
// mobileWallets: undefined,
// enableExplorer: true,
// privacyPolicyUrl: undefined,
// termsOfServiceUrl: undefined,
// },
// }),
// new CoinbaseWalletConnector({
// appName: 'Vue Dapp',
// jsonRpcUrl: `https://mainnet.infura.io/v3/${INFURA_ID}`,
// }),
])
}
const { setWallet, resetWallet } = useEthers()
onWalletUpdated(async (wallet: ConnWallet) => {
setWallet(wallet.provider)
})
onDisconnected(() => {
resetWallet()
})
const hideConnectingModal = computed(() => {
const route = useRoute()
if (route.path === '/eip-6963') return true
return false
})
</script>
<template>
<n-config-provider :theme="lightTheme" :theme-overrides="lightThemeOverrides">
<NuxtLayout>
<NuxtLoadingIndicator />
<NuxtPage />
<VueDappModal auto-connect :hideConnectingModal="hideConnectingModal"> </VueDappModal>
</NuxtLayout>
</n-config-provider>
</template>