espial-0.0.34: frontend/src/components/BList.tsx
import React from 'react';
import { useBookmarksStore } from '../stores/bookmarksStore';
import type { Bookmark } from '../types';
import { BMark } from './BMark';
/** Renders the full list of bookmarks, delegating each item to BMark. */
export function BList({ initial }: { initial: Bookmark[] }) {
const bmarks = useBookmarksStore((s) => s.bmarks);
const setAll = useBookmarksStore((s) => s.setAll);
const removeById = useBookmarksStore((s) => s.removeById);
const upsert = useBookmarksStore((s) => s.upsert);
React.useEffect(() => {
setAll(initial);
}, [initial, setAll]);
return (
<div>
{bmarks.map((b) => (
<BMark
key={b.bid}
initial={b}
onNotifyRemove={() => {
removeById(b.bid);
}}
onUpdated={(bm) => {
upsert(bm);
}}
/>
))}
</div>
);
}