You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
model User {
id String @id @default(cuid())
address String @unique
addressClip String
balance String
name String
status String
tagname String
usdtbalance String
}
model Owned {
id String @id @default(cuid())
address String @unique
image String
name String
description String
}
model Collections {
id String @id @default(cuid())
address String @unique
image String
symbol String
name String
amount String
}
model Info {
id String @id @default(cuid())
name String
email String
}
_prisma_migrations table (information about wallet address)
Local databases(old commit version)
Nfts database /data/nfts.db
Collections table
Owned table
Users database /data/users.db
User table
Info database (don't have file in project)
Example Prisma ORM using
/** Example post request*/app.post('/api/profile',async(req,res)=>{try{constprofileData=req.body;profileData.address=profileData.walletAddress;profileData.addressClip=profileData.walletAddressClip;profileData.balance=profileData.walletBalance;profileData.usdtbalance=profileData.walletUSDTBalance;profileData.name=profileData.walletName;profileData.tagname=profileData.walletTagName;profileData.status=profileData.walletStatus;constuser=awaitprisma.user.create({data: {address: profileData.address,addressClip: profileData.addressClip,balance: profileData.balance,usdtbalance: profileData.usdtbalance,name: profileData.name,tagname: profileData.tagname,status: profileData.status,},});res.json({status: 'success'});console.log(user)}catch(error){console.error('Error in /api/profile:',error);res.status(500).json({status: 'error'});}});
/** Example get request*/app.get('/api/profile',async(req,res)=>{const{ address }=req.query;try{constuser=awaitprisma.user.findFirst({where: { address },});if(user){res.json(user);console.log("User found:",user);}else{res.json({});console.log("No user found with address:",address);}}catch(error){console.error("Error fetching user by address:",error);res.status(500).json({status: 'error',message: error.message});}});
useAccount() hook in Choose.jsx file
import{useAccount}from"wagmi";/** * Connector object from `wagmi`. */const{ connector }=useAccount();/** * Effect hook for handling account connection and disconnection. */useAccount({/** * Callback function for when the account is connected. * * @param {Object} params - Connection parameters. * @param {string} params.address - The connected account address. */onConnect({ address }){console.log("Connected",{ address, connector });localStorage.setItem("userAddress",address);},/** * Callback function for when the account is disconnected. */onDisconnect(){localStorage.userAddress.clear();},});
WalletConnect API, Web3 (wagmi) configuration in Choose.jsx file
/** * Project ID for WalletConnect. */constprojectId=process.env.REACT_APP_WALLETCONNECT||undefined;/** * Metadata for WalletConnect. */constmetaDataName=process.env.REACT_APP_WALLETCONNECT_NAME||"Connect Crypter";constmetaDataDescription=process.env.REACT_APP_WALLETCONNECT_DESCRIPTION||"Connect Crypter login walletConnect";constmetaDataUrl=process.env.REACT_APP_WALLETCONNECT_URL||"https://localhost:5000/";constmetaDataIcons=process.env.REACT_APP_WALLETCONNECT_ICONS||["https://avatars.githubusercontent.com/u/37784886"];/** * Chain configuration for `wagmi`. */constchains=[mainnet];/** * Configuration for `wagmi`. */constwagmiConfig=defaultWagmiConfig({
chains,
projectId,metadata: {name: metaDataName,description: metaDataDescription,url: metaDataUrl,icons: metaDataIcons,},});/** * Create a Web3 modal instance. */constmodal=createWeb3Modal({
wagmiConfig,
projectId,showQrModal: true,
chains,themeVariables: {"--w3m-color-mix": "#010101","--w3m-color-mix-strength": 0,},});
Providers in index.js file:
/** * Import necessary dependencies from React, React Router, and Wagmi. */importReactfrom'react';importReactDOMfrom'react-dom/client';import{BrowserRouter,Routes,Route}from'react-router-dom';import{Suspense}from'react';import{WagmiConfig,createConfig,configureChains,mainnet}from'wagmi';import{publicProvider}from'wagmi/providers/public';/** * Configure Wagmi chains and providers. */const{ publicClient, webSocketPublicClient }=configureChains([mainnet],[publicProvider()]);/** * Create Wagmi config. */constconfig=createConfig({
publicClient,
webSocketPublicClient,});/** * App component. * * @returns {JSX.Element} The app component tree. */exportdefaultfunctionApp(){return(<BrowserRouter><WagmiConfigconfig={config}><Routes><Routeindexexactelement={<Suspensefallback={<Preloader/>}><index_component/></Suspense>}/><Routepath="/file_page"element={<Suspensefallback={<Preloader/>}><file_component/></Suspense>}/></Routes></WagmiConfig></BrowserRouter>);}/** * Render the app to the DOM. */constroot=ReactDOM.createRoot(document.getElementById('root'));root.render(<App/>);
Starting Moralis API
conststartMoralis=async()=>{try{constmoralisApiKey=process.env.REACT_APP_MORALIS;awaitMoralis.start({apiKey: moralisApiKey,});console.log("Moralis started successfully");}catch(error){console.error("Moralis is started:");}};startMoralis();
try{constrequest=awaitfetch("/api/profile",{method: "GET",headers: {"Content-Type": "application/json",},});if(!request.ok||!request.ok){thrownewError("Network response was not ok");}constdata=awaitrequest.json();console.log(walletAddress,walletBalance,walletUSDTBalance,walletName,walletTagName,walletStatus,walletAddressClip)}catch(error){console.error("Error fetching data",error);}
/* @example avatar */constsetPictures=()=>{const[avatarImage,setAvatarImage]=useState(null);constdefaultImage='DEFAULT_IMAGE_Url';constsrcImage=avatarImage ?
URL.createObjectURL(avatarImage) :
defaultImagereturn(<>{/* view image */}<imgsrc={srcImage}alt=""class=""/>{/* label button for set image */}<labelclassName="content__photos-upload pointer font-button color-darken">
upload
</label>{/* input for set avatar */}<inputtype="file"id="avatar"name="image_target"className="d-none"onChange={(event)=>{console.log(event.target?.files[0]);setAvatarImage(event.target?.files[0]);}}/></>)}
class ImageFactory for set picture in input
/** * A class that provides utility functions for loading images */classImageFactory{/** * The default image URL to use when no URL is provided * @type {string} */staticdefaultImage="https://i.ibb.co/PWhrW7k/Frame-1361.jpg";/** * Loads an image from a URL * @param {string|null} url - The URL of the image to load * @returns {string} The URL of the loaded image */staticloadImage(url){returnurl ? URL.createObjectURL(url) : this.defaultImage;}}