All files / layers / L2W / routes CrudRoute.tsx

100% Statements 7/7
83.33% Branches 5/6
100% Functions 3/3
100% Lines 6/6

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                        8x   8x 7x     7x 7x     8x    
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
}