@sanity/sdk-react 0.0.0-alpha.21 → 0.0.0-alpha.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/index.d.ts +502 -3460
  2. package/dist/index.js +400 -465
  3. package/dist/index.js.map +1 -1
  4. package/package.json +17 -15
  5. package/src/_exports/index.ts +4 -5
  6. package/src/components/SDKProvider.test.tsx +78 -54
  7. package/src/components/SDKProvider.tsx +31 -26
  8. package/src/components/SanityApp.test.tsx +121 -15
  9. package/src/components/SanityApp.tsx +26 -15
  10. package/src/components/auth/AuthBoundary.test.tsx +32 -14
  11. package/src/components/auth/AuthBoundary.tsx +53 -23
  12. package/src/components/auth/LoginCallback.test.tsx +19 -6
  13. package/src/components/auth/LoginCallback.tsx +2 -11
  14. package/src/components/auth/LoginError.test.tsx +12 -4
  15. package/src/components/auth/LoginError.tsx +13 -21
  16. package/src/components/auth/LoginFooter.test.tsx +7 -3
  17. package/src/context/ResourceProvider.test.tsx +157 -0
  18. package/src/context/ResourceProvider.tsx +111 -0
  19. package/src/context/SanityInstanceContext.ts +1 -1
  20. package/src/hooks/auth/useLoginUrl.tsx +14 -0
  21. package/src/hooks/client/useClient.ts +2 -1
  22. package/src/hooks/comlink/useManageFavorite.test.ts +16 -8
  23. package/src/hooks/comlink/useManageFavorite.ts +37 -13
  24. package/src/hooks/comlink/useRecordDocumentHistoryEvent.test.ts +8 -4
  25. package/src/hooks/comlink/useRecordDocumentHistoryEvent.ts +10 -8
  26. package/src/hooks/context/useSanityInstance.test.tsx +157 -15
  27. package/src/hooks/context/useSanityInstance.ts +66 -26
  28. package/src/hooks/dashboard/useNavigateToStudioDocument.test.ts +13 -31
  29. package/src/hooks/dashboard/useNavigateToStudioDocument.ts +12 -15
  30. package/src/hooks/dashboard/{useStudioWorkspacesByResourceId.test.tsx → useStudioWorkspacesByProjectIdDataset.test.tsx} +13 -13
  31. package/src/hooks/dashboard/{useStudioWorkspacesByResourceId.ts → useStudioWorkspacesByProjectIdDataset.ts} +10 -9
  32. package/src/hooks/datasets/useDatasets.ts +15 -4
  33. package/src/hooks/document/useApplyDocumentActions.test.ts +4 -9
  34. package/src/hooks/document/useApplyDocumentActions.ts +6 -31
  35. package/src/hooks/document/useDocument.test.ts +2 -2
  36. package/src/hooks/document/useDocument.ts +40 -19
  37. package/src/hooks/document/useDocumentEvent.test.ts +2 -3
  38. package/src/hooks/document/useDocumentEvent.ts +7 -11
  39. package/src/hooks/document/useDocumentPermissions.test.ts +204 -0
  40. package/src/hooks/document/useDocumentPermissions.ts +31 -23
  41. package/src/hooks/document/useDocumentSyncStatus.ts +5 -4
  42. package/src/hooks/document/useEditDocument.test.ts +2 -3
  43. package/src/hooks/document/useEditDocument.ts +43 -29
  44. package/src/hooks/documents/useDocuments.test.tsx +30 -3
  45. package/src/hooks/documents/useDocuments.ts +20 -7
  46. package/src/hooks/helpers/createCallbackHook.test.tsx +2 -2
  47. package/src/hooks/helpers/createCallbackHook.tsx +2 -3
  48. package/src/hooks/helpers/createStateSourceHook.test.tsx +1 -1
  49. package/src/hooks/helpers/createStateSourceHook.tsx +5 -8
  50. package/src/hooks/paginatedDocuments/usePaginatedDocuments.test.tsx +43 -18
  51. package/src/hooks/paginatedDocuments/usePaginatedDocuments.ts +36 -50
  52. package/src/hooks/preview/usePreview.test.tsx +66 -7
  53. package/src/hooks/preview/usePreview.tsx +17 -12
  54. package/src/hooks/projection/useProjection.test.tsx +68 -3
  55. package/src/hooks/projection/useProjection.ts +21 -24
  56. package/src/hooks/projects/useProject.ts +7 -4
  57. package/src/hooks/query/useQuery.ts +32 -14
  58. package/src/hooks/users/useUsers.test.tsx +330 -0
  59. package/src/hooks/users/useUsers.ts +65 -52
  60. package/src/components/Login/LoginLinks.test.tsx +0 -90
  61. package/src/components/Login/LoginLinks.tsx +0 -58
  62. package/src/components/auth/Login.test.tsx +0 -27
  63. package/src/components/auth/Login.tsx +0 -39
  64. package/src/components/auth/LoginLayout.test.tsx +0 -19
  65. package/src/components/auth/LoginLayout.tsx +0 -69
  66. package/src/components/auth/authTestHelpers.tsx +0 -11
  67. package/src/context/SanityProvider.test.tsx +0 -25
  68. package/src/context/SanityProvider.tsx +0 -50
  69. package/src/hooks/auth/useLoginUrls.test.tsx +0 -68
  70. package/src/hooks/auth/useLoginUrls.tsx +0 -52
  71. package/src/hooks/users/useUsers.test.ts +0 -163
