"use client"; import { getAllUserMemoriesAndSpaces } from "@/app/actions/fetchers"; import { Content, StoredSpace } from "@/server/db/schema"; import { MemoriesIcon, NextIcon, SearchIcon, UrlIcon } from "@repo/ui/icons"; import { NotebookIcon, PaperclipIcon } from "lucide-react"; import Image from "next/image"; import Link from "next/link"; import React, { useEffect, useMemo, useState } from "react"; import Masonry from "react-layout-masonry"; import { getRawTweet } from "@repo/shared-types/utils"; import { MyTweet } from "./render-tweet"; export function MemoriesPage({ memoriesAndSpaces, }: { memoriesAndSpaces: { memories: Content[]; spaces: StoredSpace[] }; }) { const [filter, setFilter] = useState("All"); // Sort Both memories and spaces by their savedAt and createdAt dates respectfully. // The output should be just one single list of items // And it will look something like { item: "memory" | "space", date: Date, data: Content | StoredSpace } const sortedItems = useMemo(() => { // Merge the lists const unifiedItems = [ ...memoriesAndSpaces.memories.map((memory) => ({ item: "memory", date: new Date(memory.savedAt), // Assuming savedAt is a string date data: memory, })), ...memoriesAndSpaces.spaces.map((space) => ({ item: "space", date: new Date(space.createdAt), // Assuming createdAt is a string date data: space, })), ].map((item) => ({ ...item, date: Number(item.date), // Convert the date to a number })); // Sort the merged list return unifiedItems .filter((item) => { if (filter === "All") return true; if (filter === "Spaces" && item.item === "space") { console.log(item); return true; } if (filter === "Pages") return ( item.item === "memory" && (item.data as Content).type === "page" ); if (filter === "Notes") return ( item.item === "memory" && (item.data as Content).type === "note" ); if (filter === "Tweet") return ( item.item === "memory" && (item.data as Content).type === "tweet" ); return false; }) .sort((a, b) => b.date - a.date); }, [memoriesAndSpaces.memories, memoriesAndSpaces.spaces, filter]); return (