11"use client" ;
2- import React , { useState } from "react" ;
2+ import React , { useContext , useState } from "react" ;
33import Card from "./Card" ;
44import Image from "next/image" ;
55import { data as defaultData } from "./Card" ;
6+ import { toast , ToastContainer } from "react-toastify" ;
7+ import { DataContext } from "../context/DataContext" ;
68
79const GenerateStats = ( { showStats, setShowStats } : any ) => {
10+ const { datas, setDatas } = useContext ( DataContext ) ;
811 const [ username , setUsername ] = useState ( "" ) ;
912 const [ data , setData ] = useState < any > ( defaultData ) ;
1013
@@ -20,7 +23,7 @@ const GenerateStats = ({ showStats, setShowStats }: any) => {
2023 . then ( ( res ) => res . json ( ) )
2124 . then ( ( data ) => {
2225 setData ( data ) ;
23- console . log ( data ) ;
26+ toast ( "🫡Stats generated successfully" ) ;
2427 } ) ;
2528 } catch ( error ) {
2629 console . error ( "An error occurred. Please try again later" ) ;
@@ -38,7 +41,11 @@ const GenerateStats = ({ showStats, setShowStats }: any) => {
3841 } ) ;
3942 const result = await response . json ( ) ;
4043 if ( result . success ) {
41- console . log ( "Data added to the hall of fame" ) ;
44+ setDatas ( [ ...datas , data ] ) ;
45+ toast ( "🥷Data added to the hall of fame" ) ;
46+ setShowStats ( false ) ;
47+ setData ( defaultData ) ;
48+ setUsername ( "" ) ;
4249 } else {
4350 console . error ( "Error adding data to the hall of fame" ) ;
4451 }
@@ -48,59 +55,63 @@ const GenerateStats = ({ showStats, setShowStats }: any) => {
4855 } ;
4956
5057 return (
51- < div
52- onClick = { ( ) => setShowStats ( false ) }
53- className = { `fixed z-10 top-0 font-sourcecodepro left-0 backdrop-blur-md flex items-center justify-center h-full w-full ${
54- showStats ? "" : "hidden"
55- } `}
56- >
58+ < >
5759 < div
58- onClick = { ( e ) => e . stopPropagation ( ) }
59- className = "px-4 flex items-center justify-center flex-col gap-4"
60+ onClick = { ( ) => (
61+ setShowStats ( false ) , setData ( defaultData ) , setUsername ( "" )
62+ ) }
63+ className = { `fixed z-10 top-0 font-sourcecodepro left-0 backdrop-blur-md flex items-center justify-center h-full w-full ${
64+ showStats ? "" : "hidden"
65+ } `}
6066 >
61- < Card userData = { data } />
62-
63- < form
64- onSubmit = { generateStats }
65- className = "flex items-center justify-center flex-col"
67+ < div
68+ onClick = { ( e ) => e . stopPropagation ( ) }
69+ className = "px-4 flex items-center justify-center flex-col gap-4"
6670 >
67- < div className = "relative " >
68- < input
69- value = { username }
70- onChange = { ( e ) => setUsername ( e . target . value ) }
71- type = "text"
72- placeholder = "Enter your username"
73- className = "bg-[#1f1f1f] pl-10 w-[300px] h-[40px] text-white rounded px-4 py-6 md:text-lg text-base focus:outline-none"
74- />
75- < Image
76- src = "/assets/icons/user.svg"
77- alt = "Search Icon"
78- width = { 24 }
79- height = { 24 }
80- className = "absolute left-2 -translate-y-1/2 top-1/2 "
81- />
82- </ div >
71+ < Card userData = { data } />
72+
73+ < form
74+ onSubmit = { generateStats }
75+ className = "flex items-center justify-center flex-col"
76+ >
77+ < div className = "relative " >
78+ < input
79+ value = { username }
80+ onChange = { ( e ) => setUsername ( e . target . value ) }
81+ type = "text"
82+ placeholder = "Enter your username"
83+ className = "bg-[#1f1f1f] pl-10 w-[300px] h-[40px] text-white rounded px-4 py-6 md:text-lg text-base focus:outline-none"
84+ />
85+ < Image
86+ src = "/assets/icons/user.svg"
87+ alt = "Search Icon"
88+ width = { 24 }
89+ height = { 24 }
90+ className = "absolute left-2 -translate-y-1/2 top-1/2 "
91+ />
92+ </ div >
8393
84- < div className = "flex gap-2 " >
85- < button
86- type = "submit"
87- disabled = { ! username }
88- onClick = { generateStats }
89- className = { `border bg-[#010101] px-4 h-[40px] rounded-md text-white font-semibold text-lg mt-4 ` }
90- >
91- Generate < span className = "hidden sm:inline-block" > Stats</ span >
92- </ button >
93- < button
94- type = "button"
95- onClick = { addToLeetboard }
96- className = " border bg-[#010101] px-4 h-[40px] rounded-md text-white font-semibold text-lg mt-4"
97- >
98- Add to < span className = "" > Leetboard</ span >
99- </ button >
100- </ div >
101- </ form >
94+ < div className = "flex gap-2 " >
95+ < button
96+ type = "submit"
97+ disabled = { ! username }
98+ onClick = { generateStats }
99+ className = { `border bg-[#010101] px-4 h-[40px] rounded-md text-white font-semibold text-lg mt-4 ` }
100+ >
101+ Generate < span className = "hidden sm:inline-block" > Stats</ span >
102+ </ button >
103+ < button
104+ type = "button"
105+ onClick = { addToLeetboard }
106+ className = " border bg-[#010101] px-4 h-[40px] rounded-md text-white font-semibold text-lg mt-4"
107+ >
108+ Add to < span className = "" > Leetboard</ span >
109+ </ button >
110+ </ div >
111+ </ form >
112+ </ div >
102113 </ div >
103- </ div >
114+ </ >
104115 ) ;
105116} ;
106117
0 commit comments