Skip to content

Commit a955848

Browse files
committed
Fix: Deduplicate routes on load + delete from Firebase on delete
1 parent 170ad25 commit a955848

1 file changed

Lines changed: 23 additions & 3 deletions

File tree

src/app/page.tsx

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,18 @@ export default function Home() {
9898
if (firebaseRoutes.length > 0) {
9999
// Sort by date (newest first) and don't merge with localStorage
100100
const sortedRoutes = firebaseRoutes.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
101-
setRoutes(sortedRoutes);
102-
console.log("Set routes to Firebase routes, sorted by date");
101+
102+
// Deduplicate by route ID
103+
const uniqueRoutes = sortedRoutes.filter((route, index, self) =>
104+
index === self.findIndex((r) => r.id === route.id)
105+
);
106+
107+
if (uniqueRoutes.length < sortedRoutes.length) {
108+
console.log("Removed", sortedRoutes.length - uniqueRoutes.length, "duplicate routes");
109+
}
110+
111+
setRoutes(uniqueRoutes);
112+
console.log("Set routes to unique routes:", uniqueRoutes.length);
103113
}
104114
} catch (e) {
105115
console.error("Failed to load routes from Firebase:", e);
@@ -335,12 +345,22 @@ export default function Home() {
335345
return colors[Math.floor(Math.random() * colors.length)];
336346
};
337347

338-
const deleteRoute = (id: string) => {
348+
const deleteRoute = async (id: string) => {
339349
const updated = routes.filter((r) => r.id !== id);
340350
saveRoutes(updated);
341351
if (selectedRoute?.id === id) {
342352
setSelectedRoute(null);
343353
}
354+
// Also delete from Firebase
355+
if (user && db) {
356+
try {
357+
const { deleteDoc } = await import("firebase/firestore");
358+
await deleteDoc(doc(db, "routes", id));
359+
console.log("Deleted route from Firebase:", id);
360+
} catch (e) {
361+
console.error("Failed to delete from Firebase:", e);
362+
}
363+
}
344364
};
345365

346366
const discardSuggestion = () => {

0 commit comments

Comments
 (0)