mirror of
https://github.com/tiennm99/exchange-rate-export.git
synced 2026-10-11 03:13:21 +00:00
feat: remember last bank and date range in localStorage
This commit is contained in:
1 parent
ba1de1ae4f
commit
3418461059
1 file changed
+43
-3
@@ -95,16 +95,56 @@ function RateTable({ results, selectedBank }) {
|
||||
);
|
||||
}
|
||||
|
||||
function loadSavedSettings() {
|
||||
if (typeof window === "undefined") return null;
|
||||
try {
|
||||
const saved = localStorage.getItem("exchangeRateSettings");
|
||||
if (!saved) return null;
|
||||
const parsed = JSON.parse(saved);
|
||||
return {
|
||||
bank: parsed.bank || "bidv",
|
||||
startDate: parsed.startDate ? new Date(parsed.startDate) : null,
|
||||
endDate: parsed.endDate ? new Date(parsed.endDate) : null,
|
||||
};
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function saveSettings(bank, startDate, endDate) {
|
||||
try {
|
||||
localStorage.setItem("exchangeRateSettings", JSON.stringify({
|
||||
bank,
|
||||
startDate: startDate?.toISOString(),
|
||||
endDate: endDate?.toISOString(),
|
||||
}));
|
||||
} catch { /* ignore quota errors */ }
|
||||
}
|
||||
|
||||
export default function ExchangeRateViewer() {
|
||||
const [startDate, setStartDate] = useState(() => subDays(new Date(), 7));
|
||||
const [endDate, setEndDate] = useState(() => new Date());
|
||||
const [selectedBank, setSelectedBank] = useState("bidv");
|
||||
const [startDate, setStartDate] = useState(() => {
|
||||
const saved = loadSavedSettings();
|
||||
return saved?.startDate || subDays(new Date(), 7);
|
||||
});
|
||||
const [endDate, setEndDate] = useState(() => {
|
||||
const saved = loadSavedSettings();
|
||||
return saved?.endDate || new Date();
|
||||
});
|
||||
const [selectedBank, setSelectedBank] = useState(() => {
|
||||
const saved = loadSavedSettings();
|
||||
return saved?.bank || "bidv";
|
||||
});
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
const [error, setError] = useState("");
|
||||
const [results, setResults] = useState([]);
|
||||
const [hasFetched, setHasFetched] = useState(false);
|
||||
const [progress, setProgress] = useState(null);
|
||||
|
||||
// Persist settings to localStorage
|
||||
useEffect(() => {
|
||||
saveSettings(selectedBank, startDate, endDate);
|
||||
}, [selectedBank, startDate, endDate]);
|
||||
|
||||
const handleFetch = useCallback(async () => {
|
||||
if (!startDate || !endDate) {
|
||||
setError("Please select both start and end dates");
|
||||
|
||||
Reference in new issue
Block a user