refac: notes organization issue

This commit is contained in:
Timothy Jaeryang Baek
2026-01-05 17:34:29 +04:00
parent ca514cd3ed
commit 3f577c0c3f

View File

@@ -215,22 +215,27 @@
const groupNotes = (res) => {
if (!Array.isArray(res)) {
return {}; // or throw new Error("Notes response is not an array")
return []; // Return empty array for invalid input
}
// Build the grouped object
// Build the grouped object while tracking order
const grouped: Record<string, any[]> = {};
const orderedKeys: string[] = [];
for (const note of res) {
const timeRange = getTimeRange(note.updated_at / 1000000000);
if (!grouped[timeRange]) {
grouped[timeRange] = [];
orderedKeys.push(timeRange);
}
grouped[timeRange].push({
...note,
timeRange
});
}
return grouped;
// Return as array of [timeRange, notes] to preserve insertion order
return orderedKeys.map(key => [key, grouped[key]] as [string, any[]]);
};
let dragged = false;
@@ -437,11 +442,11 @@
{#if items !== null && total !== null}
{#if (items ?? []).length > 0}
{@const notes = groupNotes(items)}
{@const groupedNotes = groupNotes(items)}
<div class="@container h-full py-2.5 px-2.5">
<div class="">
{#each Object.keys(notes) as timeRange, idx}
{#each groupedNotes as [timeRange, notesList], idx}
<div
class="w-full text-xs text-gray-500 dark:text-gray-500 font-medium px-2.5 pb-2.5"
>
@@ -450,11 +455,11 @@
{#if displayOption === null}
<div
class="{Object.keys(notes).length - 1 !== idx
class="{groupedNotes.length - 1 !== idx
? 'mb-3'
: ''} gap-1.5 flex flex-col"
>
{#each notes[timeRange] as note, idx (note.id)}
{#each notesList as note, idx (note.id)}
<div
class=" flex cursor-pointer w-full px-3.5 py-1.5 border border-gray-50 dark:border-gray-850/30 bg-transparent dark:hover:bg-gray-850 hover:bg-white rounded-2xl transition"
>
@@ -536,11 +541,11 @@
</div>
{:else if displayOption === 'grid'}
<div
class="{Object.keys(notes).length - 1 !== idx
class="{groupedNotes.length - 1 !== idx
? 'mb-5'
: ''} gap-2.5 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5"
>
{#each notes[timeRange] as note, idx (note.id)}
{#each notesList as note, idx (note.id)}
<div
class=" flex space-x-4 cursor-pointer w-full px-4.5 py-4 border border-gray-50 dark:border-gray-850/30 bg-transparent dark:hover:bg-gray-850 hover:bg-white rounded-2xl transition"
>