41 lines
1010 B
TypeScript
41 lines
1010 B
TypeScript
"use client";
|
|
|
|
import { clearDraft, loadDraft, saveDraft } from "@/lib/localDraft";
|
|
|
|
export type NextStopPrefs = {
|
|
budget: number;
|
|
internet: number;
|
|
climate: string;
|
|
selectedTags: string[];
|
|
};
|
|
|
|
const KEY = "nomadro-next-stop-prefs";
|
|
|
|
const DEFAULTS: NextStopPrefs = {
|
|
budget: 8000,
|
|
internet: 50,
|
|
climate: "mild",
|
|
selectedTags: ["社区活跃"],
|
|
};
|
|
|
|
export function loadNextStopPrefs(): NextStopPrefs {
|
|
const raw = loadDraft<Partial<NextStopPrefs>>(KEY);
|
|
if (!raw) return { ...DEFAULTS };
|
|
return {
|
|
budget: typeof raw.budget === "number" ? raw.budget : DEFAULTS.budget,
|
|
internet: typeof raw.internet === "number" ? raw.internet : DEFAULTS.internet,
|
|
climate: raw.climate || DEFAULTS.climate,
|
|
selectedTags: Array.isArray(raw.selectedTags) && raw.selectedTags.length
|
|
? raw.selectedTags
|
|
: DEFAULTS.selectedTags,
|
|
};
|
|
}
|
|
|
|
export function saveNextStopPrefs(prefs: NextStopPrefs) {
|
|
saveDraft(KEY, prefs);
|
|
}
|
|
|
|
export function clearNextStopPrefs() {
|
|
clearDraft(KEY);
|
|
}
|