feat(converter): add shareable conversion links via query parameters
This commit is contained in:
27
app/page.tsx
27
app/page.tsx
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user