@pmcollab/coworkstream-swr
v0.1.0
Published
SWR hooks for @pmcollab/coworkstream — fetching + optimistic mutations.
Readme
@pmcollab/coworkstream-swr
SWR hooks for @pmcollab/coworkstream.
Install
npm install @pmcollab/coworkstream-swr swrUse
import { WorkStream } from '@pmcollab/coworkstream'
import { createWorkStreamSWR } from '@pmcollab/coworkstream-swr'
const { useItems, useItemAction } = createWorkStreamSWR({
swrKey: '/api/inbox',
fetchItems: () => fetch('/api/inbox').then((r) => r.json()),
itemAction: ({ action, item }) =>
fetch(`/api/inbox/${item.id}/${action}`, { method: 'POST' }),
})
function Inbox() {
const { data: items = [], isLoading } = useItems()
const { runAction } = useItemAction()
return (
<WorkStream
items={items}
isLoading={isLoading}
onAction={(action, item) => runAction(action, item)}
/>
)
}What it does
useItems— wrapsuseSWRwith yourfetchItems.useItemAction— returnsrunAction(action, item)which optimistically removes the item, callsitemAction, and rolls back on failure.
Pass optimistic: false to keep items in the cache (useful for in-place edits).
License
Commercial. See LICENSE in the repository root.
