forked from crowetic/commerce
Removed useResponse helper
This commit is contained in:
parent
8fc549bf55
commit
0816bc967d
@ -1,40 +0,0 @@
|
|||||||
import { useMemo } from 'react'
|
|
||||||
import { responseInterface } from 'swr'
|
|
||||||
import { CommerceError } from './errors'
|
|
||||||
import { Override } from './types'
|
|
||||||
|
|
||||||
export type UseResponseOptions<
|
|
||||||
D,
|
|
||||||
R extends responseInterface<any, CommerceError>
|
|
||||||
> = {
|
|
||||||
descriptors?: PropertyDescriptorMap
|
|
||||||
normalizer?: (data: R['data']) => D
|
|
||||||
}
|
|
||||||
|
|
||||||
export type UseResponse = <D, R extends responseInterface<any, CommerceError>>(
|
|
||||||
response: R,
|
|
||||||
options: UseResponseOptions<D, R>
|
|
||||||
) => D extends object ? Override<R, { data?: D }> : R
|
|
||||||
|
|
||||||
const useResponse: UseResponse = (response, { descriptors, normalizer }) => {
|
|
||||||
const memoizedResponse = useMemo(
|
|
||||||
() =>
|
|
||||||
Object.create(response, {
|
|
||||||
...descriptors,
|
|
||||||
...(normalizer
|
|
||||||
? {
|
|
||||||
data: {
|
|
||||||
get() {
|
|
||||||
return response.data && normalizer(response.data)
|
|
||||||
},
|
|
||||||
enumerable: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
: {}),
|
|
||||||
}),
|
|
||||||
[response]
|
|
||||||
)
|
|
||||||
return memoizedResponse
|
|
||||||
}
|
|
||||||
|
|
||||||
export default useResponse
|
|
Loading…
x
Reference in New Issue
Block a user