Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/components/address/address-view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,10 @@ export default function AddressView({ addresses }: { addresses: string }) {
{/* Priority 3: Heavy charts with lazy loading and Suspense */}
<ErrorBoundary>
<Suspense fallback={<ChartFallback />}>
<CumulativeRewardsChart blocks={deferredBlocks} />
<CumulativeRewardsChart
blocks={deferredBlocks}
hideBalance={search.hideBalance}
/>
</Suspense>
</ErrorBoundary>

Expand Down
4 changes: 4 additions & 0 deletions src/components/address/charts/cumulative-rewards-chart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@ type ChartData = {

const CumulativeRewardsChart = React.memo(function CumulativeRewardsChart({
blocks,
hideBalance,
}: {
blocks: MinimalBlock[];
hideBalance?: boolean;
}) {
const { theme } = useTheme();
const isSmall = useIsSmallScreen(640);
Expand Down Expand Up @@ -237,6 +239,7 @@ const CumulativeRewardsChart = React.memo(function CumulativeRewardsChart({
key="cumulative"
microAlgoAmount={dataPoint.cumulativeRewards}
showAnimation={false}
hidden={hideBalance}
/>,
"Total Rewards",
];
Expand All @@ -247,6 +250,7 @@ const CumulativeRewardsChart = React.memo(function CumulativeRewardsChart({
key="daily"
microAlgoAmount={dataPoint.dailyRewards}
showAnimation={false}
hidden={hideBalance}
/>,
"Daily Rewards",
];
Expand Down
18 changes: 15 additions & 3 deletions src/components/address/stats/panels/blocks-per-day-panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,11 @@ function PreviousBlocksTooltip({
export function BlocksPerDayPanel({
stats,
loading,
hideBalance,
}: {
stats: BlockStats;
loading: boolean;
hideBalance?: boolean;
}) {
return (
<Panel>
Expand All @@ -46,7 +48,10 @@ export function BlocksPerDayPanel({
content={
<Tooltip>
<TooltipTrigger>
<NumberDisplay value={stats.allTime.avgBlocksPerDay} />
<NumberDisplay
value={stats.allTime.avgBlocksPerDay}
hidden={hideBalance}
/>
</TooltipTrigger>
<TooltipContent>
{stats.allTime.startDate !== null &&
Expand All @@ -65,6 +70,7 @@ export function BlocksPerDayPanel({
<TooltipTrigger>
<NumberDisplay
value={stats.allTime.avgBlocksPerDay * AVERAGE_DAY_IN_MONTH}
hidden={hideBalance}
/>
</TooltipTrigger>
<TooltipContent>
Expand All @@ -84,7 +90,10 @@ export function BlocksPerDayPanel({
<div className="flex items-center">
<Tooltip>
<TooltipTrigger>
<NumberDisplay value={stats.last30Days.avgBlocksPerDay} />
<NumberDisplay
value={stats.last30Days.avgBlocksPerDay}
hidden={hideBalance}
/>
</TooltipTrigger>
<TooltipContent>
{`${stats.last30Days.totalBlocks} blocks proposed from ${stats.last30Days.startDate.toLocaleString()} to ${stats.last30Days.endDate.toLocaleString()}`}
Expand Down Expand Up @@ -113,7 +122,10 @@ export function BlocksPerDayPanel({
<div className="flex items-center">
<Tooltip>
<TooltipTrigger>
<NumberDisplay value={stats.last7Days.avgBlocksPerDay} />
<NumberDisplay
value={stats.last7Days.avgBlocksPerDay}
hidden={hideBalance}
/>
</TooltipTrigger>
<TooltipContent>
{`${stats.last7Days.totalBlocks} blocks proposed from ${stats.last7Days.startDate.toLocaleDateString()} to ${stats.last7Days.endDate.toLocaleDateString()}`}
Expand Down
10 changes: 10 additions & 0 deletions src/components/address/stats/panels/rewards-per-day-panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,11 @@ function PreviousRewardTooltip({
export function RewardsPerDayPanel({
stats,
loading,
hideBalance,
}: {
stats: BlockStats;
loading: boolean;
hideBalance?: boolean;
}) {
return (
<Panel>
Expand All @@ -59,6 +61,7 @@ export function RewardsPerDayPanel({
<TooltipTrigger>
<AlgoAmountDisplay
microAlgoAmount={stats.allTime.avgRewardsPerDay}
hidden={hideBalance}
/>
</TooltipTrigger>
<TooltipContent>
Expand All @@ -68,6 +71,7 @@ export function RewardsPerDayPanel({
showAnimation={false}
showUsdValue={false}
microAlgoAmount={stats.allTime.totalRewards}
hidden={hideBalance}
/>
{` rewarded in ${stats.allTime.totalDays} days (from ${stats.allTime.startDate.toLocaleDateString()} to ${stats.allTime.endDate.toLocaleDateString()})`}
</>
Expand All @@ -87,6 +91,7 @@ export function RewardsPerDayPanel({
microAlgoAmount={
stats.allTime.avgRewardsPerDay * AVERAGE_DAY_IN_MONTH
}
hidden={hideBalance}
/>
</TooltipTrigger>
<TooltipContent>
Expand All @@ -96,6 +101,7 @@ export function RewardsPerDayPanel({
showAnimation={false}
showUsdValue={false}
microAlgoAmount={stats.allTime.avgRewardsPerDay}
hidden={hideBalance}
/>
{` by day x ${AVERAGE_DAY_IN_MONTH} days in a month (365/12)`}
</>
Expand All @@ -114,13 +120,15 @@ export function RewardsPerDayPanel({
<TooltipTrigger>
<AlgoAmountDisplay
microAlgoAmount={stats.last30Days.avgRewardsPerDay}
hidden={hideBalance}
/>
</TooltipTrigger>
<TooltipContent>
<AlgoAmountDisplay
showAnimation={false}
showUsdValue={false}
microAlgoAmount={stats.last30Days.totalRewards}
hidden={hideBalance}
/>{" "}
{`rewarded from ${stats.last30Days.startDate.toLocaleDateString()} to ${stats.last30Days.endDate.toLocaleDateString()}`}
</TooltipContent>
Expand Down Expand Up @@ -151,13 +159,15 @@ export function RewardsPerDayPanel({
<TooltipTrigger>
<AlgoAmountDisplay
microAlgoAmount={stats.last7Days.avgRewardsPerDay}
hidden={hideBalance}
/>
</TooltipTrigger>
<TooltipContent>
<AlgoAmountDisplay
showUsdValue={false}
showAnimation={false}
microAlgoAmount={stats.last7Days.totalRewards}
hidden={hideBalance}
/>{" "}
{`rewarded from ${stats.last7Days.startDate.toLocaleDateString()} to ${stats.last7Days.endDate.toLocaleDateString()}`}
</TooltipContent>
Expand Down
42 changes: 36 additions & 6 deletions src/components/address/stats/panels/total-panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ import { Panel } from "../panel";
export function TotalsPanel({
stats,
loading,
hideBalance,
}: {
stats: BlockStats;
loading: boolean;
hideBalance?: boolean;
}) {
return (
<Panel>
Expand All @@ -19,21 +21,36 @@ export function TotalsPanel({
title="Total rewards"
loading={loading}
skeletonLines={2}
content={<AlgoAmountDisplay microAlgoAmount={stats.totalRewards} />}
content={
<AlgoAmountDisplay
microAlgoAmount={stats.totalRewards}
hidden={hideBalance}
/>
}
/>
<StatBox
title="Total blocks"
loading={loading}
skeletonLines={1}
content={<NumberDisplay value={stats.totalNbOfBlocksWithRewards} />}
content={
<NumberDisplay
value={stats.totalNbOfBlocksWithRewards}
hidden={hideBalance}
/>
}
/>
<StatBox
title="Max blocks in a day"
loading={loading}
skeletonLines={1}
content={
<NumberTooltip
value={<NumberDisplay value={stats.maxBlocksInDay} />}
value={
<NumberDisplay
value={stats.maxBlocksInDay}
hidden={hideBalance}
/>
}
dateString={stats.maxBlocksInDayDateString}
/>
}
Expand All @@ -45,7 +62,10 @@ export function TotalsPanel({
content={
<AmountTooltip
amount={
<AlgoAmountDisplay microAlgoAmount={stats.maxRewardsInDay} />
<AlgoAmountDisplay
microAlgoAmount={stats.maxRewardsInDay}
hidden={hideBalance}
/>
}
dateString={stats.maxRewardsInDayDateString}
/>
Expand All @@ -57,7 +77,12 @@ export function TotalsPanel({
skeletonLines={2}
content={
<AmountTooltip
amount={<AlgoAmountDisplay microAlgoAmount={stats.minReward} />}
amount={
<AlgoAmountDisplay
microAlgoAmount={stats.minReward}
hidden={hideBalance}
/>
}
dateString={stats.minRewardDate}
/>
}
Expand All @@ -68,7 +93,12 @@ export function TotalsPanel({
skeletonLines={2}
content={
<AmountTooltip
amount={<AlgoAmountDisplay microAlgoAmount={stats.maxReward} />}
amount={
<AlgoAmountDisplay
microAlgoAmount={stats.maxReward}
hidden={hideBalance}
/>
}
dateString={stats.maxRewardDate}
/>
}
Expand Down
17 changes: 14 additions & 3 deletions src/components/address/stats/stats-panels.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { BlocksPerDayPanel } from "./panels/blocks-per-day-panel";
import { RewardsPerDayPanel } from "./panels/rewards-per-day-panel";
import { ApyPanel } from "./panels/apy-panel";
import { TotalsPanel } from "./panels/total-panel";
import { useSearch } from "@tanstack/react-router";

const StatsPanels = function StatsPanels({
filteredBlocks,
Expand All @@ -16,6 +17,8 @@ const StatsPanels = function StatsPanels({
resolvedAddresses: ResolvedAddress[];
}) {
const stats = useBlocksStats(filteredBlocks);
const search = useSearch({ from: "/$addresses" });
const hideBalance = search.hideBalance;

return (
<div className="space-y-4">
Expand All @@ -24,10 +27,18 @@ const StatsPanels = function StatsPanels({
loading={loading}
resolvedAddresses={resolvedAddresses}
/>
<TotalsPanel stats={stats} loading={loading} />
<TotalsPanel stats={stats} loading={loading} hideBalance={hideBalance} />
<div className={"flex justify-between gap-3 md:flex-col"}>
<RewardsPerDayPanel stats={stats} loading={loading} />
<BlocksPerDayPanel stats={stats} loading={loading} />
<RewardsPerDayPanel
stats={stats}
loading={loading}
hideBalance={hideBalance}
/>
<BlocksPerDayPanel
stats={stats}
loading={loading}
hideBalance={hideBalance}
/>
</div>
</div>
);
Expand Down
3 changes: 2 additions & 1 deletion src/components/address/stats/status/cache-badges.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ interface CachedAddressInfo {
export function CacheBadges({ onClick }: CacheBadgesProps) {
const search = useSearch({ from: "/$addresses" });
const isCacheEnabled = search.enableCache ?? false;
const isBalanceHidden = search.hideBalance;

const { data: totalSize = 0 } = useQuery({
queryKey: ["cache-size"],
Expand Down Expand Up @@ -69,7 +70,7 @@ export function CacheBadges({ onClick }: CacheBadgesProps) {
<span onClick={onClick} className={onClick ? "cursor-pointer" : ""}>
<span className="text-md inline-flex items-center gap-x-1.5 rounded-md px-2 py-1 font-medium text-gray-900 ring-1 ring-gray-200 ring-inset dark:text-white dark:ring-gray-800">
<Database className="size-3" />
{formatBytes(totalSize)}
{isBalanceHidden ? "*****" : formatBytes(totalSize)}
</span>
</span>
</TooltipTrigger>
Expand Down
4 changes: 3 additions & 1 deletion src/components/number-display.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ interface NumberDisplayProps {
duration?: number;
formatOptions?: Intl.NumberFormatOptions;
animate?: boolean;
hidden?: boolean;
}

export default function NumberDisplay({
Expand All @@ -15,6 +16,7 @@ export default function NumberDisplay({
duration = 0.5,
formatOptions,
animate: shouldAnimate = true,
hidden = false,
}: NumberDisplayProps) {
const motionValue = useMotionValue(0);
const [displayValue, setDisplayValue] = useState(value);
Expand Down Expand Up @@ -50,7 +52,7 @@ export default function NumberDisplay({
animate={{ opacity: 1, scale: 1 }}
transition={{ duration: 0.3 }}
>
{formattedValue}
{hidden ? "*****" : formattedValue}
</motion.span>
);
}