11<script setup lang="ts">
2- import { computed , reactive } from ' vue'
2+ import { computed , reactive , ref } from ' vue'
33
44import {
55 $off ,
@@ -12,6 +12,7 @@ import {
1212 getAvailableChains ,
1313 connect as masterConnect ,
1414 disconnect as masterDisconnect ,
15+ signMessage as masterSignMessage ,
1516 switchChain as masterSwitchChain ,
1617 selectChain
1718} from ' ../lib'
@@ -83,6 +84,26 @@ const chains = getAvailableChains()
8384const availableChains = computed (() => {
8485 return chains .filter ((item ) => item .id !== chain .value .id )
8586})
87+
88+ const signMessageLoading = ref (false )
89+ const message = ref (' ' )
90+ const messageResponse = ref (' ' )
91+ async function signMessage() {
92+ if (! signMessageLoading .value ) {
93+ signMessageLoading .value = true
94+ messageResponse .value = ' '
95+ masterSignMessage (message .value )
96+ .then ((data ) => {
97+ messageResponse .value = data
98+ })
99+ .catch ((e ) => {
100+ messageResponse .value = e
101+ })
102+ .finally (() => {
103+ signMessageLoading .value = false
104+ })
105+ }
106+ }
86107 </script >
87108
88109<template >
@@ -146,6 +167,19 @@ const availableChains = computed(() => {
146167
147168 <hr />
148169
170+ <div class =" mb-3" >
171+ <label for =" signMessageInput" class =" form-label" >Message</label >
172+ <textarea class =" form-control" id =" signMessageInput" rows =" 3" v-model =" message" ></textarea >
173+ </div >
174+ <p v-if =" messageResponse" >{{ messageResponse }}</p >
175+ <div >
176+ <button @click =" signMessage" :disabled =" signMessageLoading" class =" btn btn-primary" type =" submit" >
177+ {{ signMessageLoading ? 'Signing...' : 'Sign message' }}
178+ </button >
179+ </div >
180+
181+ <hr />
182+
149183 <div class =" d-grid d-sm-flex mb-3 gap-2" >
150184 <button @click =" accountDetails" class =" btn btn-primary" >Account details</button >
151185 </div >
0 commit comments