From 98e18872be56fe03ab38758b44f7f323811d08bf Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sun, 9 Feb 2025 09:34:58 -0500 Subject: [PATCH 1/8] pin mochi --- bun.lockb | Bin 630370 -> 630370 bytes src/components/Token/Grid.tsx | 20 ++++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/bun.lockb b/bun.lockb index 0cd88f15d74c471d9ce50ebfe8822cb0610d1587..ed31571abb2f5399d6576a86d290b3a334e2f3d0 100755 GIT binary patch delta 48 zcmaE~NA1xbwT2eP7N!>F7M2#)Eo=`BI2hxM^bC#kEZSchumLeU5OZvQX~0>T3jn=i B5xW2Y delta 48 wcmaE~NA1xbwT2eP7N!>F7M2#)Eo=`BIG7k9p#7x*8xXStF~|0o2Aq|-0Gn+PH2?qr diff --git a/src/components/Token/Grid.tsx b/src/components/Token/Grid.tsx index f9f46cb..5c31d37 100644 --- a/src/components/Token/Grid.tsx +++ b/src/components/Token/Grid.tsx @@ -23,6 +23,14 @@ export const TokenGrid: FC = ({ category, query, address }) => { refetchOnWindowFocus: false, }); + const { data: pinnedToken, isLoading: pinnedTokenIsLoading } = api.coingecko.getTokenCardDataById.useQuery({ + id: 'mochi-thecatcoin', + }, { + enabled: !!query, + refetchOnMount: false, + refetchOnWindowFocus: false, + }); + const { data: searchedTokens, isLoading: searchIsLoading } = api.coingecko.searchTokens.useQuery({ query: query ?? '', }, { @@ -82,6 +90,14 @@ export const TokenGrid: FC = ({ category, query, address }) => { return { ...token, address: baseAddress }; }).filter((token) => token.address); + if (pinnedToken) { + const pinnedTokenAddress = tokenAddresses?.find((t) => t.id === pinnedToken.id)?.platforms?.base; + scopedTokens?.unshift({ + ...pinnedToken, + address: pinnedTokenAddress, + }); + } + // if there is a search, filter the tokens if (query) { const filteredTokens = !scopedTokens ? [] : scopedTokens.filter((token) => @@ -112,14 +128,14 @@ export const TokenGrid: FC = ({ category, query, address }) => { // return paginated tokens return scopedTokens?.slice(indexOfFirstToken, indexOfLastToken); - }, [address, indexOfFirstToken, indexOfLastToken, query, searchedTokenAddresses, searchedTokens, tokenAddresses, tokens, tokensOwnedByAddress]); + }, [address, indexOfFirstToken, indexOfLastToken, query, searchedTokenAddresses, searchedTokens, tokenAddresses, tokens, pinnedToken]); const { data: fallbackToken, isLoading: fallbackTokenIsLoading } = api.coingecko.getTokenCardDataById.useQuery({ - id: 'pawthereum-2', + id: 'mochi-thecatcoin', }, { refetchOnMount: false, refetchOnWindowFocus: false, From dc72ade2bf58466c886424e7bf42f72872b4ea49 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sun, 9 Feb 2025 09:45:56 -0500 Subject: [PATCH 2/8] sponsor gas at 10 and above gas token --- src/components/Cart.tsx | 14 ++++++++++---- src/components/Token/Grid.tsx | 4 ++-- src/constants/addresses.ts | 3 ++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/components/Cart.tsx b/src/components/Cart.tsx index 3a392c8..9d2c78e 100644 --- a/src/components/Cart.tsx +++ b/src/components/Cart.tsx @@ -11,7 +11,7 @@ import { client } from '~/providers/Thirdweb'; import { useActiveAccount, useActiveWallet } from 'thirdweb/react'; import { DEFAULT_CHAIN } from '~/constants/chain'; import { Connect } from '~/components/Connect'; -import { parseAbiItem, encodeFunctionData } from "viem"; +import { parseAbiItem, encodeFunctionData, isAddressEqual } from "viem"; import { flattenObject } from '~/helpers/flattenObject'; import Donation from '~/components/Donation'; import { REFERRAL_CODE_NFT } from '~/constants/addresses'; @@ -20,6 +20,7 @@ import ReferralChip from '~/components/Referral/ReferralChip'; import posthog from "posthog-js"; import { env } from '~/env'; import { config } from '~/providers/Wagmi'; +import { GAS_FREE_TOKEN } from '~/constants/addresses'; const Cart: FC = () => { const { showCallsStatus } = useShowCallsStatus({ config }); @@ -136,9 +137,14 @@ const Cart: FC = () => { auxiliaryFunds: { supported: true }, - paymasterService: { - url: env.NEXT_PUBLIC_PAYMASTER_URL, - } + ...(cart.some(item => + isAddressEqual(item.address, GAS_FREE_TOKEN) && + item.usdAmountDesired >= 10 + ) ? { + paymasterService: { + url: env.NEXT_PUBLIC_PAYMASTER_URL, + } + } : {}) } }, { onSuccess(tx) { diff --git a/src/components/Token/Grid.tsx b/src/components/Token/Grid.tsx index 5c31d37..96bae1c 100644 --- a/src/components/Token/Grid.tsx +++ b/src/components/Token/Grid.tsx @@ -23,7 +23,7 @@ export const TokenGrid: FC = ({ category, query, address }) => { refetchOnWindowFocus: false, }); - const { data: pinnedToken, isLoading: pinnedTokenIsLoading } = api.coingecko.getTokenCardDataById.useQuery({ + const { data: pinnedToken } = api.coingecko.getTokenCardDataById.useQuery({ id: 'mochi-thecatcoin', }, { enabled: !!query, @@ -128,7 +128,7 @@ export const TokenGrid: FC = ({ category, query, address }) => { // return paginated tokens return scopedTokens?.slice(indexOfFirstToken, indexOfLastToken); - }, [address, indexOfFirstToken, indexOfLastToken, query, searchedTokenAddresses, searchedTokens, tokenAddresses, tokens, pinnedToken]); + }, [tokens, pinnedToken, query, address, indexOfFirstToken, indexOfLastToken, tokenAddresses, searchedTokens, searchedTokenAddresses, tokensOwnedByAddress]); const { diff --git a/src/constants/addresses.ts b/src/constants/addresses.ts index 262039c..a0c8049 100644 --- a/src/constants/addresses.ts +++ b/src/constants/addresses.ts @@ -1,3 +1,4 @@ export const REFERRAL_CODE_NFT = "0xDb827803A886e88e66Ce98704d72AFC515ef018f"; export const REFERRAL_CODE_MINTER = "0xA473533c54D105C6334fE06c8624f7dfbb09ba25"; -export const BANNER_ADVERTISEMENT = '0x4047f984f20f174919bffbf0c5f347270d13a112'; \ No newline at end of file +export const BANNER_ADVERTISEMENT = '0x4047f984f20f174919bffbf0c5f347270d13a112'; +export const GAS_FREE_TOKEN = '0xf6e932ca12afa26665dc4dde7e27be02a7c02e50'; \ No newline at end of file From 293ced233be31a4626c5ad052303f3379d87b8e2 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sun, 9 Feb 2025 09:47:49 -0500 Subject: [PATCH 3/8] hide referral banner --- src/pages/index.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 4f287a4..f5a7db5 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -3,7 +3,7 @@ import Head from "next/head"; import { type FC, useState } from "react"; import Logo from "~/components/Logo"; import NftCollectionsGrid from "~/components/Nft/CollectionsGrid"; -import RefferedBanner from "~/components/Referral/ReferredBanner"; +// import RefferedBanner from "~/components/Referral/ReferredBanner"; import TokenGrid from "~/components/Token/Grid"; import useDebounce from "~/hooks/useDebounce"; @@ -69,7 +69,9 @@ const HomePage: FC = ({ referralNft, category: defaultCateg ))}
- + {/* UNCOMMENT THIS TO SHOW THE REFERRAL BANNER + + */}
From 94530a18fb11cfaed7310df62672fe82dc0ea681 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sun, 9 Feb 2025 09:53:38 -0500 Subject: [PATCH 4/8] fix donation img --- src/components/Donation.tsx | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/components/Donation.tsx b/src/components/Donation.tsx index 89caa85..11564c4 100644 --- a/src/components/Donation.tsx +++ b/src/components/Donation.tsx @@ -20,7 +20,7 @@ export const Donation: FC = () => { const [offset, setOffset] = useState(0); const CAUSES_PER_PAGE = 5; const { data: causeData, isLoading: causesIsLoading } = api.endaoment.search.useQuery({ - searchTerm: debounceQuery ?? 'paws', + searchTerm: debounceQuery ?? 'cats', claimedStatus: 'claimed', count: CAUSES_PER_PAGE, offset: offset, @@ -67,19 +67,36 @@ export const Donation: FC = () => { }); }; + const CauseImage = ({ cause }: { cause: EndaomentOrg }) => { + const [error, setError] = useState(false); + if (error) { + return ( +
+ ); + } + return ( + {cause.name} setError(true)} + /> + ); + }; + const Cause: FC<{ cause: EndaomentOrg }> = ({ cause }) => { const [isExpanded, setIsExpanded] = useState(false); return (
- {cause.name} +
+
+ +
+
setIsExpanded(!isExpanded)} From 68fcd3194cf75c527bf497d845dcd936126b424b Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sun, 9 Feb 2025 10:00:44 -0500 Subject: [PATCH 5/8] 1M gas free token balance threshold for gas --- src/components/Cart.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/components/Cart.tsx b/src/components/Cart.tsx index 9d2c78e..999170a 100644 --- a/src/components/Cart.tsx +++ b/src/components/Cart.tsx @@ -8,7 +8,7 @@ import { useCartContext } from '~/contexts/Cart'; import { api } from '~/utils/api'; import { useSendCalls, useShowCallsStatus } from 'wagmi/experimental' import { client } from '~/providers/Thirdweb'; -import { useActiveAccount, useActiveWallet } from 'thirdweb/react'; +import { useActiveAccount, useActiveWallet, useWalletBalance } from 'thirdweb/react'; import { DEFAULT_CHAIN } from '~/constants/chain'; import { Connect } from '~/components/Connect'; import { parseAbiItem, encodeFunctionData, isAddressEqual } from "viem"; @@ -22,12 +22,23 @@ import { env } from '~/env'; import { config } from '~/providers/Wagmi'; import { GAS_FREE_TOKEN } from '~/constants/addresses'; +const GAS_FREE_TOKEN_BALANCE_THRESHOLD = 1_000_000n; // 1M gas free tokens + const Cart: FC = () => { const { showCallsStatus } = useShowCallsStatus({ config }); const { sendCalls } = useSendCalls(); const { cart, referralCode, updateItem, deleteItem } = useCartContext(); const wallet = useActiveWallet(); const account = useActiveAccount(); + const { data: gasFreeTokenBalance } = useWalletBalance({ + address: account?.address, + tokenAddress: GAS_FREE_TOKEN, + chain: DEFAULT_CHAIN, + client, + }); + const meetsGasFreeTokenBalanceThreshold = useMemo(() => { + return gasFreeTokenBalance && gasFreeTokenBalance.value >= GAS_FREE_TOKEN_BALANCE_THRESHOLD; + }, [gasFreeTokenBalance]); const { data: etherPrice } = api.dex.getEtherPrice.useQuery({ chainId: base.id, }); @@ -140,7 +151,7 @@ const Cart: FC = () => { ...(cart.some(item => isAddressEqual(item.address, GAS_FREE_TOKEN) && item.usdAmountDesired >= 10 - ) ? { + ) || meetsGasFreeTokenBalanceThreshold ? { paymasterService: { url: env.NEXT_PUBLIC_PAYMASTER_URL, } From 4619a17bc372fb9235f28df0b61f621d02fc33f7 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sun, 9 Feb 2025 10:02:30 -0500 Subject: [PATCH 6/8] remove from footer --- public/images/github.png | Bin 734 -> 0 bytes public/images/keren.webp | Bin 6216 -> 0 bytes public/images/onchainsummer.png | Bin 53730 -> 0 bytes src/components/Footer.tsx | 30 +++++------------------------- 4 files changed, 5 insertions(+), 25 deletions(-) delete mode 100644 public/images/github.png delete mode 100644 public/images/keren.webp delete mode 100644 public/images/onchainsummer.png diff --git a/public/images/github.png b/public/images/github.png deleted file mode 100644 index d6ca946b9095f04331c1174e34ff41c54fdda18b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 734 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
_l@Z~AO4Ka>PgPUB18!$)AG* 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

