-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathuse-update-access-code.ts
More file actions
74 lines (63 loc) · 2.01 KB
/
use-update-access-code.ts
File metadata and controls
74 lines (63 loc) · 2.01 KB
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import type { AccessCodesUpdateParameters } from '@seamapi/http/connect'
import type { AccessCode } from '@seamapi/types/connect'
import { useQueryClient } from '@tanstack/react-query'
import {
useSeamMutation,
type UseSeamMutationResult,
} from '../use-seam-mutation.js'
export type UseUpdateAccessCodeParams = never
export type UseUpdateAccessCodeData = undefined
export type UseUpdateAccessCodeMutationVariables = Pick<
AccessCodesUpdateParameters,
| 'device_id'
| 'access_code_id'
| 'code'
| 'name'
| 'starts_at'
| 'ends_at'
| 'type'
>
export function useUpdateAccessCode(): UseSeamMutationResult<'/access_codes/update'> {
const queryClient = useQueryClient()
return useSeamMutation('/access_codes/update', {
onSuccess: (_data, variables) => {
if (variables == null) return
queryClient.setQueryData<AccessCode | null>(
['access_codes', 'get', { access_code_id: variables.access_code_id }],
(accessCode) => {
if (accessCode == null) {
return
}
return {
...accessCode,
code: variables.code ?? accessCode.code,
name: variables.name ?? accessCode.name,
starts_at: variables.starts_at ?? accessCode.starts_at,
ends_at: variables.ends_at ?? accessCode.ends_at,
type: variables.type ?? accessCode.type,
status: 'setting',
}
}
)
queryClient.setQueryData<AccessCode[]>(
['access_codes', 'list'],
(accessCodes) => {
if (accessCodes == null) {
return accessCodes
}
return accessCodes.map((accessCode) => {
if (accessCode.access_code_id === variables.access_code_id) {
return {
...accessCode,
code: variables.code ?? accessCode.code,
name: variables.name ?? accessCode.name,
status: 'setting',
}
}
return accessCode
})
}
)
},
})
}