Skip to content

Commit dd6463f

Browse files
committed
feat: add address filtering for current torch holder display
1 parent dbd813e commit dd6463f

File tree

3 files changed

+56
-5
lines changed

3 files changed

+56
-5
lines changed

app/[locale]/10years/_components/CurrentTorchHolderCard.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ import {
2525

2626
interface CurrentTorchHolderCardProps {
2727
currentHolder: TorchHolderMetadata | null
28+
isFiltered?: boolean
2829
className?: string
2930
}
3031

3132
const CurrentTorchHolderCard = ({
3233
currentHolder,
34+
isFiltered = false,
3335
className,
3436
}: CurrentTorchHolderCardProps) => {
3537
return (
@@ -92,6 +94,16 @@ const CurrentTorchHolderCard = ({
9294
</BaseLink>
9395
</div>
9496
</div>
97+
) : isFiltered ? (
98+
<div className="flex flex-col items-center gap-4 text-center">
99+
<div className="text-2xl font-bold text-gray-500">
100+
🤐 Unknown Holder
101+
</div>
102+
<div className="text-lg">
103+
The current torch holder&apos;s identity is not publicly
104+
available.
105+
</div>
106+
</div>
95107
) : (
96108
<div className="flex flex-col items-center gap-4 text-center">
97109
<div className="text-2xl font-bold text-red-500">

app/[locale]/10years/page.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ import {
4343
import { fetch10YearEvents } from "@/lib/api/fetch10YearEvents"
4444
import { fetch10YearStories } from "@/lib/api/fetch10YearStories"
4545
import { fetchTorchHolders } from "@/lib/api/fetchTorchHolders"
46-
import { getCurrentHolderAddress, getHolders } from "@/lib/torch"
46+
import {
47+
getCurrentHolderAddress,
48+
getHolders,
49+
isAddressFiltered,
50+
} from "@/lib/torch"
4751
import TenYearLogo from "@/public/images/10-year-anniversary/10-year-logo.png"
4852

4953
export const dynamic = "force-static"
@@ -99,9 +103,15 @@ const Page = async ({ params }: { params: Promise<{ locale: Lang }> }) => {
99103
const currentHolderAddress = await getCurrentHolderAddress()
100104
const isBurned =
101105
currentHolderAddress === "0x0000000000000000000000000000000000000000"
102-
const currentHolder = isBurned
103-
? null
104-
: torchHolderMap[currentHolderAddress.toLowerCase()]
106+
107+
// Check if current holder should be filtered
108+
const isCurrentHolderFiltered =
109+
!isBurned && isAddressFiltered(currentHolderAddress)
110+
111+
const currentHolder =
112+
isBurned || isCurrentHolderFiltered
113+
? null
114+
: torchHolderMap[currentHolderAddress.toLowerCase()]
105115
const torchHolders = await getHolders(torchHolderMap)
106116

107117
return (
@@ -132,6 +142,7 @@ const Page = async ({ params }: { params: Promise<{ locale: Lang }> }) => {
132142
<CurrentTorchHolderCard
133143
className="w-[420px]"
134144
currentHolder={currentHolder}
145+
isFiltered={isCurrentHolderFiltered}
135146
/>
136147
</div>
137148
</div>

src/lib/torch/index.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@ const TORCH_CONTRACT_ADDRESS = Torch.address as Address
99
const TORCH_ABI = Torch.abi
1010
const TORCH_BLOCK_NUMBER = Torch.blockNumber
1111

12+
// Addresses to filter from the UI (show as "Unknown Holder")
13+
const FILTERED_ADDRESSES: string[] = [
14+
// Add addresses here that should be hidden from the UI
15+
// These addresses will show as "Unknown Holder" instead of their real metadata
16+
// Example: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266".toLowerCase(),
17+
]
18+
19+
// Helper function to check if an address should be filtered
20+
export const isAddressFiltered = (address: string): boolean => {
21+
return FILTERED_ADDRESSES.includes(address.toLowerCase())
22+
}
23+
1224
export const config = createConfig({
1325
chains: [hardhat],
1426
transports: {
@@ -113,6 +125,17 @@ const getHolderEvents = async (
113125
}
114126
}
115127

128+
// If the address is filtered, show as unknown holder
129+
if (isAddressFiltered(event.to)) {
130+
return {
131+
address: event.to,
132+
name: `Unknown Holder (${formatAddress(event.to)})`,
133+
role: "Previous torch holder",
134+
twitter: "",
135+
event,
136+
}
137+
}
138+
116139
// If we have metadata for this holder, use it
117140
if (holderMetadata) {
118141
return {
@@ -141,7 +164,12 @@ export const getHolders = async (
141164
transferEvents
142165
)
143166

144-
return torchHoldersEvents
167+
// Filter out events where the address is in the filtered list
168+
const filteredHoldersEvents = torchHoldersEvents.filter(
169+
(holder) => !isAddressFiltered(holder.address)
170+
)
171+
172+
return filteredHoldersEvents
145173
}
146174

147175
export const getCurrentHolderAddress = async () => {

0 commit comments

Comments
 (0)