({
+ queryKey: [
+ "savedRange",
+ responsiveSearchParams.from,
+ responsiveSearchParams.to,
+ ],
+ queryFn: () => {
+ const savedRangeString = localStorage.getItem(STORAGE_KEY);
+ if (savedRangeString) {
+ try {
+ const savedRange = JSON.parse(savedRangeString) as SavedRange;
+ // Get the current range based on the saved range type
+ const { range } = getUniversalBridgeFiltersFromSearchParams({
+ from: undefined,
+ to: undefined,
+ interval: savedRange.interval,
+ defaultRange: (savedRange.rangeType || "last-30") as DurationId,
+ });
+
+ setResponsiveSearchParams((v) => ({
+ ...v,
+ from: normalizeTimeISOString(range.from),
+ to: normalizeTimeISOString(range.to),
+ interval: savedRange.interval,
+ }));
+ } catch (e) {
+ localStorage.removeItem(STORAGE_KEY);
+ console.error("Failed to parse saved range:", e);
+ }
+ }
+ return null;
+ },
+ enabled: !responsiveSearchParams.from && !responsiveSearchParams.to,
+ });
+
const { range, interval } = getUniversalBridgeFiltersFromSearchParams({
from: responsiveSearchParams.from,
to: responsiveSearchParams.to,
interval: responsiveSearchParams.interval,
+ defaultRange: "last-30",
});
+ const saveToLocalStorage = (params: {
+ rangeType: string;
+ interval: "day" | "week";
+ }) => {
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(params));
+ };
+
return (
{
- setResponsiveSearchParams((v) => {
- return {
+ setResponsiveSearchParams((v: SearchParams) => {
+ const newParams = {
...v,
from: normalizeTimeISOString(newRange.from),
to: normalizeTimeISOString(newRange.to),
};
+ // Save to localStorage
+ saveToLocalStorage({
+ rangeType: newRange.type || "last-30",
+ interval: newParams.interval || "day",
+ });
+ return newParams;
});
}}
/>
@@ -38,11 +105,17 @@ export function PayAnalyticsFilter() {
{
- setResponsiveSearchParams((v) => {
- return {
+ setResponsiveSearchParams((v: SearchParams) => {
+ const newParams = {
...v,
interval: newInterval,
};
+ // Save to localStorage
+ saveToLocalStorage({
+ rangeType: range.type || "last-30",
+ interval: newInterval,
+ });
+ return newParams;
});
}}
/>
diff --git a/apps/dashboard/src/lib/time.ts b/apps/dashboard/src/lib/time.ts
index 900b9e99204..6b06f0e1395 100644
--- a/apps/dashboard/src/lib/time.ts
+++ b/apps/dashboard/src/lib/time.ts
@@ -1,4 +1,5 @@
import { getFiltersFromSearchParams } from "@/lib/time";
+import type { DurationId } from "../components/analytics/date-range-selector";
export function getNebulaFiltersFromSearchParams(params: {
from: string | undefined | string[];
@@ -17,11 +18,12 @@ export function getUniversalBridgeFiltersFromSearchParams(params: {
from: string | undefined | string[];
to: string | undefined | string[];
interval: string | undefined | string[];
+ defaultRange: DurationId;
}) {
return getFiltersFromSearchParams({
from: params.from,
to: params.to,
interval: params.interval,
- defaultRange: "last-120",
+ defaultRange: params.defaultRange,
});
}