All files / layers / L2W / routes CrudRoute.tsx

82.85% Statements 29/35
62.5% Branches 15/24
90.9% Functions 10/11
87.5% Lines 28/32

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25      48x   12x 12x 12x 12x       8x   8x 7x     7x 19x     8x   12x
import { useEffect } from 'react'
import { useParams } from 'react-router-dom'
import type { RouteContext } from '@/layers/interfaces'
import { setRouteContext } from './routeContextStore'
 
interface CrudRouteProps {
  owner: string
  mode: 'add' | 'edit'
  prefix?: string
}
 
export function CrudRoute({ owner, mode, prefix }: CrudRouteProps) {
  const { id } = useParams<{ id?: string }>()
 
  useEffect(() => {
    const routeContext: RouteContext = id
      ? { page: 'detail', id, crud: { mode, owner, ...(prefix ? { prefix } : {}) } }
      : { page: 'collection', crud: { mode: 'add', owner, ...(prefix ? { prefix } : {}) } }
    setRouteContext(routeContext)
    return () => { setRouteContext(null) }
  }, [id, owner, mode, prefix])

  return null
}