feat(converter): add shareable conversion links via query parameters

This commit is contained in:
2026-03-30 17:42:08 +02:00
parent 86fe4b516c
commit a45393ac00
4 changed files with 237 additions and 20 deletions

View File

@@ -1,10 +1,11 @@
"use client";
import { useCallback, useState } from "react";
import { useCallback, useEffect, useState } from "react";
import { ConverterCard } from "@/components/converter/converter-card";
import { Hero } from "@/components/sections/hero";
import { InsightsSection } from "@/components/sections/insights-section";
import { parseConversionShareParams } from "@/lib/share-link";
const DEFAULT_FROM = "USD";
const DEFAULT_TO = "BTC";
@@ -12,6 +13,29 @@ const DEFAULT_TO = "BTC";
export default function HomePage() {
const [selectedFromCode, setSelectedFromCode] = useState(DEFAULT_FROM);
const [selectedToCode, setSelectedToCode] = useState(DEFAULT_TO);
const [forcedAmount, setForcedAmount] = useState<string | undefined>(
undefined,
);
useEffect(() => {
if (typeof window === "undefined") {
return;
}
const parsed = parseConversionShareParams(
new URLSearchParams(window.location.search),
);
if (parsed.fromCode) {
setSelectedFromCode(parsed.fromCode);
}
if (parsed.toCode) {
setSelectedToCode(parsed.toCode);
}
setForcedAmount(parsed.amount);
}, []);
const handleSelectPopularPair = useCallback(
(fromCode: string, toCode: string) => {
@@ -34,6 +58,7 @@ export default function HomePage() {
<ConverterCard
forcedFromCode={selectedFromCode}
forcedToCode={selectedToCode}
forcedAmount={forcedAmount}
onPairChange={handlePairChange}
/>
<InsightsSection