Skip to content

Commit 2d8937e

Browse files
committed
chore: add perf improvements
1 parent 29dca11 commit 2d8937e

4 files changed

Lines changed: 44 additions & 28 deletions

File tree

packages/web/src/routers/index.test.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,19 @@ import { describe, expect, it } from "bun:test";
44

55
describe("routeObjects", () => {
66
it("registers /life as a public route before authenticated app routes", () => {
7-
const [lifeRoute, authenticatedRoute] = routeObjects;
7+
const lifeRoute = routeObjects.find((r) => r.path === ROOT_ROUTES.LIFE);
8+
const lifeRouteIndex = routeObjects.findIndex(
9+
(r) => r.path === ROOT_ROUTES.LIFE,
10+
);
11+
const authenticatedRoute = routeObjects.find((r) => r.loader !== undefined);
12+
const authenticatedRouteIndex = routeObjects.findIndex(
13+
(r) => r.loader !== undefined,
14+
);
815

9-
expect(lifeRoute.path).toBe(ROOT_ROUTES.LIFE);
10-
expect(lifeRoute.loader).toBeUndefined();
11-
expect(authenticatedRoute.loader).toBeDefined();
16+
expect(lifeRoute).toBeDefined();
17+
expect(lifeRoute?.loader).toBeUndefined();
18+
expect(authenticatedRoute).toBeDefined();
19+
expect(authenticatedRoute?.loader).toBeDefined();
20+
expect(lifeRouteIndex).toBeLessThan(authenticatedRouteIndex);
1221
});
1322
});

packages/web/src/views/Life/LifeAboutDialog.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ export function LifeAboutDialog() {
3838
<a
3939
className="text-accent-primary underline hover:no-underline"
4040
href={BLOG_LINK}
41+
rel="noopener noreferrer"
42+
target="_blank"
4143
>
4244
Visualize Your Life in Weeks
4345
</a>

packages/web/src/views/Life/LifeSelect.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export function LifeSelect({
1515
value,
1616
onChange,
1717
children,
18-
className = "max-w-35",
18+
className = "max-w-36",
1919
}: LifeSelectProps) {
2020
const handleChange: ChangeEventHandler<HTMLSelectElement> = (event) => {
2121
onChange(event.target.value);

packages/web/src/views/Life/LifeView.tsx

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,33 @@ export function LifeView({ enableDotTooltips = true, today }: LifeViewProps) {
126126
[birthYear, birthMonth, birthDay, totalDots, today],
127127
);
128128
const columns = getLifeGridColumns({ isMobile, zoom });
129+
const dots = useMemo(() => {
130+
return Array.from({ length: totalDots }).map((_, index) => {
131+
const weekNumber = index + 1;
132+
const isFilled = index < weeksLived;
133+
const dot = (
134+
<span
135+
className={`block h-2 w-2 rounded-[1px] transition-colors ${
136+
isFilled
137+
? "bg-accent-primary"
138+
: "border border-border-primary bg-bg-primary"
139+
}`}
140+
key={weekNumber}
141+
title={`Week ${weekNumber}`}
142+
/>
143+
);
144+
145+
if (enableDotTooltips) {
146+
return (
147+
<LifeDotTooltip key={weekNumber} weekNumber={weekNumber}>
148+
{dot}
149+
</LifeDotTooltip>
150+
);
151+
}
152+
153+
return dot;
154+
});
155+
}, [totalDots, weeksLived, enableDotTooltips]);
129156

130157
useEffect(() => {
131158
const maxDay = Number.parseInt(validDays.at(-1) ?? "31", 10);
@@ -341,29 +368,7 @@ export function LifeView({ enableDotTooltips = true, today }: LifeViewProps) {
341368
gridTemplateColumns: `repeat(${columns}, ${DOT_SIZE}px)`,
342369
}}
343370
>
344-
{Array.from({ length: totalDots }).map((_, index) => {
345-
const weekNumber = index + 1;
346-
const isFilled = index < weeksLived;
347-
const dot = (
348-
<span
349-
className={`block h-2 w-2 rounded-[1px] transition-colors ${
350-
isFilled
351-
? "bg-accent-primary"
352-
: "border border-border-primary bg-bg-primary"
353-
}`}
354-
key={weekNumber}
355-
title={`Week ${weekNumber}`}
356-
/>
357-
);
358-
359-
return enableDotTooltips ? (
360-
<LifeDotTooltip key={weekNumber} weekNumber={weekNumber}>
361-
{dot}
362-
</LifeDotTooltip>
363-
) : (
364-
<span key={weekNumber}>{dot}</span>
365-
);
366-
})}
371+
{dots}
367372
</div>
368373
</div>
369374
</div>

0 commit comments

Comments
 (0)