diff --git a/app/events/page.tsx b/app/events/page.tsx index 8f61e8d..0784c0a 100644 --- a/app/events/page.tsx +++ b/app/events/page.tsx @@ -62,7 +62,7 @@ const fetchEvents = (): Event[] => { const EventsPage: React.FC = () => { const [events, setEvents] = useState([]); const [filteredEvents, setFilteredEvents] = useState([]); - const [searchQuery, setSearchQuery] = useState(""); + const [searchQuery, setSearchQuery] = useState(''); const [hoveredEventId, setHoveredEventId] = useState(null); const [sortOption, setSortOption] = useState(''); const [filterOptions, setFilterOptions] = useState([]); @@ -81,14 +81,16 @@ const EventsPage: React.FC = () => { }, []); const SearchBox = () => { - setSearchQuery(useSearchParams().get("q") || ""); - return setSearchQuery(e.target.value)} - className="search-bar mt-4 p-2 border border-gray-300 rounded w-full max-w-md" - /> + setSearchQuery(useSearchParams().get('q') || ''); + return ( + setSearchQuery(e.target.value)} + className="search-bar mt-4 p-2 border border-gray-300 rounded w-full max-w-md" + /> + ); }; useEffect(() => { @@ -177,16 +179,18 @@ const EventsPage: React.FC = () => {
- setSearchQuery(e.target.value)} - className="search-bar mt-4 p-2 border border-gray-300 rounded w-full max-w-md" - /> - }> + setSearchQuery(e.target.value)} + className="search-bar mt-4 p-2 border border-gray-300 rounded w-full max-w-md" + /> + } + >
diff --git a/components/custom/FeaturedEvent.tsx b/components/custom/FeaturedEvent.tsx index 50ab18d..4d283a4 100644 --- a/components/custom/FeaturedEvent.tsx +++ b/components/custom/FeaturedEvent.tsx @@ -1,44 +1,51 @@ 'use client'; import React from 'react'; import { - Card, - CardHeader, - CardFooter, - CardTitle, - CardDescription, - CardContent, + Card, + CardHeader, + CardFooter, + CardTitle, + CardDescription, + CardContent, } from '@/components/ui/card'; interface props { - name: string; - description: string; - location: string; - eventStartDate: number; - eventHost: string; - imageURL: string | null; + name: string; + description: string; + location: string; + eventStartDate: number; + eventHost: string; + imageURL: string | null; } const FeaturedEvent = ({ - name, description, location, eventStartDate, eventHost, imageURL + name, + description, + location, + eventStartDate, + eventHost, + imageURL, }: props) => { - return - - {imageURL && {name}} - - {name} - - - {location}
- {new Date(eventStartDate*1000).toLocaleString()} -
-
- - {description} - - - Host: {eventHost.substring(0, 8)}...{eventHost.substring(eventHost.length-3)} - + return ( + + + {imageURL && {name}} + {name} + + {location} +
+ {new Date(eventStartDate * 1000).toLocaleString()} +
+
+ {description} + + + Host: {eventHost.substring(0, 8)}... + {eventHost.substring(eventHost.length - 3)} + +
-} + ); +}; -export default FeaturedEvent; \ No newline at end of file +export default FeaturedEvent; diff --git a/components/scripts/MetaMask.tsx b/components/scripts/MetaMask.tsx index 9b52ed0..5eb61d9 100644 --- a/components/scripts/MetaMask.tsx +++ b/components/scripts/MetaMask.tsx @@ -1,7 +1,7 @@ 'use client'; import React, { useEffect, useState } from 'react'; -import { useSDK, MetaMaskProvider } from '@metamask/sdk-react'; +import { WalletIcon } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Popover, @@ -9,54 +9,87 @@ import { PopoverTrigger, } from '@/components/ui/popover'; -function WalletIcon(props: React.SVGProps) { - return ( - - - - - - ); -} - -function formatAddress(address: string | undefined): string { - if (!address) return ''; - return `${address.slice(0, 6)}...${address.slice(-4)}`; +declare global { + interface Window { + ethereum?: { + isMetaMask?: boolean; + request: (request: { + method: string; + params?: Array; // Use `unknown` instead of `any` + }) => Promise; // Specify a more accurate return type if possible + }; + } } function MetaMaskConnect() { - const { sdk, connected, connecting, account } = useSDK(); - const [isConnected, setIsConnected] = useState(false); + const [isConnected, setIsConnected] = useState(false); + const [account, setAccount] = useState(null); + // Initial check on load useEffect(() => { - setIsConnected(connected); - }, [connected]); + const checkConnection = async () => { + if (typeof window !== 'undefined' && window.ethereum) { + try { + // Check if there are any accounts already connected + const accounts = (await window.ethereum.request({ + method: 'eth_accounts', + })) as string[]; + if (accounts && accounts.length > 0) { + setIsConnected(true); + setAccount(accounts[0]); + localStorage.setItem('isConnected', JSON.stringify(true)); + localStorage.setItem('account', accounts[0]); + } else { + // No connected accounts found; check `localStorage` + const storedIsConnected = JSON.parse( + localStorage.getItem('isConnected') || 'false' + ); + const storedAccount = localStorage.getItem('account') || null; + setIsConnected(storedIsConnected); + setAccount(storedAccount); + } + } catch (error) { + console.error('Error checking MetaMask connection:', error); + } + } + }; + + checkConnection(); + }, []); + + // Update localStorage whenever connection state changes + useEffect(() => { + if (typeof window !== 'undefined') { + localStorage.setItem('isConnected', JSON.stringify(isConnected)); + localStorage.setItem('account', account || ''); + } + }, [isConnected, account]); const connect = async () => { try { - await sdk?.connect(); - setIsConnected(true); - } catch (err) { - console.warn(`No accounts found`, err); + const accounts = (await window.ethereum?.request({ + method: 'eth_requestAccounts', + })) as string[]; + if (accounts && accounts.length > 0) { + setIsConnected(true); + setAccount(accounts[0]); + localStorage.setItem('isConnected', JSON.stringify(true)); + localStorage.setItem('account', accounts[0]); + } + } catch (error) { + console.error('MetaMask connection failed:', error); } }; - const disconnect = () => { - if (sdk) { - sdk.terminate(); - setIsConnected(false); - } + const disconnect = async () => { + setIsConnected(false); + setAccount(null); + localStorage.setItem('isConnected', JSON.stringify(false)); + localStorage.removeItem('account'); + await window.ethereum?.request({ + method: 'wallet_revokePermissions', + params: [{ eth_accounts: {} }], + }); }; return ( @@ -65,7 +98,7 @@ function MetaMaskConnect() { @@ -80,7 +113,6 @@ function MetaMaskConnect() { ) : (