lesson-1_スマコンを呼び出そう
🌅 window.ethereum
を設定する
Webアプリケーション上で、ユーザーがイーサリアムネットワークと通信するためには、Webアプリケーションはユーザーのウォレット情報を取得する必要があります。
これから、あなたのWebアプリケーションにウォレットを接続したユーザーに、スマートコントラクトを呼び出す権限を付与する機能を実装していきます。
- これは、Webサイトへの認証機能です。
下記のように、client/src/components/NftUploader.jsx
の中身を更新します。
NftUploader.jsx
はあなたのWebアプリケーションのフロントエンド機能を果たします。
import { Button } from "@mui/material";
import React from "react";
import { useEffect, useState } from "react";
import ImageLogo from "./image.svg";
import "./NftUploader.css";
const NftUploader = () => {
const checkIfWalletIsConnected = () => {
/*
* ユーザーがMetaMaskを持っているか確認します。
*/
const { ethereum } = window;
if (!ethereum) {
console.log("Make sure you have MetaMask!");
return;
} else {
console.log("We have the ethereum object", ethereum);
}
};
const connectWallet = () => {};
const renderNotConnectedContainer = () => (
<button
onClick={connectWallet}
className="cta-button connect-wallet-button"
>
Connect to Wallet
</button>
);
/*
* ページがロードされたときに useEffect()内の関数が呼び出されます。
*/
useEffect(() => {
checkIfWalletIsConnected();
}, []);
return (
<div className="outerBox">
{renderNotConnectedContainer()}
<div className="title">
<h2>NFTアップローダー</h2>
</div>
<div className="nftUplodeBox">
<div className="imageLogoAndText">
<img src={ImageLogo} alt="imagelogo" />
<p>ここにドラッグ&ドロップしてね</p>
</div>
<input
className="nftUploadInput"
multiple
name="imageURL"
type="file"
accept=".jpg , .jpeg , .png"
/>
</div>
<p>または</p>
<Button variant="contained">
ファイルを選択
<input
className="nftUploadInput"
type="file"
accept=".jpg , .jpeg , .png"
/>
</Button>
</div>
);
};
export default NftUploader;