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