import { useState } from 'react'

export const usePaginationParams = <T extends { totalSize?: number }>(pageSize: number) => {
  const [params, setParams] = useState({
    value: 1,
    total: 0
  })

  const requestParams = {
    pageSize: params.value,
    skip: (params.value - 1) * pageSize
  }

  const onSuccess = (data: T) => {
    setParams({
      ...params,
      total: Math.ceil((data?.totalSize ?? 0) / pageSize)
    })
  }

  const tableParams = {
    ...params,
    onChange(value: number) {
      setParams({
        ...params,
        value
      })
    }
  }

  return {
    requestParams,
    tableParams,
    onSuccess
  }
}