@@ -1,163 +0,0 @@
1
- import {createUsersStore, type ResourceType, type SanityUser} from '@sanity/sdk'
2
- import {act, renderHook} from '@testing-library/react'
3
- import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest'
4
-
5
- import {useSanityInstance} from '../context/useSanityInstance'
6
- import {useUsers} from './useUsers'
7
-
8
- vi.mock('@sanity/sdk')
9
- vi.mock('../context/useSanityInstance')
10
-
11
- describe('useUsers', () => {
12
- const mockInstance = {}
13
- const mockUser: SanityUser = {
14
- profile: {
15
- id: 'user1',
16
- displayName: 'Test User',
17
- email: 'test@test.com',
18
- provider: 'test',
19
- createdAt: '2021-01-01',
20
- },
21
- sanityUserId: 'user1',
22
- memberships: [],
23
- }
24
-
25
- const getCurrent = vi.fn().mockReturnValue({
26
- users: [],
27
- totalCount: 0,
28
- nextCursor: null,
29
- hasMore: false,
30
- initialFetchCompleted: false,
31
- options: {
32
- resourceType: '' as ResourceType,
33
- resourceId: '',
34
- limit: 100,
35
- },
36
- })
37
- const unsubscribe = vi.fn()
38
- const subscribe = vi.fn().mockReturnValue(unsubscribe)
39
- const dispose = vi.fn()
40
-
41
- const mockUsersStore: ReturnType<typeof createUsersStore> = {
42
- setOptions: vi.fn(),
43
- loadMore: vi.fn(),
44
- resolveUsers: vi.fn(),
45
- getState: vi.fn().mockReturnValue({getCurrent, subscribe}),
46
- dispose,
47
- }
48
-
49
- beforeEach(() => {
50
- vi.mocked(useSanityInstance).mockReturnValue(
51
- mockInstance as unknown as ReturnType<typeof useSanityInstance>,
52
- )
53
- vi.mocked(createUsersStore).mockReturnValue(
54
- mockUsersStore as unknown as ReturnType<typeof createUsersStore>,
55
- )
56
- })
57
-
58
- afterEach(() => {
59
- vi.clearAllMocks()
60
- })
61
-
62
- it('should initialize with given params', () => {
63
- renderHook(() =>
64
- useUsers({
65
- resourceType: 'project',
66
- resourceId: 'proj1',
67
- }),
68
- )
69
-
70
- expect(createUsersStore).toHaveBeenCalledWith(mockInstance)
71
- expect(mockUsersStore.setOptions).toHaveBeenCalledWith({
72
- resourceType: 'project',
73
- resourceId: 'proj1',
74
- })
75
- })
76
-
77
- it('should subscribe to users store changes', () => {
78
- renderHook(() =>
79
- useUsers({
80
- resourceType: 'organization',
81
- resourceId: 'org1',
82
- }),
83
- )
84
- expect(subscribe).toHaveBeenCalledTimes(1)
85
- })
86
-
87
- it('should return current users state', () => {
88
- const mockState = {users: [mockUser], hasMore: true}
89
- getCurrent.mockReturnValue(mockState)
90
-
91
- const {result} = renderHook(() =>
92
- useUsers({
93
- resourceType: 'project',
94
- resourceId: 'proj1',
95
- }),
96
- )
97
- expect(result.current).toMatchObject(mockState)
98
- })
99
-
100
- it('should call loadMore when loadMore is invoked', () => {
101
- const {result} = renderHook(() =>
102
- useUsers({
103
- resourceType: 'project',
104
- resourceId: 'proj1',
105
- }),
106
- )
107
-
108
- act(() => {
109
- result.current.loadMore()
110
- })
111
-
112
- expect(mockUsersStore.loadMore).toHaveBeenCalled()
113
- })
114
-
115
- it('should update options when params change', () => {
116
- const initialParams = {resourceType: 'project' as ResourceType, resourceId: 'proj1'}
117
- const {rerender} = renderHook(({params}) => useUsers(params), {
118
- initialProps: {params: initialParams},
119
- })
120
-
121
- const newParams = {resourceType: 'organization' as ResourceType, resourceId: 'org1'}
122
- rerender({params: newParams})
123
-
124
- expect(mockUsersStore.setOptions).toHaveBeenCalledWith(newParams)
125
- })
126
-
127
- it('should resolve users if initial fetch not completed', () => {
128
- getCurrent.mockReturnValue({initialFetchCompleted: false})
129
-
130
- renderHook(() =>
131
- useUsers({
132
- resourceType: 'project',
133
- resourceId: 'proj1',
134
- }),
135
- )
136
- expect(mockUsersStore.resolveUsers).toHaveBeenCalled()
137
- })
138
-
139
- it('should not resolve users if initial fetch already completed', () => {
140
- getCurrent.mockReturnValue({initialFetchCompleted: true})
141
-
142
- renderHook(() =>
143
- useUsers({
144
- resourceType: 'project',
145
- resourceId: 'proj1',
146
- }),
147
- )
148
- expect(mockUsersStore.resolveUsers).not.toHaveBeenCalled()
149
- })
150
-
151
- it('should clean up store on unmount', () => {
152
- const {unmount} = renderHook(() =>
153
- useUsers({
154
- resourceType: 'project',
155
- resourceId: 'proj1',
156
- }),
157
- )
158
-
159
- unmount()
160
- expect(mockUsersStore.dispose).toHaveBeenCalled()
161
- expect(unsubscribe).toHaveBeenCalled()
162
- })
163
- })