37 lines
925 B
TypeScript
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 };
|
|
}
|