46
46
<img src =" https://github.com/vu3th/vue-dapp/blob/main/app/public/images/overview.png " alt =" Vue Dapp Overview " style =" max-width :100% ;" width =" 800 " >
47
47
48
48
49
- ## Installation
49
+ ## Getting Started
50
50
51
- Minimum
52
- ``` bash
53
- npm install pinia @vue-dapp/core
54
- ```
51
+ ### SPA with Vite
55
52
56
- With the wallet modal
57
53
``` bash
58
54
npm install pinia @vue-dapp/core @vue-dapp/modal
59
55
```
60
56
61
- Maximum
62
- ``` bash
63
- npm install pinia @vue-dapp/core @vue-dapp/modal @vue-dapp/walletconnect @vue-dapp/coinbase
57
+ ``` ts [main.ts]
58
+ import { createPinia } from ' pinia '
59
+ app . use ( createPinia ())
64
60
```
65
61
66
- ## Example
67
-
68
62
``` vue
69
63
<script lang="ts" setup>
70
- import {
71
- useVueDapp,
72
- BrowserWalletConnector,
73
- VueDappProvider,
74
- type ConnWallet,
75
- } from '@vue-dapp/core'
76
- import { VueDappModal } from '@vue-dapp/modal'
77
- import '@vue-dapp/modal/dist/style.css' // make sure to add css for the modal
64
+ import { BrowserWalletConnector, useVueDapp } from '@vue-dapp/core'
65
+ import { VueDappModal, useVueDappModal } from '@vue-dapp/modal'
66
+ import '@vue-dapp/modal/dist/style.css'
78
67
79
- const { status , isConnected, address, chainId, error, disconnect, addConnector } = useVueDapp()
68
+ const { addConnectors , isConnected, wallet, disconnect } = useVueDapp()
80
69
81
- const isModalOpen = ref(false )
70
+ addConnectors([new BrowserWalletConnector()] )
82
71
83
- function onClickConnectBtn () {
72
+ function onClickConnectButton () {
84
73
if (isConnected.value) disconnect()
85
- else isModalOpen.value = true
86
- }
87
-
88
- if (process.client) { // only when using Nuxt 3
89
- addConnector(new BrowserWalletConnector())
90
- }
91
-
92
- function handleConnect(wallet: ConnWallet) {
93
- console.log('handleConnect', wallet)
94
-
95
- // example with ethers v6
96
- const ethersProvider = new ethers.providers.Web3Provider(provider)
97
- const signer = await ethersProvider.getSigner()
98
-
99
- dappStore.setUser({
100
- address,
101
- signer: markRaw(signer),
102
- chainId,
103
- })
104
- }
105
-
106
- function handleDisconnect() {
107
- console.log('handleDisconnect')
108
-
109
- // example
110
- dappStore.resetUser()
74
+ else useVueDappModal().open()
111
75
}
112
76
</script>
113
77
114
78
<template>
115
- <div>
116
- <VueDappProvider @connect="handleConnect" @disconnect="handleDisconnect">
117
- <button @click="onClickConnectBtn">{{ isConnected ? 'Disconnect' : 'Connect' }}</button>
118
-
119
- <div>status: {{ status }}</div>
120
- <div>isConnected: {{ isConnected }}</div>
121
- <div>error: {{ error }}</div>
79
+ <button @click="onClickConnectButton">{{ isConnected ? 'Disconnect' : 'Connect' }}</button>
122
80
123
- <div v-if="isConnected">
124
- <div>chainId: {{ chainId }}</div>
125
- <div>address: {{ address }}</div>
126
- </div>
81
+ <div>status: {{ wallet.status }}</div>
82
+ <div>isConnected: {{ isConnected }}</div>
83
+ <div>error: {{ wallet.error }}</div>
127
84
128
- <VueDappModal v-model="isModalOpen" dark auto-connect />
129
- </VueDappProvider>
85
+ <div v-if="isConnected">
86
+ <div>chainId: {{ wallet.chainId }}</div>
87
+ <div>address: {{ wallet.address }}</div>
130
88
</div>
89
+
90
+ <VueDappModal dark auto-connect />
131
91
</template>
92
+ ```
93
+
94
+ ### SSR with Nuxt 3
132
95
96
+ ``` bash
97
+ npm install pinia @pinia/nuxt @vue-dapp/core @vue-dapp/nuxt @vue-dapp/modal
98
+ ```
99
+
100
+ ``` ts
101
+ modules : [' @pinia/nuxt' , ' @vue-dapp/nuxt' ]
133
102
```
134
103
135
104
## Examples
@@ -140,9 +109,11 @@ function handleDisconnect() {
140
109
## Development
141
110
142
111
```
112
+ pnpm i
143
113
pnpm build
144
- pnpm dev
145
114
pnpm -F core watch
115
+ pnpm -F modal watch
116
+ pnpm dev
146
117
```
147
118
148
119
0 commit comments