From fea1604f6f0cc78cfce5776d8797da9ab1fbaba4 Mon Sep 17 00:00:00 2001 From: zbcoding Date: Sun, 5 Oct 2025 03:04:12 -0500 Subject: [PATCH 1/3] Add PillarDAO app --- README.md | 2 + nixpacks.toml | 34 +++ .../pillardao/components/AnimatedTitle.tsx | 67 +++++ src/apps/pillardao/components/CopyHelp.tsx | 87 ++++++ .../pillardao/components/MembershipPanel.tsx | 223 +++++++++++++++ .../pillardao/components/OnboardingPanel.tsx | 160 +++++++++++ src/apps/pillardao/components/Styles.tsx | 196 ++++++++++++++ src/apps/pillardao/components/VotingPanel.tsx | 256 ++++++++++++++++++ src/apps/pillardao/icon.png | Bin 0 -> 1856 bytes .../pillardao/images/pillar-dao-image.png | Bin 0 -> 2026 bytes .../images/pillar-dao-member-nft.png | Bin 0 -> 32814 bytes .../images/wallet-connect-example.png | Bin 0 -> 102518 bytes .../images/wallet-connect-sign-in-example.png | Bin 0 -> 26535 bytes src/apps/pillardao/index.test.tsx | 192 +++++++++++++ src/apps/pillardao/index.tsx | 180 ++++++++++++ src/apps/pillardao/manifest.json | 23 ++ src/containers/Main.tsx | 5 +- vite.config.js => vite.config.mjs | 0 wrangler.jsonc | 8 + 19 files changed, 1431 insertions(+), 2 deletions(-) create mode 100644 nixpacks.toml create mode 100644 src/apps/pillardao/components/AnimatedTitle.tsx create mode 100644 src/apps/pillardao/components/CopyHelp.tsx create mode 100644 src/apps/pillardao/components/MembershipPanel.tsx create mode 100644 src/apps/pillardao/components/OnboardingPanel.tsx create mode 100644 src/apps/pillardao/components/Styles.tsx create mode 100644 src/apps/pillardao/components/VotingPanel.tsx create mode 100644 src/apps/pillardao/icon.png create mode 100644 src/apps/pillardao/images/pillar-dao-image.png create mode 100644 src/apps/pillardao/images/pillar-dao-member-nft.png create mode 100644 src/apps/pillardao/images/wallet-connect-example.png create mode 100644 src/apps/pillardao/images/wallet-connect-sign-in-example.png create mode 100644 src/apps/pillardao/index.test.tsx create mode 100644 src/apps/pillardao/index.tsx create mode 100644 src/apps/pillardao/manifest.json rename vite.config.js => vite.config.mjs (100%) create mode 100644 wrangler.jsonc diff --git a/README.md b/README.md index 83d1bb30..b41eb496 100644 --- a/README.md +++ b/README.md @@ -21,3 +21,5 @@ file within the `src/apps` directory to learn how to get started. ⚠️ **Encountering 429 errors?** You may have hit a rate limit for the Etherspot service. PillarX will keep trying but it might be easier for you to register your own API keys for the Etherspot Bundler API and Etherspot Data Service API via the [Portal](https://portal.etherspot.io). ⚠️ **Privy encountering login limits?** You may have hit the maximum user limit for free accounts on Privy. Feel free to [register for Privy](https://dashboard.privy.io) and create an app. This will give you your own App ID which you can use in the `.env` file. + +⚠️ **ReOwn Account Needed For WalletConnect features** Sign up for a [ReOwn account](https://reown.com/), then copy your Project ID into the `.env` file. diff --git a/nixpacks.toml b/nixpacks.toml new file mode 100644 index 00000000..dc3f039a --- /dev/null +++ b/nixpacks.toml @@ -0,0 +1,34 @@ +providers = ["node"] + +# Global environment variables for low-memory builds/runtime +[variables] +NODE_ENV = "production" +NODE_OPTIONS = "--max-old-space-size=2048" +# Keep npm lean and quiet +NPM_CONFIG_FUND = "false" +NPM_CONFIG_AUDIT = "false" +CI = "true" + +# Tools available in the image +[phases.setup] +nixPkgs = [ + "nodejs_20", # Correct Nix package name (underscore, not dash) + "caddy" # Lightweight static file server for runtime +] + +# Deterministic, memory-friendly install +[phases.install] +cmds = [ + # Use npm ci (respects package-lock), avoid extra network/audit noise + "npm ci --prefer-offline --no-audit --no-fund" +] + +# Build the static site (outputs to ./build via vite.config.mjs) +[phases.build] +cmds = [ + "npm run build" +] + +# Serve the built assets with Caddy (very low memory footprint) +[start] +cmd = "sh -c 'caddy file-server --root build --listen :${PORT:-3000}'" diff --git a/src/apps/pillardao/components/AnimatedTitle.tsx b/src/apps/pillardao/components/AnimatedTitle.tsx new file mode 100644 index 00000000..70a4f0ce --- /dev/null +++ b/src/apps/pillardao/components/AnimatedTitle.tsx @@ -0,0 +1,67 @@ +import React, { useEffect, useState } from 'react'; +import { animated, useTrail } from '@react-spring/web'; +import styled from 'styled-components'; + +type AnimatedTitleProps = { + text: string; +}; + +const AnimatedTitle: React.FC = ({ text }) => { + const [isDisplaying, setIsDisplaying] = useState(true); + const letters = text.split(''); + + const trail = useTrail(letters.length, { + from: { opacity: 0, transform: 'translateY(32px)' }, + to: { + opacity: isDisplaying ? 1 : 0, + transform: isDisplaying ? 'translateY(0px)' : 'translateY(32px)', + }, + config: { tension: 210, friction: 20, mass: 1, duration: 25 }, + }); + + useEffect(() => { + const timeout = setTimeout(() => setIsDisplaying(false), 1250); + return () => clearTimeout(timeout); + }, []); + + return ( + +
+ {trail.map((styles, i) => ( + // eslint-disable-next-line react/no-array-index-key + + {letters[i] === ' ' ? '\u00A0' : letters[i]} + + ))} +
+
+ ); +}; + +const Overlay = styled.div` + position: fixed; + inset: 0; + display: flex; + justify-content: center; + align-items: center; + background: ${({ theme }) => theme.color.background.body}; + z-index: 9999; + + .title { + font-size: 48px; + font-weight: 800; + color: #fff; + } + + .letter { + display: inline-block; + } + + @media (max-width: 640px) { + .title { + font-size: 24px; + } + } +`; + +export default AnimatedTitle; diff --git a/src/apps/pillardao/components/CopyHelp.tsx b/src/apps/pillardao/components/CopyHelp.tsx new file mode 100644 index 00000000..f58a1e5f --- /dev/null +++ b/src/apps/pillardao/components/CopyHelp.tsx @@ -0,0 +1,87 @@ +import React from 'react'; +import styled from 'styled-components'; +import walletConnectImage from '../images/wallet-connect-example.png'; + +type CopyHelpProps = { + imageSrc?: string; + overlayCollapsed?: string; + overlayExpanded?: string; +}; + +// Displays the provided screenshot with an overlay arrow pointing at the copy icon +const CopyHelp: React.FC = ({ + imageSrc = walletConnectImage, + overlayCollapsed = 'How to copy the WC URI', + overlayExpanded = 'Tap to collapse', +}) => { + const [expanded, setExpanded] = React.useState(false); + + return ( + +
setExpanded((v) => !v)}> + WalletConnect screenshot + + {/* In-overlay toggle helper */} + {expanded ? overlayExpanded : overlayCollapsed} +
+
+ ); +}; + +const Container = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const Figure = styled.div<{ $expanded: boolean }>` + position: relative; + display: inline-block; + width: auto; + height: ${({ $expanded }) => ($expanded ? 'auto' : '146px')}; + max-width: ${({ $expanded }) => ($expanded ? '640px' : '260px')}; + border-radius: 12px; + background: ${({ theme }) => theme.color.background.card}; + border: 1px solid ${({ theme }) => theme.color.border.alertOutline}; + cursor: pointer; + transition: max-width 0.2s ease-in-out, height 0.2s ease-in-out, transform 0.1s ease-in-out; + box-shadow: 0 4px 16px rgba(0,0,0,0.2); + overflow: hidden; /* keep overlays clipped to the figure */ + + &:active { + transform: scale(0.995); + } +`; + +const Img = styled.img<{ $expanded: boolean }>` + display: block; + width: ${({ $expanded }) => ($expanded ? '100%' : 'auto')}; + height: ${({ $expanded }) => ($expanded ? 'auto' : '100%')}; + object-fit: contain; /* ensure full image is visible */ + border-radius: 12px; + filter: ${({ $expanded }) => ($expanded ? 'none' : 'grayscale(100%)')}; + transition: filter 0.2s ease-in-out; +`; + +/* Arrow and highlight intentionally removed per request */ + +const OverlayPill = styled.div` + position: absolute; + left: 12px; + right: 12px; /* constrain within figure */ + bottom: 12px; + background: rgba(0, 0, 0, 0.6); + color: #fff; + padding: 4px 8px; + border-radius: 999px; + font-size: 10px; + font-weight: 600; + pointer-events: none; + white-space: nowrap; + max-width: calc(100% - 24px); + overflow: hidden; + text-overflow: ellipsis; + box-sizing: border-box; +`; + +export default CopyHelp; diff --git a/src/apps/pillardao/components/MembershipPanel.tsx b/src/apps/pillardao/components/MembershipPanel.tsx new file mode 100644 index 00000000..a807e047 --- /dev/null +++ b/src/apps/pillardao/components/MembershipPanel.tsx @@ -0,0 +1,223 @@ +import React, { useEffect, useMemo, useState } from 'react'; +import { useReadContract } from 'wagmi'; +import Card from '../../../components/Text/Card'; +import Button from '../../../components/Button'; +import placeholderNftImage from '../images/pillar-dao-member-nft.png'; +import { Section, MembershipRow, NftBox, Row } from './Styles'; + +type MembershipPanelProps = { + resolvedAddress: `0x${string}`; + nftContract: `0x${string}`; + daoContract: `0x${string}`; + chainId: number; + isConnected: boolean; +}; + +type PillarDaoMembershipCache = { + address: `0x${string}`; + chainId: number; + nftContract: `0x${string}`; + tokenId?: string; + depositTimestamp?: number; + updatedAt: number; +}; + +const membershipCacheKey = (chainId: number, address: `0x${string}`, nft: `0x${string}`) => + `pillardao:membership:${chainId}:${nft}:${address.toLowerCase()}`; + +const readMembershipCache = (chainId: number, address: `0x${string}`, nft: `0x${string}`): PillarDaoMembershipCache | null => { + try { + const raw = localStorage.getItem(membershipCacheKey(chainId, address, nft)); + if (!raw) return null; + return JSON.parse(raw) as PillarDaoMembershipCache; + } catch { return null; } +}; + +const writeMembershipCache = (entry: PillarDaoMembershipCache) => { + try { + localStorage.setItem(membershipCacheKey(entry.chainId, entry.address, entry.nftContract), JSON.stringify(entry)); + } catch { /* noop */ } +}; + +const MembershipPanel: React.FC = ({ resolvedAddress, nftContract, daoContract, chainId, isConnected }) => { + const [cached, setCached] = useState(null); + + useEffect(() => { + if (!isConnected) { setCached(null); return; } + const c = readMembershipCache(chainId, resolvedAddress, nftContract); + setCached(c); + }, [isConnected, chainId, resolvedAddress, nftContract]); + + const erc721BalanceAbi = [ + { inputs: [{ name: 'owner', type: 'address' }], name: 'balanceOf', outputs: [{ type: 'uint256' }], stateMutability: 'view', type: 'function' }, + ] as const; + const erc721EnumerableAbi = [ + { inputs: [{ name: 'owner', type: 'address' }, { name: 'index', type: 'uint256' }], name: 'tokenOfOwnerByIndex', outputs: [{ type: 'uint256' }], stateMutability: 'view', type: 'function' }, + ] as const; + const membershipTimestampAbi = [ + { inputs: [{ name: 'member', type: 'address' }], name: 'viewDepositTimestamp', outputs: [{ type: 'uint256' }], stateMutability: 'view', type: 'function' }, + ] as const; + + const nftBalanceRead = useReadContract({ + abi: erc721BalanceAbi, + address: nftContract, + functionName: 'balanceOf', + args: [resolvedAddress], + chainId, + query: { enabled: Boolean(isConnected) }, + }); + + const nftFirstTokenRead = useReadContract({ + abi: erc721EnumerableAbi, + address: nftContract, + functionName: 'tokenOfOwnerByIndex', + args: [resolvedAddress, BigInt(0)], + chainId, + query: { + enabled: Boolean(isConnected && (nftBalanceRead?.data as bigint) !== undefined && (nftBalanceRead?.data as bigint) > BigInt(0)), + }, + }); + + const effectiveMembershipId = useMemo(() => { + const id = nftFirstTokenRead?.data as bigint | undefined; + if (id && id > BigInt(0)) return id; + const cachedId = cached?.tokenId ? BigInt(cached.tokenId) : BigInt(0); + return cachedId > BigInt(0) ? cachedId : BigInt(0); + }, [nftFirstTokenRead?.data, cached?.tokenId]); + + const depositTsRead = useReadContract({ + abi: membershipTimestampAbi, + address: daoContract, + functionName: 'viewDepositTimestamp', + args: [resolvedAddress], + chainId, + query: { enabled: Boolean(isConnected) }, + }); + + const effectiveDepositTs = useMemo(() => { + const onchain = Number(depositTsRead?.data || BigInt(0)); + if (onchain > 0) return onchain; + return cached?.depositTimestamp || 0; + }, [depositTsRead?.data, cached?.depositTimestamp]); + + const truncate = (addr?: string) => { + if (!addr) return ''; + const a = addr.trim(); + if (a.length <= 12) return a; + return `${a.slice(0, 6)}...${a.slice(-4)}`; + }; + + useEffect(() => { + if (!isConnected) return; + const tokenId = nftFirstTokenRead?.data as bigint | undefined; + const depositTs = Number(depositTsRead?.data || BigInt(0)); + const hasUseful = (tokenId && tokenId > BigInt(0)) || depositTs > 0; + if (!hasUseful) return; + writeMembershipCache({ + address: resolvedAddress, + chainId, + nftContract, + tokenId: tokenId && tokenId > BigInt(0) ? String(tokenId) : cached?.tokenId, + depositTimestamp: depositTs > 0 ? depositTs : (cached?.depositTimestamp || 0), + updatedAt: Date.now(), + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isConnected, chainId, resolvedAddress, nftContract, nftFirstTokenRead?.data, depositTsRead?.data]); + + if (!isConnected) { + return ( +
+ + +
+
Connected Wallet
+
+
Membership
+
Not connected
+
+
+ +

Connect a wallet to view.

+
+
+
+
+
+ ); + } + + return ( +
+ + +
+
Connected Wallet
+
{truncate(resolvedAddress)}
+ {effectiveMembershipId > BigInt(0) && ( + <> +
Membership ID
+
{effectiveMembershipId.toString()}
+ + )} +
Member Since
+
+ {effectiveDepositTs > 0 + ? (() => { + const d = new Date(effectiveDepositTs * 1000); + const date = d.toLocaleDateString(); + const time = d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); + return `${date} ${time}`; + })() + : '—'} +
+
+
+ + {effectiveMembershipId > BigInt(0) ? ( + // eslint-disable-next-line jsx-a11y/alt-text + + ) : ( +

No Member NFT in this Pillar X wallet.

+ )} +
+ {effectiveMembershipId > BigInt(0) && ( + <> + + + + + + + + )} +
+
+
+
+ ); +}; + +export default MembershipPanel; + diff --git a/src/apps/pillardao/components/OnboardingPanel.tsx b/src/apps/pillardao/components/OnboardingPanel.tsx new file mode 100644 index 00000000..c2b0728d --- /dev/null +++ b/src/apps/pillardao/components/OnboardingPanel.tsx @@ -0,0 +1,160 @@ +import React, { useMemo, useState } from 'react'; +import Card from '../../../components/Text/Card'; +import Button from '../../../components/Button'; +import TextInput from '../../../components/Form/TextInput'; +import { useWalletConnect } from '../../../services/walletConnect'; +import useTransactionKit from '../../../hooks/useTransactionKit'; +import CopyHelp from './CopyHelp'; +import signInImage from '../images/wallet-connect-sign-in-example.png'; +import manifest from '../manifest.json'; +import { Section, Row, ConnectLayout, ConnectAside, ConnectInline, SmallNote, RightAddon, WalletInfo, ConnectError, SessionItem } from './Styles'; + +const OnboardingPanel: React.FC = () => { + const { connect, activeSessions, isLoadingConnect, disconnect, disconnectAllSessions } = useWalletConnect(); + const { walletAddress: accountAddress } = useTransactionKit(); + const hasSessions = useMemo(() => !!activeSessions && Object.keys(activeSessions).length > 0, [activeSessions]); + const [wcUri, setWcUri] = useState(''); + const [connectError, setConnectError] = useState(null); + + const COMMUNITY_URL = (manifest as any)?.links?.community; + const CHAT_URL = (manifest as any)?.links?.chat; + const CHAT_FALLBACK_URL = (manifest as any)?.links?.chatFallback; + const PILLAR_NFT_SIGNUP_URL = (manifest as any)?.links?.NFTsignup; + + const openCommunitySocial = async () => { + const communityBase = (COMMUNITY_URL || 'https://pillardao.org/').replace(/\/+$/, ''); + const primary = (CHAT_URL || `${communityBase}/chat`).replace(/\/+$/, ''); + const fallback = CHAT_FALLBACK_URL || 'https://discord.com/invite/t39xKhzSPb'; + try { + const res = await fetch(primary, { method: 'GET', cache: 'no-store' }); + await new Promise((r) => setTimeout(r, 10)); + if (res && res.status === 404) window.open(fallback, '_blank', 'noreferrer'); + else window.open(primary, '_blank', 'noreferrer'); + } catch { + await new Promise((r) => setTimeout(r, 10)); + window.open(primary, '_blank', 'noreferrer'); + } + }; + + return ( + <> +
+ + + 1) Open the Pillar DAO NFT web page + 2) Find the "How to become a Member" login + 3) Sign in with WalletConnect to connect the signup to this wallet + + {!hasSessions && ( + + + On the site, choose WalletConnect from the available wallets. When a QR code shows, tap “copy” (or “open in wallet”), then come back and paste the URI here. + + + )} + + + {!hasSessions && ( + <> + + + + )} + + + {!hasSessions && ( + <> + Paste a WalletConnect URI + { setWcUri(v); setConnectError(null); }} + rightAddon={ + + {!!wcUri && ( + + )} + + + } + /> + {!!connectError && ({connectError})} + + )} + {hasSessions && ( + <> + + + Your wallet + {(() => { + const a = (accountAddress || '').trim(); + if (!a) return ''; + if (a.length <= 12) return a; + return `${a.slice(0, 6)}...${a.slice(-4)}`; + })()} + + + + + + )} + + + + + + + + + + + +
+ {hasSessions && ( +
+ + {Object.values(activeSessions || {}).map((s: any) => ( + +
+ {s.peer?.metadata?.icons?.[0] ? (dApp) : null} +
+
{s.peer?.metadata?.name || 'dApp'}
+
{s.peer?.metadata?.url || ''}
+
+
+
+ +
+
+ ))} + + + +
+
+ )} + + ); +}; + +export default OnboardingPanel; diff --git a/src/apps/pillardao/components/Styles.tsx b/src/apps/pillardao/components/Styles.tsx new file mode 100644 index 00000000..d351c54b --- /dev/null +++ b/src/apps/pillardao/components/Styles.tsx @@ -0,0 +1,196 @@ +import styled from 'styled-components'; + +export const Section = styled.div` + margin-bottom: 16px; + &:last-child { margin-bottom: 0; } +`; + +export const Row = styled.div` + margin-top: 10px; +`; + +export const SmallNote = styled.p` + font-size: 12px; + color: ${({ theme }) => theme.color.text.cardContent}; + margin: 10px 0 0; +`; + +export const ProposalsBox = styled.div` + margin-top: 12px; + padding: 10px; + border-radius: 8px; + background: ${({ theme }) => theme.color.background.input}; + max-height: 50vh; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + overscroll-behavior: contain; +`; + +export const MembershipRow = styled.div` + display: grid; + grid-template-columns: 1fr 200px; + gap: 12px; + align-items: start; + .label { font-size: 11px; opacity: 0.8; } + .value { font-size: 13px; margin-bottom: 6px; } + @media (max-width: 540px) { grid-template-columns: 1fr; } +`; + +export const NftBox = styled.div` + display: flex; + align-items: center; + justify-content: center; + background: ${({ theme }) => theme.color.background.selectItem}; + border: 1px solid ${({ theme }) => theme.color.border.alertOutline}; + border-radius: 8px; + min-height: 180px; + text-align: center; + p { margin: 0; line-height: 1.4; padding: 0 8px; color: ${({ theme }) => theme.color.text.cardContent}; } + img { max-width: 100%; max-height: 180px; border-radius: 6px; object-fit: contain; } +`; + +export const ConnectLayout = styled.div` + display: flex; + align-items: flex-start; + gap: 12px; + flex-wrap: nowrap; + @media (max-width: 640px) { flex-wrap: wrap; } +`; + +export const Previews = styled.div` + display: flex; + align-items: flex-start; + gap: 10px; + flex: 1 1 280px; + min-width: 0; + flex-wrap: wrap; +`; + +export const ConnectAside = styled.div<{ $fullWidth?: boolean }>` + width: ${({ $fullWidth }) => ($fullWidth ? '100%' : '320px')}; + max-width: 100%; + flex: ${({ $fullWidth }) => ($fullWidth ? '1 1 auto' : '0 0 320px')}; +`; + +export const SuccessNote = styled.div` + margin-top: 8px; + font-size: 12px; + color: ${({ theme }) => theme.color.text.cardContent}; +`; + +export const ConnectError = styled.div` + margin-top: 8px; + font-size: 12px; + color: ${({ theme }) => theme.color.text.transactionStatus.failed}; +`; + +export const ConnectStatus = styled.div` + margin-top: 8px; + font-size: 12px; + color: ${({ theme }) => theme.color.text.cardContent}; +`; + +export const RightAddon = styled.div` + display: inline-flex; + align-items: center; + gap: 8px; + height: 100%; + & > * { margin-bottom: 0 !important; } +`; + +export const WalletInfo = styled.div` + display: block; + padding: 10px 12px; + background: ${({ theme }) => theme.color.background.selectItem}; + border: 1px solid ${({ theme }) => theme.color.border.alertOutline}; + border-radius: 8px; + color: ${({ theme }) => theme.color.text.cardContent}; + width: 100%; + box-sizing: border-box; + margin-top: 8px; + .label { display: inline-block; font-weight: 600; opacity: 0.9; margin-right: 6px; } + .value { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; letter-spacing: 0.2px; word-break: break-all; } +`; + +export const ConnectInline = styled.div<{ $singleColumn?: boolean }>` + display: flex; + flex-direction: column; + gap: 8px; + align-items: stretch; + width: 100%; + @media (max-width: 480px) { + gap: 6px; + } +`; + +export const ProposalItem = styled.div` + display: grid; + grid-template-columns: 1fr auto auto; + align-items: center; + padding: 8px 0; + gap: 10px; + border-bottom: 1px solid ${({ theme }) => theme.color.border.cardContentHorizontalSeparator}; + border-radius: 6px; + transition: background 0.12s ease-in-out; + &:hover { background: ${({ theme }) => theme.color.background.selectItem}; } + &:last-child { border-bottom: none; } + .title { font-size: 15px; color: ${({ theme }) => theme.color.background.buttonPrimary}; display: flex; align-items: center; gap: 8px; } + .status { font-size: 12px; color: ${({ theme }) => theme.color.text.cardContent}; } + .actions a { font-size: 12px; color: ${({ theme }) => theme.color.text.cardLink}; text-decoration: underline; } +`; + +export const RowInline = styled.div` + display: inline-flex; + align-items: center; + gap: 8px; +`; + +export const ProposalBody = styled.div` + padding: 10px; + margin: 6px 0 10px 0; + font-size: 12px; + color: ${({ theme }) => theme.color.text.cardContent}; + white-space: pre-wrap; + background: ${({ theme }) => theme.color.background.selectItem}; + border: 1px solid ${({ theme }) => theme.color.border.alertOutline}; + border-radius: 8px; + position: relative; + .content { padding-right: 28px; max-height: 240px; overflow: auto; -webkit-overflow-scrolling: touch; } + .meta { margin-top: 8px; font-size: 11px; opacity: 0.9; } +`; + +export const CollapseButton = styled.button` + position: absolute; + right: 8px; + bottom: 8px; + background: transparent; + border: none; + color: ${({ theme }) => theme.color.text.cardLink}; + cursor: pointer; + display: inline-flex; + align-items: center; + padding: 4px; + border-radius: 6px; + &:hover { background: ${({ theme }) => theme.color.background.input}; } +`; + +export const SessionList = styled.div` + margin: 8px 0 12px; + display: flex; + flex-direction: column; + gap: 8px; +`; + +export const SessionItem = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + padding: 10px; + border-radius: 6px; + background: ${({ theme }) => theme.color.background.input}; + .meta { display: flex; align-items: center; gap: 10px; } + img { width: 24px; height: 24px; border-radius: 4px; object-fit: cover; } + .name { font-size: 13px; font-weight: 600; } + .url { font-size: 11px; opacity: 0.8; } +`; diff --git a/src/apps/pillardao/components/VotingPanel.tsx b/src/apps/pillardao/components/VotingPanel.tsx new file mode 100644 index 00000000..dda100f6 --- /dev/null +++ b/src/apps/pillardao/components/VotingPanel.tsx @@ -0,0 +1,256 @@ +import React, { useState } from 'react'; +import Card from '../../../components/Text/Card'; +import Button from '../../../components/Button'; +import { ExportSquare as IconExportSquare, ArrowRight2 as IconArrowRight, ArrowDown2 as IconArrowDown, ArrowUp2 as IconArrowUp } from 'iconsax-react'; +import manifest from '../manifest.json'; +import { Section, Row, ProposalsBox, ProposalItem, ProposalBody, CollapseButton } from './Styles'; + +const VotingPanel: React.FC = () => { + const [isLoadingProposals, setIsLoadingProposals] = useState(false); + const [proposalsError, setProposalsError] = useState(null); + const [showProposals, setShowProposals] = useState(false); + const [proposalsSkip, setProposalsSkip] = useState(0); + const [hasMoreProposals, setHasMoreProposals] = useState(true); + const [expandedProposalId, setExpandedProposalId] = useState(null); + const [proposals, setProposals] = useState< + { id: string; title: string; state?: string; link?: string; end?: number; body?: string; created?: number }[] + >([]); + + const COMMUNITY_URL = (manifest as any)?.links?.community; + const VOTING_URL = (manifest as any)?.links?.voting; + const VOTING_FALLBACK_URL = (manifest as any)?.links?.votingFallback; + + const renderProposalStatus = (state?: string, end?: number) => { + if (!state) return ''; + if (state === 'active' && end) { + const now = Math.floor(Date.now() / 1000); + const remaining = Math.max(0, end - now); + if (remaining <= 0) return 'Ended'; + const days = Math.floor(remaining / 86400); + const hours = Math.floor((remaining % 86400) / 3600); + const mins = Math.floor((remaining % 3600) / 60); + const parts: string[] = []; + if (days) parts.push(`${days}d`); + if (hours || days) parts.push(`${hours}h`); + parts.push(`${mins}m`); + return `Ends in ${parts.join(' ')}`; + } + return state; + }; + + const timeAgo = (timestamp?: number) => { + if (!timestamp) return ''; + const now = Math.floor(Date.now() / 1000); + let diff = Math.max(0, now - timestamp); + const units: [number, string][] = [ + [31536000, 'y'], + [2592000, 'mo'], + [604800, 'w'], + [86400, 'd'], + [3600, 'h'], + [60, 'm'], + ]; + for (const [sec, label] of units) { + if (diff >= sec) { + const val = Math.floor(diff / sec); + return `${val}${label} ago`; + } + } + return 'just now'; + }; + + const openVoting = async () => { + const communityBase = (COMMUNITY_URL || 'https://pillardao.org/').replace(/\/+$/, ''); + const primary = (VOTING_URL || `${communityBase}/voting`).replace(/\/+$/, ''); + const fallback = VOTING_FALLBACK_URL || 'https://snapshot.box/#/s:plrdao.eth/'; + + try { + const res = await fetch(primary, { method: 'GET', cache: 'no-store' }); + await new Promise((r) => setTimeout(r, 10)); + if (res && res.status === 404) { + window.open(fallback, '_blank', 'noreferrer'); + } else { + window.open(primary, '_blank', 'noreferrer'); + } + } catch (e) { + await new Promise((r) => setTimeout(r, 10)); + window.open(primary, '_blank', 'noreferrer'); + } + }; + + const loadLatestProposals = async () => { + setIsLoadingProposals(true); + setProposalsError(null); + setShowProposals(true); + + const snapshotUrl = 'https://snapshot.box/#/s:plrdao.eth/'; + + try { + const gql = 'https://hub.snapshot.org/graphql'; + const body = { + query: + 'query Proposals($space: String!, $first: Int!, $skip: Int!) { proposals(first: $first, skip: $skip, where: { space_in: [$space] }, orderBy: "created", orderDirection: desc) { id title state end created body space { id } } }', + variables: { space: 'plrdao.eth', first: 3, skip: 0 }, + }; + const res = await fetch(gql, { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify(body), + }); + if (!res.ok) throw new Error('Snapshot API error'); + const json = await res.json(); + const items = json?.data?.proposals || []; + if (!items.length) throw new Error('No proposals'); + + const mapped = + items.map((p: any) => ({ + id: p.id, + title: p.title, + state: p.state, + end: p.end, + created: p.created, + body: p.body, + link: `${snapshotUrl}proposal/${p.id}`, + })); + setProposals(mapped); + setProposalsSkip(items.length); + setHasMoreProposals(items.length >= 3); + } catch (e) { + setProposalsError('Could not load proposals'); + setProposals([]); + } finally { + setIsLoadingProposals(false); + } + }; + + const loadMoreProposals = async () => { + setIsLoadingProposals(true); + setProposalsError(null); + const snapshotUrl = 'https://snapshot.box/#/s:plrdao.eth/'; + + try { + const gql = 'https://hub.snapshot.org/graphql'; + const body = { + query: + 'query Proposals($space: String!, $first: Int!, $skip: Int!) { proposals(first: $first, skip: $skip, where: { space_in: [$space] }, orderBy: "created", orderDirection: desc) { id title state end created body space { id } } }', + variables: { space: 'plrdao.eth', first: 20, skip: proposalsSkip }, + }; + const res = await fetch(gql, { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify(body), + }); + if (!res.ok) throw new Error('Snapshot API error'); + const json = await res.json(); + const items = Array.isArray(json?.data?.proposals) + ? json.data.proposals + : []; + if (!items.length) { + setHasMoreProposals(false); + return; + } + + const mapped = items.map((p: any) => ({ + id: p.id, + title: p.title, + state: p.state, + end: p.end, + created: p.created, + body: p.body, + link: `${snapshotUrl}proposal/${p.id}`, + })); + + setProposals((prev) => [...prev, ...mapped]); + setProposalsSkip((prev) => prev + items.length); + setHasMoreProposals(items.length >= 20); + } catch (e) { + setProposalsError('Could not load more proposals'); + } finally { + setIsLoadingProposals(false); + } + }; + + return ( +
+ + {!showProposals && ( + + + + )} + + {showProposals && ( + + {isLoadingProposals &&

Loading latest proposals...

} + {!isLoadingProposals && proposalsError && ( + + + + )} + {!isLoadingProposals && !proposalsError && ( + <> + {proposals.map((p) => ( +
+ setExpandedProposalId(expandedProposalId === p.id ? null : p.id)}> +
+ + {expandedProposalId === p.id ? ( + + ) : ( + + )} + + {p.title} +
+
{renderProposalStatus(p.state, p.end)}
+
e.stopPropagation()}> + + + +
+
+ {expandedProposalId === p.id && ( + +
{p.body?.slice(0, 1000) || 'No description available.'}
+
Posted {timeAgo(p.created)}
+ setExpandedProposalId(null)}> + Collapse + +
+ )} +
+ ))} + {hasMoreProposals && ( + + + + )} + + )} +
+ )} + + + + +
+
+ ); +}; + +export default VotingPanel; + diff --git a/src/apps/pillardao/icon.png b/src/apps/pillardao/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8d560952628acf99f5f12cae70bd22d34adfe9cd GIT binary patch literal 1856 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 literal 0 HcmV?d00001 diff --git a/src/apps/pillardao/images/pillar-dao-member-nft.png b/src/apps/pillardao/images/pillar-dao-member-nft.png new file mode 100644 index 0000000000000000000000000000000000000000..4b573a88053c1db9568638d012e9a6e402211968 GIT binary patch literal 32814 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 ({ + default: ({ text }: { text: string }) => text, +})); + +vi.mock('../../hooks/useTransactionKit', () => ({ + default: () => ({ walletAddress: undefined }), +})); + +vi.mock('../../services/walletConnect', () => ({ + useWalletConnect: () => ({ + connect: vi.fn(), + disconnect: vi.fn(), + disconnectAllSessions: vi.fn(), + activeSessions: {}, + isLoadingConnect: false, + isLoadingDisconnect: false, + isLoadingDisconnectAll: false, + }), +})); + +vi.mock('../../hooks/useWalletConnectToast', () => ({ + default: () => ({ showToast: vi.fn() }), +})); + +// Override wagmi for this test: we don't need real provider behavior, +// just ensure hooks render without throwing and record calls if needed. +vi.mock('wagmi', () => ({ + WagmiProvider: ({ children }: any) => children, + createConfig: vi.fn(() => ({})), + useReadContract: vi.fn(() => ({ data: undefined, refetch: vi.fn() })), +})); + +// Import after mocks +import PillarDaoApp from './index'; + +describe('PillarDAO Sub-app', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + const renderApp = () => + render( + + + + + + ); + + it('renders header and tabs', async () => { + renderApp(); + expect(await screen.findByText('Voting')).toBeInTheDocument(); + expect(await screen.findByText('Join PillarDAO')).toBeInTheDocument(); + expect(await screen.findByText('My DAO NFT')).toBeInTheDocument(); + }); + + it('shows WalletConnect URI input when no sessions are active', async () => { + renderApp(); + fireEvent.click(await screen.findByText('Join PillarDAO')); + expect( + await screen.findByPlaceholderText('wc:...') + ).toBeInTheDocument(); + }); + + it('opens voting link (primary) when clicking Open PillarDAO voting', async () => { + renderApp(); + + // Mock network and window.open used by openVoting + const fetchSpy = vi + .spyOn(global, 'fetch' as any) + .mockResolvedValue({ ok: true, status: 200 } as any); + const openSpy = vi.spyOn(window, 'open').mockImplementation(() => null); + + const btn = (await screen.findAllByText('Open PillarDAO voting'))[0]; + fireEvent.click(btn); + + // allow micro waits inside the handler + await new Promise((r) => setTimeout(r, 20)); + + expect(fetchSpy).toHaveBeenCalledWith( + 'https://pillardao.org/voting', + expect.objectContaining({ method: 'GET' }) + ); + expect(openSpy).toHaveBeenCalledWith( + 'https://pillardao.org/voting', + '_blank', + 'noreferrer' + ); + }); + + it('falls back to Snapshot when voting URL 404s', async () => { + renderApp(); + + const fetchSpy = vi + .spyOn(global, 'fetch' as any) + .mockResolvedValue({ ok: false, status: 404 } as any); + const openSpy = vi.spyOn(window, 'open').mockImplementation(() => null); + + const btn = (await screen.findAllByText('Open PillarDAO voting'))[0]; + fireEvent.click(btn); + + await new Promise((r) => setTimeout(r, 20)); + + expect(fetchSpy).toHaveBeenCalledWith( + 'https://pillardao.org/voting', + expect.objectContaining({ method: 'GET' }) + ); + expect(openSpy).toHaveBeenCalledWith( + 'https://snapshot.box/#/s:plrdao.eth/', + '_blank', + 'noreferrer' + ); + }); + + it('opens community chat link when clicking community button', async () => { + renderApp(); + + const fetchSpy = vi + .spyOn(global, 'fetch' as any) + .mockResolvedValue({ ok: true, status: 200 } as any); + const openSpy = vi.spyOn(window, 'open').mockImplementation(() => null); + + fireEvent.click(await screen.findByText('Join PillarDAO')); + const btn = await screen.findByText('Join Pillar DAO chat and community'); + fireEvent.click(btn); + await new Promise((r) => setTimeout(r, 20)); + + // With current manifest, primary is community base + '/chat' + expect(fetchSpy).toHaveBeenCalledWith( + 'https://pillardao.org/chat', + expect.objectContaining({ method: 'GET' }) + ); + expect(openSpy).toHaveBeenCalledWith( + 'https://pillardao.org/chat', + '_blank', + 'noreferrer' + ); + }); + + it('falls back to Discord invite when community chat URL 404s', async () => { + renderApp(); + + const fetchSpy = vi + .spyOn(global, 'fetch' as any) + .mockResolvedValue({ ok: false, status: 404 } as any); + const openSpy = vi.spyOn(window, 'open').mockImplementation(() => null); + + fireEvent.click(await screen.findByText('Join PillarDAO')); + const btn = await screen.findByText('Join Pillar DAO chat and community'); + fireEvent.click(btn); + await new Promise((r) => setTimeout(r, 20)); + + expect(fetchSpy).toHaveBeenCalledWith( + 'https://pillardao.org/chat', + expect.objectContaining({ method: 'GET' }) + ); + expect(openSpy).toHaveBeenCalledWith( + 'https://discord.com/invite/t39xKhzSPb', + '_blank', + 'noreferrer' + ); + }); + + it('shows NFT signup card when Join tab selected', async () => { + renderApp(); + fireEvent.click(await screen.findByText('Join PillarDAO')); + expect(await screen.findByText('Get Your Membership')).toBeInTheDocument(); + expect( + await screen.findByText('Open Pillar DAO Member Signup') + ).toBeInTheDocument(); + }); +}); diff --git a/src/apps/pillardao/index.tsx b/src/apps/pillardao/index.tsx new file mode 100644 index 00000000..3a0572b1 --- /dev/null +++ b/src/apps/pillardao/index.tsx @@ -0,0 +1,180 @@ +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { useNavigate } from 'react-router-dom'; +// Uses the app's global WagmiProvider; no local provider here +import manifest from './manifest.json'; +import headerImage from './images/pillar-dao-image.png'; +import AnimatedTitle from './components/AnimatedTitle'; +import VotingPanel from './components/VotingPanel'; +import OnboardingPanel from './components/OnboardingPanel'; +import MembershipPanel from './components/MembershipPanel'; +import useTransactionKit from '../../hooks/useTransactionKit'; + + +const PillarDaoInner = () => { + const navigate = useNavigate(); + const isTestMode = + typeof process !== 'undefined' && + typeof process.env !== 'undefined' && + process.env.NODE_ENV === 'test'; + const introMs = Math.max(0, Number((manifest as any)?.introMs ?? 1500)); + const [showIntro, setShowIntro] = useState(!(isTestMode || introMs === 0)); + const { walletAddress } = useTransactionKit(); + const [activeTab, setActiveTab] = useState<'voting' | 'onboarding' | 'membership'>('voting'); + const [headerImgOk, setHeaderImgOk] = useState(true); + + const goHome = (e?: React.MouseEvent) => { + if (e) e.preventDefault(); + setActiveTab('onboarding'); + try { navigate('/pillardao'); } catch {} + }; + + useEffect(() => { + if (isTestMode || introMs === 0) { + setShowIntro(false); + return; + } + const t = setTimeout(() => setShowIntro(false), introMs); + return () => clearTimeout(t); + }, [isTestMode, introMs]); + + const CONTRACTS = (manifest as any)?.contracts || {}; + const POLYGON_CHAIN_ID = Number(CONTRACTS.chainId); + const NFT_CONTRACT = CONTRACTS.nft as `0x${string}`; + const DAO_CONTRACT = CONTRACTS.dao as `0x${string}`; + const resolvedAddress = (walletAddress || '0x0000000000000000000000000000000000000000') as `0x${string}`; + + const COMMUNITY_URL = (manifest as any)?.links?.community; + const VOTING_URL = (manifest as any)?.links?.voting; + const VOTING_FALLBACK_URL = (manifest as any)?.links?.votingFallback; + const CHAT_URL = (manifest as any)?.links?.chat; + const CHAT_FALLBACK_URL = (manifest as any)?.links?.chatFallback; + const PILLAR_NFT_SIGNUP_URL = (manifest as any)?.links?.NFTsignup; + + if (showIntro) { + return ; + } + + return ( + +

+ + Pillar DAO { if (headerImgOk) setHeaderImgOk(false); }} + /> + + {!headerImgOk && ( + +

Pillar DAO

+
+ )} +

Get your membership NFT and join socials.

+
+ + + setActiveTab('voting')} + > + Voting + + setActiveTab('membership')} + > + My DAO NFT + + setActiveTab('onboarding')} + > + Join PillarDAO + + + {activeTab === 'onboarding' && ( + + )} + {activeTab === 'voting' && ( + + )} + {activeTab === 'membership' && ( + + )} + + {/* Panels render their own content */} + + ); +}; + +const Wrapper = styled.div` + padding: 20px; + max-width: 800px; + margin: 0 auto; + font-size: 16px; + line-height: 1.5; +`; + +const Header = styled.div` + margin: 10px 0 18px; + + img { + display: block; + width: auto; /* keep intrinsic width */ + height: auto; /* keep intrinsic height */ + max-width: 100%; /* shrink if container is smaller */ + margin-bottom: 10px; + } + + h1 { + font-size: 24px; + font-weight: 700; + margin: 0 0 6px; + } + + .fallbackTitle { + font-size: 14px; + font-weight: 600; + } + + p { + font-size: 14px; + color: ${({ theme }) => theme.color.text.cardContent}; + } +`; + +const HeaderLink = styled.a` + display: inline-block; + text-decoration: none; + color: inherit; + cursor: pointer; +`; + +const Tabs = styled.div` + display: flex; + gap: 8px; + margin-bottom: 12px; +`; + +const TabButton = styled.button<{ $active?: boolean }>` + padding: 8px 12px; + border-radius: 6px; /* match Button rounding */ + border: 1px solid + ${({ theme }) => theme.color.border.alertOutline}; + background: ${({ theme, $active }) => + $active ? theme.color.background.card : 'transparent'}; + color: ${({ theme }) => theme.color.text.cardTitle}; + font-size: 13px; + cursor: pointer; +`; + +const PillarDaoApp = () => ; + +export default PillarDaoApp; diff --git a/src/apps/pillardao/manifest.json b/src/apps/pillardao/manifest.json new file mode 100644 index 00000000..79540ab2 --- /dev/null +++ b/src/apps/pillardao/manifest.json @@ -0,0 +1,23 @@ +{ + "title": "Pillar DAO", + "description": "Get your DAO membership NFT, join DAO socials, and vote on Snapshot.", + "links": { + "NFTsignup": "https://pillardao.org/#governor", + "community": "https://pillardao.org/", + "voting": "https://pillardao.org/voting", + "chat": "https://pillardao.org/chat", + "votingFallback": "https://snapshot.box/#/s:plrdao.eth/", + "chatFallback": "https://discord.com/invite/t39xKhzSPb" + }, + "contracts": { + "dao": "0xc380f15Db7be87441d0723F19fBb440AEaa734aB", + "nft": "0xfa2d028ba398c20ee0a7483c00218f91ffee47c6", + "chainId": 137 + }, + "translations": { + "en": { + "title": "Pillar DAO", + "description": "Get your membership NFT, join our socials, and vote on DAO proposals." + } + } +} diff --git a/src/containers/Main.tsx b/src/containers/Main.tsx index 9fe11bff..5a1d9825 100644 --- a/src/containers/Main.tsx +++ b/src/containers/Main.tsx @@ -16,7 +16,7 @@ import { WalletClient, } from 'viem'; import { privateKeyToAccount } from 'viem/accounts'; -import { mainnet, sepolia } from 'viem/chains'; +import { mainnet, sepolia, polygon } from 'viem/chains'; import { createConfig, WagmiProvider, useAccount, useConnect } from 'wagmi'; import { walletConnect } from 'wagmi/connectors'; import * as Sentry from '@sentry/react'; @@ -851,7 +851,7 @@ const AuthLayout = () => { const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); export const config = createConfig({ - chains: [mainnet], + chains: [mainnet, polygon], connectors: [ walletConnect({ projectId: import.meta.env.VITE_REOWN_PROJECT_ID ?? '', @@ -867,6 +867,7 @@ export const config = createConfig({ ], transports: { [mainnet.id]: http(), + [polygon.id]: http(), }, }); diff --git a/vite.config.js b/vite.config.mjs similarity index 100% rename from vite.config.js rename to vite.config.mjs diff --git a/wrangler.jsonc b/wrangler.jsonc new file mode 100644 index 00000000..28a0b822 --- /dev/null +++ b/wrangler.jsonc @@ -0,0 +1,8 @@ +{ + "name": "pillarx", + "compatibility_date": "2025-09-30", + "assets": { + "directory": "./build", + "pages_build_output_dir": "./build" + } +} \ No newline at end of file From 3d17af84f17b2e164408fda8032c3bbbd3121c0e Mon Sep 17 00:00:00 2001 From: zbcoding Date: Sun, 5 Oct 2025 14:24:22 -0500 Subject: [PATCH 2/3] add code quality fixes and update tests --- src/apps/pillardao/components/CopyHelp.tsx | 10 ++++++++-- .../pillardao/components/MembershipPanel.tsx | 4 +++- .../__snapshots__/EditorialTile.test.tsx.snap | 2 +- .../tests/LeftColumnTokenMarketDataRow.test.tsx | 10 ++++++++++ .../LeftColumnTokenMarketDataRow.test.tsx.snap | 4 ++-- .../test/TokensWithMarketDataTile.test.tsx | 6 ++++++ .../TokensWithMarketDataTile.test.tsx.snap | 16 ++++++++-------- .../test/__snapshots__/CardSwap.test.tsx.snap | 12 ++++++++++++ wrangler.jsonc | 6 +++--- 9 files changed, 53 insertions(+), 17 deletions(-) diff --git a/src/apps/pillardao/components/CopyHelp.tsx b/src/apps/pillardao/components/CopyHelp.tsx index f58a1e5f..f2e403a3 100644 --- a/src/apps/pillardao/components/CopyHelp.tsx +++ b/src/apps/pillardao/components/CopyHelp.tsx @@ -18,7 +18,12 @@ const CopyHelp: React.FC = ({ return ( -
setExpanded((v) => !v)}> +
setExpanded((v) => !v)} + aria-pressed={expanded} + > WalletConnect screenshot {/* In-overlay toggle helper */} @@ -34,7 +39,7 @@ const Container = styled.div` gap: 8px; `; -const Figure = styled.div<{ $expanded: boolean }>` +const Figure = styled.button<{ $expanded: boolean }>` position: relative; display: inline-block; width: auto; @@ -47,6 +52,7 @@ const Figure = styled.div<{ $expanded: boolean }>` transition: max-width 0.2s ease-in-out, height 0.2s ease-in-out, transform 0.1s ease-in-out; box-shadow: 0 4px 16px rgba(0,0,0,0.2); overflow: hidden; /* keep overlays clipped to the figure */ + padding: 0; &:active { transform: scale(0.995); diff --git a/src/apps/pillardao/components/MembershipPanel.tsx b/src/apps/pillardao/components/MembershipPanel.tsx index a807e047..851ef42e 100644 --- a/src/apps/pillardao/components/MembershipPanel.tsx +++ b/src/apps/pillardao/components/MembershipPanel.tsx @@ -79,11 +79,13 @@ const MembershipPanel: React.FC = ({ resolvedAddress, nftC }); const effectiveMembershipId = useMemo(() => { + const balance = nftBalanceRead?.data as bigint | undefined; + if (!balance || balance === BigInt(0)) return BigInt(0); const id = nftFirstTokenRead?.data as bigint | undefined; if (id && id > BigInt(0)) return id; const cachedId = cached?.tokenId ? BigInt(cached.tokenId) : BigInt(0); return cachedId > BigInt(0) ? cachedId : BigInt(0); - }, [nftFirstTokenRead?.data, cached?.tokenId]); + }, [nftBalanceRead?.data, nftFirstTokenRead?.data, cached?.tokenId]); const depositTsRead = useReadContract({ abi: membershipTimestampAbi, diff --git a/src/apps/pillarx-app/components/EditorialTile/test/__snapshots__/EditorialTile.test.tsx.snap b/src/apps/pillarx-app/components/EditorialTile/test/__snapshots__/EditorialTile.test.tsx.snap index 77403caa..9ddcfb0d 100644 --- a/src/apps/pillarx-app/components/EditorialTile/test/__snapshots__/EditorialTile.test.tsx.snap +++ b/src/apps/pillarx-app/components/EditorialTile/test/__snapshots__/EditorialTile.test.tsx.snap @@ -128,7 +128,7 @@ exports[` > renders correctly and matches snapshot 1`] = `

- 1 October 2021 + 30 September 2021

diff --git a/src/apps/pillarx-app/components/TokenMarketDataRow/tests/LeftColumnTokenMarketDataRow.test.tsx b/src/apps/pillarx-app/components/TokenMarketDataRow/tests/LeftColumnTokenMarketDataRow.test.tsx index 7b6137da..ce351477 100644 --- a/src/apps/pillarx-app/components/TokenMarketDataRow/tests/LeftColumnTokenMarketDataRow.test.tsx +++ b/src/apps/pillarx-app/components/TokenMarketDataRow/tests/LeftColumnTokenMarketDataRow.test.tsx @@ -33,6 +33,16 @@ const ethTokenRow = { }; describe(' - ETH token row', () => { + beforeEach(() => { + // Mock the current date to December 22, 2025 for consistent relative time calculations + vi.useFakeTimers(); + vi.setSystemTime(new Date('2025-12-22T00:00:00Z')); + }); + + afterEach(() => { + vi.useRealTimers(); + }); + it('renders and matches snapshot', () => { const tree = render(); expect(tree).toMatchSnapshot(); diff --git a/src/apps/pillarx-app/components/TokenMarketDataRow/tests/__snapshots__/LeftColumnTokenMarketDataRow.test.tsx.snap b/src/apps/pillarx-app/components/TokenMarketDataRow/tests/__snapshots__/LeftColumnTokenMarketDataRow.test.tsx.snap index 5ffd8bd8..23244644 100644 --- a/src/apps/pillarx-app/components/TokenMarketDataRow/tests/__snapshots__/LeftColumnTokenMarketDataRow.test.tsx.snap +++ b/src/apps/pillarx-app/components/TokenMarketDataRow/tests/__snapshots__/LeftColumnTokenMarketDataRow.test.tsx.snap @@ -41,7 +41,7 @@ exports[` - ETH token row > renders and matches

- 5mo ago + 8mo ago

- ETH token row > renders and matches

- 5mo ago + 8mo ago

', () => { value: { ...originalEnv, VITE_FEATURE_FLAG_GNOSIS: 'true' }, writable: true, }); + + // Mock the current date to December 22, 2025 for consistent relative time calculations + vi.useFakeTimers(); + vi.setSystemTime(new Date('2025-12-22T00:00:00Z')); }); afterEach(() => { @@ -103,6 +107,8 @@ describe('', () => { value: originalEnv, writable: true, }); + + vi.useRealTimers(); }); it('renders and matches snapshot', () => { diff --git a/src/apps/pillarx-app/components/TokensWithMarketDataTile/test/__snapshots__/TokensWithMarketDataTile.test.tsx.snap b/src/apps/pillarx-app/components/TokensWithMarketDataTile/test/__snapshots__/TokensWithMarketDataTile.test.tsx.snap index f56bc94c..1d83f607 100644 --- a/src/apps/pillarx-app/components/TokensWithMarketDataTile/test/__snapshots__/TokensWithMarketDataTile.test.tsx.snap +++ b/src/apps/pillarx-app/components/TokensWithMarketDataTile/test/__snapshots__/TokensWithMarketDataTile.test.tsx.snap @@ -97,7 +97,7 @@ exports[` > renders and matches snapshot 1`] = `

- 5mo ago + 8mo ago

> renders and matches snapshot 1`] = `

- 5mo ago + 8mo ago

> renders and matches snapshot 1`] = `

- 5mo ago + 8mo ago

> renders and matches snapshot 1`] = `

- 5mo ago + 8mo ago

> renders and matches snapshot 1`] = `

- 5mo ago + 8mo ago

> renders and matches snapshot 1`] = `

- 5mo ago + 8mo ago

> renders and matches snapshot 1`] = `

- 5mo ago + 8mo ago

> renders and matches snapshot 1`] = `

- 5mo ago + 8mo ago

> Rendering and Snapshot > renders correctly and matches + `; diff --git a/wrangler.jsonc b/wrangler.jsonc index 28a0b822..5cd24b1f 100644 --- a/wrangler.jsonc +++ b/wrangler.jsonc @@ -2,7 +2,7 @@ "name": "pillarx", "compatibility_date": "2025-09-30", "assets": { - "directory": "./build", - "pages_build_output_dir": "./build" - } + "directory": "./build" + }, + "pages_build_output_dir": "./build" } \ No newline at end of file From e0b4896cb5fd132590e05acb295dc6fa1b5a7245 Mon Sep 17 00:00:00 2001 From: zbcoding Date: Sun, 5 Oct 2025 15:21:35 -0500 Subject: [PATCH 3/3] Add code quality edits 2 --- src/apps/pillardao/components/MembershipPanel.tsx | 7 +++---- .../tests/LeftColumnTokenMarketDataRow.test.tsx | 1 + .../test/TokensWithMarketDataTile.test.tsx | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/apps/pillardao/components/MembershipPanel.tsx b/src/apps/pillardao/components/MembershipPanel.tsx index 851ef42e..01dce0cb 100644 --- a/src/apps/pillardao/components/MembershipPanel.tsx +++ b/src/apps/pillardao/components/MembershipPanel.tsx @@ -176,8 +176,7 @@ const MembershipPanel: React.FC = ({ resolvedAddress, nftC

{effectiveMembershipId > BigInt(0) ? ( - // eslint-disable-next-line jsx-a11y/alt-text - + PillarDAO Member NFT ) : (

No Member NFT in this Pillar X wallet.

)} @@ -192,7 +191,7 @@ const MembershipPanel: React.FC = ({ resolvedAddress, nftC const tokenId = String(effectiveMembershipId); const base = 'https://polygonscan.com/token'; const url = `${base}/${nftContract}?a=${tokenId}`; - window.open(url, '_blank', 'noreferrer'); + window.open(url, '_blank', 'noopener,noreferrer'); }} > View on Polygonscan @@ -206,7 +205,7 @@ const MembershipPanel: React.FC = ({ resolvedAddress, nftC const tokenId = String(effectiveMembershipId); const base = 'https://polygon.blockscout.com/token'; const url = `${base}/${nftContract}/instance/${tokenId}`; - window.open(url, '_blank', 'noreferrer'); + window.open(url, '_blank', 'noopener,noreferrer'); }} > View on Blockscout diff --git a/src/apps/pillarx-app/components/TokenMarketDataRow/tests/LeftColumnTokenMarketDataRow.test.tsx b/src/apps/pillarx-app/components/TokenMarketDataRow/tests/LeftColumnTokenMarketDataRow.test.tsx index ce351477..e73ad733 100644 --- a/src/apps/pillarx-app/components/TokenMarketDataRow/tests/LeftColumnTokenMarketDataRow.test.tsx +++ b/src/apps/pillarx-app/components/TokenMarketDataRow/tests/LeftColumnTokenMarketDataRow.test.tsx @@ -1,4 +1,5 @@ import { render, screen } from '@testing-library/react'; +import { vi } from 'vitest'; // components import LeftColumnTokenMarketDataRow from '../LeftColumnTokenMarketDataRow'; diff --git a/src/apps/pillarx-app/components/TokensWithMarketDataTile/test/TokensWithMarketDataTile.test.tsx b/src/apps/pillarx-app/components/TokensWithMarketDataTile/test/TokensWithMarketDataTile.test.tsx index 2edb5f4f..c83ca628 100644 --- a/src/apps/pillarx-app/components/TokensWithMarketDataTile/test/TokensWithMarketDataTile.test.tsx +++ b/src/apps/pillarx-app/components/TokensWithMarketDataTile/test/TokensWithMarketDataTile.test.tsx @@ -1,5 +1,6 @@ import { render, screen, within } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; +import { vi } from 'vitest'; // components import TokensWithMarketDataTile from '../TokensWithMarketDataTile';