From 4ce650f0d2bc3eca9636bef266b73a3479d4e18d Mon Sep 17 00:00:00 2001 From: RcleydsonR Date: Wed, 9 Nov 2022 18:59:02 -0300 Subject: [PATCH 01/12] configuring connection to metamask wallet --- package.json | 3 +- src/App.vue | 2 +- src/ethers.ts | 21 +++ src/router/index.ts | 6 +- src/views/AboutView.vue | 15 -- src/views/EthersView.vue | 28 ++++ yarn.lock | 342 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 397 insertions(+), 20 deletions(-) create mode 100644 src/ethers.ts delete mode 100644 src/views/AboutView.vue create mode 100644 src/views/EthersView.vue diff --git a/package.json b/package.json index fb81990..f88c0af 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "tailwindcss": "^3.2.1", "typescript": "~4.7.4", "vite": "^3.1.8", - "vue-tsc": "^1.0.8" + "vue-tsc": "^1.0.8", + "ethers": "^5.7.2" } } diff --git a/src/App.vue b/src/App.vue index d6fbc35..378a0c7 100644 --- a/src/App.vue +++ b/src/App.vue @@ -17,8 +17,8 @@ import HelloWorld from "./components/HelloWorld.vue"; diff --git a/src/ethers.ts b/src/ethers.ts new file mode 100644 index 0000000..608a7d4 --- /dev/null +++ b/src/ethers.ts @@ -0,0 +1,21 @@ +import { ethers } from "ethers"; + +const getProvider = async (): Promise => { + const window_ = window as any; + + if(window_.ethereum){ + + const provider = new ethers.providers.Web3Provider(window_.ethereum) + + const walletAddress = await provider.send("eth_requestAccounts", []); + const balance = await provider.getBalance(walletAddress[0]); + console.log(walletAddress); + console.log(ethers.utils.formatEther(balance)); + + return provider + } + else + console.log("Browser não suporta conexão com metamask") +}; + +export default { getProvider }; \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts index b53df45..7e1bc84 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -10,12 +10,12 @@ const router = createRouter({ component: HomeView, }, { - path: "/about", - name: "about", + path: "/ethers", + name: "ethers", // route level code-splitting // this generates a separate chunk (About.[hash].js) for this route // which is lazy-loaded when the route is visited. - component: () => import("../views/AboutView.vue"), + component: () => import("../views/EthersView.vue"), }, { path: "/pix", diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue deleted file mode 100644 index 756ad2a..0000000 --- a/src/views/AboutView.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/src/views/EthersView.vue b/src/views/EthersView.vue new file mode 100644 index 0000000..7d89f29 --- /dev/null +++ b/src/views/EthersView.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/yarn.lock b/yarn.lock index caa5c62..0fa6bd0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -294,6 +294,348 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@headlessui/vue@^1.7.3": version "1.7.3" resolved "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.3.tgz" From a2acb72a1b4bb78d07f9ee4441054283dcc06542 Mon Sep 17 00:00:00 2001 From: RcleydsonR Date: Mon, 14 Nov 2022 16:34:12 -0300 Subject: [PATCH 02/12] implement first page header with metamask connection Co-authored-by: geovanne97 Co-authored-by: brunoedcf --- src/App.vue | 41 ++++++++++++++++++++++++---------------- src/assets/logo.svg | 11 ++++++++++- src/assets/main.css | 12 +----------- src/ethers.ts | 23 ++++++++++------------ src/views/EthersView.vue | 14 +++++++++----- src/views/QrCodeForm.vue | 8 ++------ 6 files changed, 57 insertions(+), 52 deletions(-) diff --git a/src/App.vue b/src/App.vue index 378a0c7..b702dc8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,43 +1,53 @@ diff --git a/src/assets/logo.svg b/src/assets/logo.svg index bc826fe..ebd8aa2 100644 --- a/src/assets/logo.svg +++ b/src/assets/logo.svg @@ -1 +1,10 @@ - \ No newline at end of file + + + + + + + + + + diff --git a/src/assets/main.css b/src/assets/main.css index fd9aa8d..bac6c1e 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -4,9 +4,9 @@ @tailwind utilities; #app { - max-width: 1280px; margin: 0 auto; padding: 2rem; + height: 100vh; font-weight: normal; } @@ -25,14 +25,4 @@ a, } @media (min-width: 1024px) { - body { - display: flex; - place-items: center; - } - - #app { - display: grid; - grid-template-columns: 1fr 1fr; - padding: 0 2rem; - } } diff --git a/src/ethers.ts b/src/ethers.ts index 608a7d4..b3d7308 100644 --- a/src/ethers.ts +++ b/src/ethers.ts @@ -1,21 +1,18 @@ import { ethers } from "ethers"; const getProvider = async (): Promise => { - const window_ = window as any; + const window_ = window as any; - if(window_.ethereum){ + if (window_.ethereum) { + const provider = new ethers.providers.Web3Provider(window_.ethereum); - const provider = new ethers.providers.Web3Provider(window_.ethereum) + const walletAddress = await provider.send("eth_requestAccounts", []); + const balance = await provider.getBalance(walletAddress[0]); + console.log(walletAddress); + console.log(ethers.utils.formatEther(balance)); - const walletAddress = await provider.send("eth_requestAccounts", []); - const balance = await provider.getBalance(walletAddress[0]); - console.log(walletAddress); - console.log(ethers.utils.formatEther(balance)); - - return provider - } - else - console.log("Browser não suporta conexão com metamask") + return provider; + } else console.log("Browser não suporta conexão com metamask"); }; -export default { getProvider }; \ No newline at end of file +export default { getProvider }; diff --git a/src/views/EthersView.vue b/src/views/EthersView.vue index 7d89f29..5f499a4 100644 --- a/src/views/EthersView.vue +++ b/src/views/EthersView.vue @@ -1,17 +1,21 @@ diff --git a/src/views/QrCodeForm.vue b/src/views/QrCodeForm.vue index 46e8463..215274c 100644 --- a/src/views/QrCodeForm.vue +++ b/src/views/QrCodeForm.vue @@ -29,12 +29,8 @@ const submit = () => { const pixQrCode = pix({ pixKey: pixModel.value.pixKey, - merchantName: pixModel.value.name.trim() - ? pixModel.value.name - : "name", - merchantCity: pixModel.value.city.trim() - ? pixModel.value.city - : "city", + merchantName: pixModel.value.name.trim() ? pixModel.value.name : "name", + merchantCity: pixModel.value.city.trim() ? pixModel.value.city : "city", transactionId: pixModel.value.transactionId.trim() ? pixModel.value.transactionId : "***", From 91283305b90ea3fc983234772119064573ef4e0d Mon Sep 17 00:00:00 2001 From: RcleydsonR Date: Tue, 15 Nov 2022 17:01:37 -0300 Subject: [PATCH 03/12] add connect to ethers provider function and use pinia as ether params store Co-authored-by: geovanne97 Co-authored-by: brunoedcf --- package.json | 5 +- src/App.vue | 18 ++++-- src/main.ts | 2 + src/store/ether.ts | 21 ++++++ src/{ => utils}/ethers.ts | 15 +++-- src/views/EthersView.vue | 2 +- yarn.lock | 133 +++++++++++++++++++++++++++++++++++++- 7 files changed, 181 insertions(+), 15 deletions(-) create mode 100644 src/store/ether.ts rename src/{ => utils}/ethers.ts (51%) diff --git a/package.json b/package.json index f88c0af..a7ed188 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@headlessui/vue": "^1.7.3", "@heroicons/vue": "^2.0.12", "crc": "^3.8.0", + "pinia": "^2.0.23", "qrcode": "^1.5.1", "vue": "^3.2.41", "vue-router": "^4.1.5" @@ -32,13 +33,13 @@ "autoprefixer": "^10.4.12", "eslint": "^8.22.0", "eslint-plugin-vue": "^9.3.0", + "ethers": "^5.7.2", "npm-run-all": "^4.1.5", "postcss": "^8.4.18", "prettier": "^2.7.1", "tailwindcss": "^3.2.1", "typescript": "~4.7.4", "vite": "^3.1.8", - "vue-tsc": "^1.0.8", - "ethers": "^5.7.2" + "vue-tsc": "^1.0.8" } } diff --git a/src/App.vue b/src/App.vue index b702dc8..b466d0f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,10 +1,14 @@ @@ -17,15 +21,19 @@ const connectMetaMask = () => { width="75" height="75" /> -
+
+ + {{ walletAddress[0] }} +
- + diff --git a/src/components/TopBar.vue b/src/components/TopBar.vue new file mode 100644 index 0000000..ed11d04 --- /dev/null +++ b/src/components/TopBar.vue @@ -0,0 +1,56 @@ + + + + + From fefebcf91ee0adeaa6529afec66d5a11260f4b8b Mon Sep 17 00:00:00 2001 From: RcleydsonR Date: Wed, 16 Nov 2022 01:29:06 -0300 Subject: [PATCH 05/12] add change account event listener --- src/components/TopBar.vue | 2 +- src/utils/ethers.ts | 15 ++++++++++----- src/views/EthersView.vue | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/components/TopBar.vue b/src/components/TopBar.vue index ed11d04..83df9e5 100644 --- a/src/components/TopBar.vue +++ b/src/components/TopBar.vue @@ -8,7 +8,7 @@ const etherStore = useEtherStore(); const { walletAddress } = storeToRefs(etherStore); const connectMetaMask = () => { - ethers.getProvider(); + ethers.connectProvider(); }; const formatWalletAddress = (): string => { diff --git a/src/utils/ethers.ts b/src/utils/ethers.ts index eec9fb6..fcfe099 100644 --- a/src/utils/ethers.ts +++ b/src/utils/ethers.ts @@ -1,23 +1,28 @@ import { useEtherStore } from "@/store/ether"; import { ethers } from "ethers"; -const getProvider = async (): Promise => { +const connectProvider = async (): Promise => { const etherStore = useEtherStore(); const window_ = window as any; + const connection = window_.ethereum; let provider: ethers.providers.Web3Provider | null = null; - if (window_.ethereum) { - provider = new ethers.providers.Web3Provider(window_.ethereum); + if (connection) { + provider = new ethers.providers.Web3Provider(connection); const walletAddress = await provider.send("eth_requestAccounts", []); const balance = await provider.getBalance(walletAddress[0]); etherStore.setProvider(provider); - etherStore.setWalletAddress(walletAddress); + etherStore.setWalletAddress(walletAddress[0]); etherStore.setBalance(Number(balance)); + + connection.on('accountsChanged', (accounts: string[]) => { + etherStore.setWalletAddress(accounts[0]) + }); } else console.log("Browser não suporta conexão com metamask"); return provider; }; -export default { getProvider }; +export default { connectProvider }; diff --git a/src/views/EthersView.vue b/src/views/EthersView.vue index 75c9912..1b2298e 100644 --- a/src/views/EthersView.vue +++ b/src/views/EthersView.vue @@ -2,7 +2,7 @@ import ethers from "../utils/ethers"; const connectMetaMask = () => { - ethers.getProvider().then((web3Provider) => { + ethers.connectProvider().then((web3Provider) => { console.log(web3Provider); }); }; From 85d76c9e4245b0ae463b7a3c304991cb8233bc66 Mon Sep 17 00:00:00 2001 From: RcleydsonR Date: Wed, 16 Nov 2022 01:30:23 -0300 Subject: [PATCH 06/12] add background image to app --- src/App.vue | 8 +++----- src/assets/bg.svg | 36 ++++++++++++++++++++++++++++++++++++ src/assets/main.css | 4 +++- src/components/TopBar.vue | 9 ++++++--- src/utils/ethers.ts | 37 +++++++++++++++++++------------------ 5 files changed, 67 insertions(+), 27 deletions(-) create mode 100644 src/assets/bg.svg diff --git a/src/App.vue b/src/App.vue index 6959787..95fb929 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,11 +1,9 @@ - + diff --git a/src/assets/bg.svg b/src/assets/bg.svg new file mode 100644 index 0000000..4d68b68 --- /dev/null +++ b/src/assets/bg.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/main.css b/src/assets/main.css index bac6c1e..bb364a0 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -5,8 +5,10 @@ #app { margin: 0 auto; - padding: 2rem; + padding: 2rem 4rem; height: 100vh; + background-image: url( './bg.svg' ); + background-size: cover; font-weight: normal; } diff --git a/src/components/TopBar.vue b/src/components/TopBar.vue index 83df9e5..a7a81db 100644 --- a/src/components/TopBar.vue +++ b/src/components/TopBar.vue @@ -14,9 +14,12 @@ const connectMetaMask = () => { const formatWalletAddress = (): string => { const walletAddressLength = walletAddress.value.length; const initialText = walletAddress.value.substring(0, 5); - const finalText = walletAddress.value.substring(walletAddressLength - 6, walletAddressLength - 1); + const finalText = walletAddress.value.substring( + walletAddressLength - 6, + walletAddressLength - 1 + ); return `${initialText} ... ${finalText}`; -} +};