HaYACI@U2LmrMe^H&;*^ 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 diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index dedc006..8643043 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -12,14 +12,11 @@ export const Footer: FC = () => { label: "About Smart Wallet", href: "https://www.smartwallet.dev?utm_source=basetokenstore", }, - { - label: "Buy an Ad", - href: "/advertisement/create", - }, - { - label: "Onchain Summer", - href: "https://www.base.org/onchainsummer?utm_source=basetokenstore", - }, + // UNCOMMENT THIS TO SHOW THE AD LINk + // { + // label: "Buy an Ad", + // href: "/advertisement/create", + // }, { label: "Build on Base", href: "https://www.base.org?utm_source=basetokenstore", @@ -66,23 +63,6 @@ export const Footer: FC = () => { ))}

- - Onchain Summer - - - Github -
- Open source license - Clone on GitHub -
- - - Keren: Report an issue -
- Report an issue - by $keren -
-
From 0f1394a2291ac99d52bef5100b64e111c4a46ad5 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sun, 9 Feb 2025 10:03:56 -0500 Subject: [PATCH 7/8] remove the ocs text --- public/images/full-width-text.svg | 16 ---------------- src/components/Footer.tsx | 1 - src/components/Layout.tsx | 1 - 3 files changed, 18 deletions(-) delete mode 100644 public/images/full-width-text.svg diff --git a/public/images/full-width-text.svg b/public/images/full-width-text.svg deleted file mode 100644 index 1efeb75..0000000 --- a/public/images/full-width-text.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index 8643043..f4c78d6 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -66,7 +66,6 @@ export const Footer: FC = () => {
-
) }; diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index 54d9a84..f2f761d 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -30,7 +30,6 @@ export const Layout: FC = ({ children }) => {
-
{todaysAdIsNotCensored && (
From 9f9c14d601aac834127e707270e225da84ac4a86 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Sun, 9 Feb 2025 12:17:44 -0500 Subject: [PATCH 8/8] prevent opensea dupes --- src/components/Nft/ListingsGrid.tsx | 3 + src/server/api/routers/opensea.ts | 85 ++++++++++++++++++++--------- 2 files changed, 63 insertions(+), 25 deletions(-) diff --git a/src/components/Nft/ListingsGrid.tsx b/src/components/Nft/ListingsGrid.tsx index ef2d241..21b7b5d 100644 --- a/src/components/Nft/ListingsGrid.tsx +++ b/src/components/Nft/ListingsGrid.tsx @@ -34,11 +34,14 @@ export const ListingsGrid: FC = ({ collectionSlug }) => { t.order_hash === listing.order_hash )) ); + console.log({uniqueListings: JSON.stringify(uniqueListings)}) return uniqueListings; }); } }, [listingsData]); + console.log({listings, listingsData}) + return ( <>
diff --git a/src/server/api/routers/opensea.ts b/src/server/api/routers/opensea.ts index 77071ee..aec476d 100644 --- a/src/server/api/routers/opensea.ts +++ b/src/server/api/routers/opensea.ts @@ -69,33 +69,68 @@ export const openSeaRouter = createTRPCRouter({ cursor: z.string().optional(), })) .query(async ({ input }) => { - const { collection, limit = 100, cursor } = input; - const url = new URL(`https://api.opensea.io/api/v2/listings/collection/${collection}/best`); - // url params for limit and next - url.searchParams.append('limit', limit.toString()); - if (cursor) { - url.searchParams.append('next', cursor); + const { collection, limit = 100, cursor: initialCursor } = input; + + // Helper function to fetch and process a page of listings + async function fetchListingsPage(cursor?: string): Promise<{ + listings: OpenSeaListingResponse['listings']; + next?: string; + }> { + const url = new URL(`https://api.opensea.io/api/v2/listings/collection/${collection}/best`); + url.searchParams.append('limit', limit.toString()); + if (cursor) { + url.searchParams.append('next', cursor); + } + const response = await fetch(url.toString(), { + method: 'GET', + headers: { + 'accept': 'application/json', + 'x-api-key': env.OPENSEA_API_KEY, + }, + }); + return response.json() as Promise; } - const response = await fetch(url.toString(), { - method: 'GET', - headers: { - 'accept': 'application/json', - 'x-api-key': env.OPENSEA_API_KEY, - }, - }); - const data = await response.json() as OpenSeaListingResponse; - return { - ...data, - listings: data.listings.filter(listing => - // only return basic listings that can be bought right away - listing.type === 'basic' && - // only return listings that are selling one item at a time - listing.protocol_data.parameters.offer.length === 1 && - // only return listings that are charging in eth - listing.protocol_data.parameters.consideration.every( - consideration => consideration.itemType === 0 + + // Map to store the cheapest listing for each token + const cheapestByToken = new Map(); + let nextCursor = initialCursor; + + // Keep fetching until we have enough listings or no more pages + while (cheapestByToken.size < limit) { + const page = await fetchListingsPage(nextCursor); + + // Filter and process listings + page.listings + .filter(listing => + // only return basic listings that can be bought right away + listing.type === 'basic' && + // only return listings that are selling one item at a time + listing.protocol_data.parameters.offer.length === 1 && + // only return listings that are charging in eth + listing.protocol_data.parameters.consideration.every( + consideration => consideration.itemType === 0 + ) ) - ), + .forEach(listing => { + const identifierOrCriteria = listing.protocol_data.parameters.offer[0]?.identifierOrCriteria; + if (!identifierOrCriteria) return; + + const currentPrice = BigInt(listing.price.current.value); + const existingListing = cheapestByToken.get(identifierOrCriteria); + + if (!existingListing || currentPrice < BigInt(existingListing.price.current.value)) { + cheapestByToken.set(identifierOrCriteria, listing); + } + }); + + // Break if no more pages + if (!page.next) break; + nextCursor = page.next; + } + + return { + listings: Array.from(cheapestByToken.values()).slice(0, limit), + next: nextCursor, }; }), getPurchaseEncodedData: publicProcedure