nomadweb/frontend/src/lib/tripActions.ts
eric fd87f765c8 Close discover-decide-plan loop: matcher to trip, shareable /compare hub.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-29 02:58:40 -05:00

37 lines
925 B
TypeScript

import type { Destination, TripItem } from "@/lib/types";
import { loadTrip, saveTrip } from "@/lib/tripStorage";
export function destToTripItem(d: Destination, months = 1): TripItem {
return {
slug: d.slug,
name: d.name,
country: d.country,
emoji: d.emoji,
cost: d.cost,
months,
note: "",
};
}
/** Merge destinations into local trip. Skips cities already present. */
export function mergeDestinationsIntoTrip(
dests: Destination[],
months = 1
): { trip: TripItem[]; added: number; skipped: number } {
const trip = loadTrip<TripItem>();
const existing = new Set(trip.map((t) => t.slug));
let added = 0;
let skipped = 0;
for (const d of dests) {
if (existing.has(d.slug)) {
skipped += 1;
continue;
}
trip.push(destToTripItem(d, months));
existing.add(d.slug);
added += 1;
}
if (added > 0) saveTrip(trip);
return { trip, added, skipped };
}