@oxyhq/services 5.16.0 → 5.16.2
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.
- package/lib/commonjs/core/mixins/OxyServices.assets.js +15 -0
- package/lib/commonjs/core/mixins/OxyServices.assets.js.map +1 -1
- package/lib/commonjs/core/mixins/OxyServices.user.js +14 -13
- package/lib/commonjs/core/mixins/OxyServices.user.js.map +1 -1
- package/lib/commonjs/crypto/keyManager.js +164 -3
- package/lib/commonjs/crypto/keyManager.js.map +1 -1
- package/lib/commonjs/crypto/signatureService.js +26 -0
- package/lib/commonjs/crypto/signatureService.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/components/GroupedSection.js +1 -1
- package/lib/commonjs/ui/components/GroupedSection.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +71 -24
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js +1 -4
- package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +177 -4
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +148 -49
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useSessionManagement.js +22 -2
- package/lib/commonjs/ui/context/hooks/useSessionManagement.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/index.js +28 -0
- package/lib/commonjs/ui/hooks/mutations/index.js.map +1 -0
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +314 -0
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -0
- package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +193 -0
- package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -0
- package/lib/commonjs/ui/hooks/queries/index.js +39 -0
- package/lib/commonjs/ui/hooks/queries/index.js.map +1 -0
- package/lib/commonjs/ui/hooks/queries/queryKeys.js +85 -0
- package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -0
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +145 -0
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -0
- package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +138 -0
- package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -0
- package/lib/commonjs/ui/hooks/queryClient.js +117 -0
- package/lib/commonjs/ui/hooks/queryClient.js.map +1 -0
- package/lib/commonjs/ui/hooks/useIdentityMutations.js +111 -0
- package/lib/commonjs/ui/hooks/useIdentityMutations.js.map +1 -0
- package/lib/commonjs/ui/hooks/useProfileEditing.js +42 -58
- package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
- package/lib/commonjs/ui/hooks/useQueryClient.js +20 -0
- package/lib/commonjs/ui/hooks/useQueryClient.js.map +1 -0
- package/lib/commonjs/ui/hooks/useSessionManagement.js +22 -2
- package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +43 -42
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +63 -58
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +6 -6
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/stores/accountStore.js +57 -42
- package/lib/commonjs/ui/stores/accountStore.js.map +1 -1
- package/lib/commonjs/ui/stores/authStore.js +4 -25
- package/lib/commonjs/ui/stores/authStore.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.assets.js +15 -0
- package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.user.js +14 -13
- package/lib/module/core/mixins/OxyServices.user.js.map +1 -1
- package/lib/module/crypto/keyManager.js +164 -3
- package/lib/module/crypto/keyManager.js.map +1 -1
- package/lib/module/crypto/signatureService.js +26 -0
- package/lib/module/crypto/signatureService.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/components/GroupedSection.js +1 -1
- package/lib/module/ui/components/GroupedSection.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +72 -25
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/profile/EditDisplayNameModal.js +1 -4
- package/lib/module/ui/components/profile/EditDisplayNameModal.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +176 -4
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +148 -49
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/context/hooks/useSessionManagement.js +22 -2
- package/lib/module/ui/context/hooks/useSessionManagement.js.map +1 -1
- package/lib/module/ui/hooks/mutations/index.js +6 -0
- package/lib/module/ui/hooks/mutations/index.js.map +1 -0
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +308 -0
- package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -0
- package/lib/module/ui/hooks/mutations/useServicesMutations.js +185 -0
- package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -0
- package/lib/module/ui/hooks/queries/index.js +7 -0
- package/lib/module/ui/hooks/queries/index.js.map +1 -0
- package/lib/module/ui/hooks/queries/queryKeys.js +78 -0
- package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -0
- package/lib/module/ui/hooks/queries/useAccountQueries.js +136 -0
- package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -0
- package/lib/module/ui/hooks/queries/useServicesQueries.js +130 -0
- package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -0
- package/lib/module/ui/hooks/queryClient.js +110 -0
- package/lib/module/ui/hooks/queryClient.js.map +1 -0
- package/lib/module/ui/hooks/useIdentityMutations.js +105 -0
- package/lib/module/ui/hooks/useIdentityMutations.js.map +1 -0
- package/lib/module/ui/hooks/useProfileEditing.js +43 -59
- package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
- package/lib/module/ui/hooks/useQueryClient.js +15 -0
- package/lib/module/ui/hooks/useQueryClient.js.map +1 -0
- package/lib/module/ui/hooks/useSessionManagement.js +22 -2
- package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +43 -42
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +63 -58
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +6 -6
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/stores/accountStore.js +57 -42
- package/lib/module/ui/stores/accountStore.js.map +1 -1
- package/lib/module/ui/stores/authStore.js +4 -25
- package/lib/module/ui/stores/authStore.js.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.assets.d.ts +7 -1
- package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.user.d.ts +4 -5
- package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
- package/lib/typescript/core/mixins/index.d.ts +1 -1
- package/lib/typescript/core/mixins/index.d.ts.map +1 -1
- package/lib/typescript/crypto/keyManager.d.ts +19 -2
- package/lib/typescript/crypto/keyManager.d.ts.map +1 -1
- package/lib/typescript/crypto/signatureService.d.ts +5 -0
- package/lib/typescript/crypto/signatureService.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/models/interfaces.d.ts +21 -0
- package/lib/typescript/models/interfaces.d.ts.map +1 -1
- package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/ui/components/profile/EditDisplayNameModal.d.ts.map +1 -1
- package/lib/typescript/ui/context/OxyContext.d.ts +4 -0
- package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts +3 -1
- package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/mutations/index.d.ts +3 -0
- package/lib/typescript/ui/hooks/mutations/index.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts +25 -0
- package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts +23 -0
- package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/queries/index.d.ts +4 -0
- package/lib/typescript/ui/hooks/queries/index.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/queries/queryKeys.d.ts +56 -0
- package/lib/typescript/ui/hooks/queries/queryKeys.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts +41 -0
- package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts +34 -0
- package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/queryClient.d.ts +19 -0
- package/lib/typescript/ui/hooks/queryClient.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/useIdentityMutations.d.ts +29 -0
- package/lib/typescript/ui/hooks/useIdentityMutations.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/useQueryClient.d.ts +7 -0
- package/lib/typescript/ui/hooks/useQueryClient.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/useSessionManagement.d.ts +3 -1
- package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/ui/stores/accountStore.d.ts.map +1 -1
- package/lib/typescript/ui/stores/authStore.d.ts +0 -4
- package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
- package/package.json +6 -5
- package/src/core/mixins/OxyServices.assets.ts +16 -1
- package/src/core/mixins/OxyServices.user.ts +17 -10
- package/src/crypto/keyManager.ts +177 -2
- package/src/crypto/signatureService.ts +30 -0
- package/src/index.ts +4 -1
- package/src/models/interfaces.ts +23 -0
- package/src/ui/components/GroupedSection.tsx +1 -1
- package/src/ui/components/OxyProvider.tsx +91 -37
- package/src/ui/components/profile/EditDisplayNameModal.tsx +1 -3
- package/src/ui/context/OxyContext.tsx +185 -2
- package/src/ui/context/hooks/useAuthOperations.ts +171 -58
- package/src/ui/context/hooks/useSessionManagement.ts +24 -1
- package/src/ui/hooks/mutations/index.ts +4 -0
- package/src/ui/hooks/mutations/useAccountMutations.ts +277 -0
- package/src/ui/hooks/mutations/useServicesMutations.ts +164 -0
- package/src/ui/hooks/queries/index.ts +5 -0
- package/src/ui/hooks/queries/queryKeys.ts +73 -0
- package/src/ui/hooks/queries/useAccountQueries.ts +126 -0
- package/src/ui/hooks/queries/useServicesQueries.ts +121 -0
- package/src/ui/hooks/queryClient.ts +112 -0
- package/src/ui/hooks/useIdentityMutations.ts +115 -0
- package/src/ui/hooks/useProfileEditing.ts +46 -60
- package/src/ui/hooks/useQueryClient.ts +17 -0
- package/src/ui/hooks/useSessionManagement.ts +24 -1
- package/src/ui/screens/AccountOverviewScreen.tsx +38 -46
- package/src/ui/screens/AccountSettingsScreen.tsx +54 -54
- package/src/ui/screens/WelcomeNewUserScreen.tsx +13 -12
- package/src/ui/stores/accountStore.ts +54 -43
- package/src/ui/stores/authStore.ts +3 -17
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
4
|
+
import { queryKeys, invalidateAccountQueries, invalidateUserQueries } from '../queries/queryKeys';
|
|
5
|
+
import { useOxy } from '../../context/OxyContext';
|
|
6
|
+
import { toast } from '../../../lib/sonner';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Update user profile with optimistic updates and offline queue support
|
|
10
|
+
*/
|
|
11
|
+
export const useUpdateProfile = () => {
|
|
12
|
+
const {
|
|
13
|
+
oxyServices,
|
|
14
|
+
activeSessionId,
|
|
15
|
+
user,
|
|
16
|
+
syncIdentity
|
|
17
|
+
} = useOxy();
|
|
18
|
+
const queryClient = useQueryClient();
|
|
19
|
+
return useMutation({
|
|
20
|
+
mutationFn: async updates => {
|
|
21
|
+
// Ensure we have a valid token before making the request
|
|
22
|
+
if (!oxyServices.hasValidToken() && activeSessionId) {
|
|
23
|
+
try {
|
|
24
|
+
// Try to get token for the session
|
|
25
|
+
await oxyServices.getTokenBySession(activeSessionId);
|
|
26
|
+
} catch (tokenError) {
|
|
27
|
+
// If getting token fails, might be an offline session - try syncing
|
|
28
|
+
const errorMessage = tokenError instanceof Error ? tokenError.message : String(tokenError);
|
|
29
|
+
if (errorMessage.includes('AUTH_REQUIRED_OFFLINE_SESSION') || errorMessage.includes('offline')) {
|
|
30
|
+
try {
|
|
31
|
+
await syncIdentity();
|
|
32
|
+
// Retry getting token after sync
|
|
33
|
+
await oxyServices.getTokenBySession(activeSessionId);
|
|
34
|
+
} catch (syncError) {
|
|
35
|
+
throw new Error('Session needs to be synced. Please try again.');
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
throw tokenError;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
return await oxyServices.updateProfile(updates);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
const errorMessage = error?.message || '';
|
|
46
|
+
const status = error?.status || error?.response?.status;
|
|
47
|
+
|
|
48
|
+
// Handle authentication errors
|
|
49
|
+
if (status === 401 || errorMessage.includes('Authentication required') || errorMessage.includes('Invalid or missing authorization header')) {
|
|
50
|
+
// Try to sync session and get token
|
|
51
|
+
if (activeSessionId) {
|
|
52
|
+
try {
|
|
53
|
+
await syncIdentity();
|
|
54
|
+
await oxyServices.getTokenBySession(activeSessionId);
|
|
55
|
+
// Retry the update after getting token
|
|
56
|
+
return await oxyServices.updateProfile(updates);
|
|
57
|
+
} catch (retryError) {
|
|
58
|
+
throw new Error('Authentication failed. Please sign in again.');
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
throw new Error('No active session. Please sign in.');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// TanStack Query will automatically retry on network errors
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
// Optimistic update
|
|
70
|
+
onMutate: async updates => {
|
|
71
|
+
// Cancel outgoing refetches
|
|
72
|
+
await queryClient.cancelQueries({
|
|
73
|
+
queryKey: queryKeys.accounts.current()
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// Snapshot previous value
|
|
77
|
+
const previousUser = queryClient.getQueryData(queryKeys.accounts.current());
|
|
78
|
+
|
|
79
|
+
// Optimistically update
|
|
80
|
+
if (previousUser) {
|
|
81
|
+
queryClient.setQueryData(queryKeys.accounts.current(), {
|
|
82
|
+
...previousUser,
|
|
83
|
+
...updates
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// Also update profile query if sessionId is available
|
|
87
|
+
if (activeSessionId) {
|
|
88
|
+
queryClient.setQueryData(queryKeys.users.profile(activeSessionId), {
|
|
89
|
+
...previousUser,
|
|
90
|
+
...updates
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
previousUser
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
// On error, rollback
|
|
99
|
+
onError: (error, updates, context) => {
|
|
100
|
+
if (context?.previousUser) {
|
|
101
|
+
queryClient.setQueryData(queryKeys.accounts.current(), context.previousUser);
|
|
102
|
+
if (activeSessionId) {
|
|
103
|
+
queryClient.setQueryData(queryKeys.users.profile(activeSessionId), context.previousUser);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
toast.error(error instanceof Error ? error.message : 'Failed to update profile');
|
|
107
|
+
},
|
|
108
|
+
// On success, invalidate and refetch
|
|
109
|
+
onSuccess: data => {
|
|
110
|
+
// Update cache with server response
|
|
111
|
+
queryClient.setQueryData(queryKeys.accounts.current(), data);
|
|
112
|
+
if (activeSessionId) {
|
|
113
|
+
queryClient.setQueryData(queryKeys.users.profile(activeSessionId), data);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Invalidate related queries
|
|
117
|
+
invalidateUserQueries(queryClient);
|
|
118
|
+
},
|
|
119
|
+
// Always refetch after error or success
|
|
120
|
+
onSettled: () => {
|
|
121
|
+
queryClient.invalidateQueries({
|
|
122
|
+
queryKey: queryKeys.accounts.current()
|
|
123
|
+
});
|
|
124
|
+
if (activeSessionId) {
|
|
125
|
+
queryClient.invalidateQueries({
|
|
126
|
+
queryKey: queryKeys.users.profile(activeSessionId)
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Upload avatar with progress tracking and offline queue support
|
|
135
|
+
*/
|
|
136
|
+
export const useUploadAvatar = () => {
|
|
137
|
+
const {
|
|
138
|
+
oxyServices,
|
|
139
|
+
activeSessionId,
|
|
140
|
+
syncIdentity
|
|
141
|
+
} = useOxy();
|
|
142
|
+
const queryClient = useQueryClient();
|
|
143
|
+
return useMutation({
|
|
144
|
+
mutationFn: async file => {
|
|
145
|
+
// Ensure we have a valid token before making the request
|
|
146
|
+
if (!oxyServices.hasValidToken() && activeSessionId) {
|
|
147
|
+
try {
|
|
148
|
+
await oxyServices.getTokenBySession(activeSessionId);
|
|
149
|
+
} catch (tokenError) {
|
|
150
|
+
const errorMessage = tokenError instanceof Error ? tokenError.message : String(tokenError);
|
|
151
|
+
if (errorMessage.includes('AUTH_REQUIRED_OFFLINE_SESSION') || errorMessage.includes('offline')) {
|
|
152
|
+
try {
|
|
153
|
+
await syncIdentity();
|
|
154
|
+
await oxyServices.getTokenBySession(activeSessionId);
|
|
155
|
+
} catch (syncError) {
|
|
156
|
+
throw new Error('Session needs to be synced. Please try again.');
|
|
157
|
+
}
|
|
158
|
+
} else {
|
|
159
|
+
throw tokenError;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
// Upload file first
|
|
165
|
+
const uploadResult = await oxyServices.assetUpload(file, 'public');
|
|
166
|
+
const fileId = uploadResult?.file?.id || uploadResult?.id || uploadResult;
|
|
167
|
+
if (!fileId || typeof fileId !== 'string') {
|
|
168
|
+
throw new Error('Failed to get file ID from upload result');
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Update profile with file ID
|
|
172
|
+
return await oxyServices.updateProfile({
|
|
173
|
+
avatar: fileId
|
|
174
|
+
});
|
|
175
|
+
} catch (error) {
|
|
176
|
+
const errorMessage = error?.message || '';
|
|
177
|
+
const status = error?.status || error?.response?.status;
|
|
178
|
+
|
|
179
|
+
// Handle authentication errors
|
|
180
|
+
if (status === 401 || errorMessage.includes('Authentication required') || errorMessage.includes('Invalid or missing authorization header')) {
|
|
181
|
+
if (activeSessionId) {
|
|
182
|
+
try {
|
|
183
|
+
await syncIdentity();
|
|
184
|
+
await oxyServices.getTokenBySession(activeSessionId);
|
|
185
|
+
// Retry upload
|
|
186
|
+
const uploadResult = await oxyServices.assetUpload(file, 'public');
|
|
187
|
+
const fileId = uploadResult?.file?.id || uploadResult?.id || uploadResult;
|
|
188
|
+
if (!fileId || typeof fileId !== 'string') {
|
|
189
|
+
throw new Error('Failed to get file ID from upload result');
|
|
190
|
+
}
|
|
191
|
+
return await oxyServices.updateProfile({
|
|
192
|
+
avatar: fileId
|
|
193
|
+
});
|
|
194
|
+
} catch (retryError) {
|
|
195
|
+
throw new Error('Authentication failed. Please sign in again.');
|
|
196
|
+
}
|
|
197
|
+
} else {
|
|
198
|
+
throw new Error('No active session. Please sign in.');
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// TanStack Query will automatically retry on network errors
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
onMutate: async file => {
|
|
207
|
+
await queryClient.cancelQueries({
|
|
208
|
+
queryKey: queryKeys.accounts.current()
|
|
209
|
+
});
|
|
210
|
+
const previousUser = queryClient.getQueryData(queryKeys.accounts.current());
|
|
211
|
+
|
|
212
|
+
// Optimistically set a temporary avatar (using file URI as placeholder)
|
|
213
|
+
if (previousUser) {
|
|
214
|
+
const optimisticUser = {
|
|
215
|
+
...previousUser,
|
|
216
|
+
avatar: file.uri // Temporary, will be replaced with fileId
|
|
217
|
+
};
|
|
218
|
+
queryClient.setQueryData(queryKeys.accounts.current(), optimisticUser);
|
|
219
|
+
if (activeSessionId) {
|
|
220
|
+
queryClient.setQueryData(queryKeys.users.profile(activeSessionId), optimisticUser);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
previousUser
|
|
225
|
+
};
|
|
226
|
+
},
|
|
227
|
+
onError: (error, file, context) => {
|
|
228
|
+
if (context?.previousUser) {
|
|
229
|
+
queryClient.setQueryData(queryKeys.accounts.current(), context.previousUser);
|
|
230
|
+
if (activeSessionId) {
|
|
231
|
+
queryClient.setQueryData(queryKeys.users.profile(activeSessionId), context.previousUser);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
toast.error(error instanceof Error ? error.message : 'Failed to upload avatar');
|
|
235
|
+
},
|
|
236
|
+
onSuccess: data => {
|
|
237
|
+
queryClient.setQueryData(queryKeys.accounts.current(), data);
|
|
238
|
+
if (activeSessionId) {
|
|
239
|
+
queryClient.setQueryData(queryKeys.users.profile(activeSessionId), data);
|
|
240
|
+
}
|
|
241
|
+
invalidateUserQueries(queryClient);
|
|
242
|
+
toast.success('Avatar updated successfully');
|
|
243
|
+
},
|
|
244
|
+
onSettled: () => {
|
|
245
|
+
queryClient.invalidateQueries({
|
|
246
|
+
queryKey: queryKeys.accounts.current()
|
|
247
|
+
});
|
|
248
|
+
if (activeSessionId) {
|
|
249
|
+
queryClient.invalidateQueries({
|
|
250
|
+
queryKey: queryKeys.users.profile(activeSessionId)
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Update account settings
|
|
259
|
+
*/
|
|
260
|
+
export const useUpdateAccountSettings = () => {
|
|
261
|
+
const {
|
|
262
|
+
oxyServices,
|
|
263
|
+
activeSessionId
|
|
264
|
+
} = useOxy();
|
|
265
|
+
const queryClient = useQueryClient();
|
|
266
|
+
return useMutation({
|
|
267
|
+
mutationFn: async settings => {
|
|
268
|
+
return await oxyServices.updateProfile({
|
|
269
|
+
privacySettings: settings
|
|
270
|
+
});
|
|
271
|
+
},
|
|
272
|
+
onMutate: async settings => {
|
|
273
|
+
await queryClient.cancelQueries({
|
|
274
|
+
queryKey: queryKeys.accounts.settings()
|
|
275
|
+
});
|
|
276
|
+
const previousUser = queryClient.getQueryData(queryKeys.accounts.current());
|
|
277
|
+
if (previousUser) {
|
|
278
|
+
queryClient.setQueryData(queryKeys.accounts.current(), {
|
|
279
|
+
...previousUser,
|
|
280
|
+
privacySettings: {
|
|
281
|
+
...previousUser.privacySettings,
|
|
282
|
+
...settings
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
return {
|
|
287
|
+
previousUser
|
|
288
|
+
};
|
|
289
|
+
},
|
|
290
|
+
onError: (error, settings, context) => {
|
|
291
|
+
if (context?.previousUser) {
|
|
292
|
+
queryClient.setQueryData(queryKeys.accounts.current(), context.previousUser);
|
|
293
|
+
}
|
|
294
|
+
toast.error(error instanceof Error ? error.message : 'Failed to update settings');
|
|
295
|
+
},
|
|
296
|
+
onSuccess: data => {
|
|
297
|
+
queryClient.setQueryData(queryKeys.accounts.current(), data);
|
|
298
|
+
invalidateAccountQueries(queryClient);
|
|
299
|
+
toast.success('Settings updated successfully');
|
|
300
|
+
},
|
|
301
|
+
onSettled: () => {
|
|
302
|
+
queryClient.invalidateQueries({
|
|
303
|
+
queryKey: queryKeys.accounts.settings()
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
};
|
|
308
|
+
//# sourceMappingURL=useAccountMutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMutation","useQueryClient","queryKeys","invalidateAccountQueries","invalidateUserQueries","useOxy","toast","useUpdateProfile","oxyServices","activeSessionId","user","syncIdentity","queryClient","mutationFn","updates","hasValidToken","getTokenBySession","tokenError","errorMessage","Error","message","String","includes","syncError","updateProfile","error","status","response","retryError","onMutate","cancelQueries","queryKey","accounts","current","previousUser","getQueryData","setQueryData","users","profile","onError","context","onSuccess","data","onSettled","invalidateQueries","useUploadAvatar","file","uploadResult","assetUpload","fileId","id","avatar","optimisticUser","uri","success","useUpdateAccountSettings","settings","privacySettings"],"sourceRoot":"../../../../../src","sources":["ui/hooks/mutations/useAccountMutations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
4
|
+
import { queryKeys, invalidateSessionQueries } from '../queries/queryKeys';
|
|
5
|
+
import { useOxy } from '../../context/OxyContext';
|
|
6
|
+
import { toast } from '../../../lib/sonner';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Switch active session
|
|
10
|
+
*/
|
|
11
|
+
export const useSwitchSession = () => {
|
|
12
|
+
const {
|
|
13
|
+
switchSession,
|
|
14
|
+
activeSessionId
|
|
15
|
+
} = useOxy();
|
|
16
|
+
const queryClient = useQueryClient();
|
|
17
|
+
return useMutation({
|
|
18
|
+
mutationFn: async sessionId => {
|
|
19
|
+
return await switchSession(sessionId);
|
|
20
|
+
},
|
|
21
|
+
onSuccess: user => {
|
|
22
|
+
// Invalidate all session queries
|
|
23
|
+
invalidateSessionQueries(queryClient);
|
|
24
|
+
|
|
25
|
+
// Update current user query
|
|
26
|
+
queryClient.setQueryData(queryKeys.accounts.current(), user);
|
|
27
|
+
|
|
28
|
+
// Invalidate account queries
|
|
29
|
+
queryClient.invalidateQueries({
|
|
30
|
+
queryKey: queryKeys.accounts.all
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
onError: error => {
|
|
34
|
+
toast.error(error instanceof Error ? error.message : 'Failed to switch session');
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Logout from a session
|
|
41
|
+
*/
|
|
42
|
+
export const useLogoutSession = () => {
|
|
43
|
+
const {
|
|
44
|
+
oxyServices,
|
|
45
|
+
activeSessionId,
|
|
46
|
+
sessions
|
|
47
|
+
} = useOxy();
|
|
48
|
+
const queryClient = useQueryClient();
|
|
49
|
+
return useMutation({
|
|
50
|
+
mutationFn: async targetSessionId => {
|
|
51
|
+
if (!activeSessionId) {
|
|
52
|
+
throw new Error('No active session');
|
|
53
|
+
}
|
|
54
|
+
const sessionToLogout = targetSessionId || activeSessionId;
|
|
55
|
+
await oxyServices.logoutSession(activeSessionId, sessionToLogout);
|
|
56
|
+
return sessionToLogout;
|
|
57
|
+
},
|
|
58
|
+
onMutate: async targetSessionId => {
|
|
59
|
+
// Cancel outgoing queries
|
|
60
|
+
await queryClient.cancelQueries({
|
|
61
|
+
queryKey: queryKeys.sessions.all
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Snapshot previous sessions
|
|
65
|
+
const previousSessions = queryClient.getQueryData(queryKeys.sessions.list());
|
|
66
|
+
|
|
67
|
+
// Optimistically remove session
|
|
68
|
+
if (previousSessions) {
|
|
69
|
+
const sessionToLogout = targetSessionId || activeSessionId;
|
|
70
|
+
const updatedSessions = previousSessions.filter(s => s.sessionId !== sessionToLogout);
|
|
71
|
+
queryClient.setQueryData(queryKeys.sessions.list(), updatedSessions);
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
previousSessions
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
onError: (error, targetSessionId, context) => {
|
|
78
|
+
// Rollback on error
|
|
79
|
+
if (context?.previousSessions) {
|
|
80
|
+
queryClient.setQueryData(queryKeys.sessions.list(), context.previousSessions);
|
|
81
|
+
}
|
|
82
|
+
toast.error(error instanceof Error ? error.message : 'Failed to logout');
|
|
83
|
+
},
|
|
84
|
+
onSuccess: () => {
|
|
85
|
+
// Invalidate all session queries
|
|
86
|
+
invalidateSessionQueries(queryClient);
|
|
87
|
+
},
|
|
88
|
+
onSettled: () => {
|
|
89
|
+
queryClient.invalidateQueries({
|
|
90
|
+
queryKey: queryKeys.sessions.all
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Logout from all sessions
|
|
98
|
+
*/
|
|
99
|
+
export const useLogoutAll = () => {
|
|
100
|
+
const {
|
|
101
|
+
oxyServices,
|
|
102
|
+
activeSessionId,
|
|
103
|
+
clearSessionState
|
|
104
|
+
} = useOxy();
|
|
105
|
+
const queryClient = useQueryClient();
|
|
106
|
+
return useMutation({
|
|
107
|
+
mutationFn: async () => {
|
|
108
|
+
if (!activeSessionId) {
|
|
109
|
+
throw new Error('No active session');
|
|
110
|
+
}
|
|
111
|
+
await oxyServices.logoutAllSessions(activeSessionId);
|
|
112
|
+
await clearSessionState();
|
|
113
|
+
},
|
|
114
|
+
onSuccess: () => {
|
|
115
|
+
// Clear all queries
|
|
116
|
+
queryClient.clear();
|
|
117
|
+
toast.success('Logged out from all sessions');
|
|
118
|
+
},
|
|
119
|
+
onError: error => {
|
|
120
|
+
toast.error(error instanceof Error ? error.message : 'Failed to logout from all sessions');
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Update device name
|
|
127
|
+
*/
|
|
128
|
+
export const useUpdateDeviceName = () => {
|
|
129
|
+
const {
|
|
130
|
+
oxyServices,
|
|
131
|
+
activeSessionId
|
|
132
|
+
} = useOxy();
|
|
133
|
+
const queryClient = useQueryClient();
|
|
134
|
+
return useMutation({
|
|
135
|
+
mutationFn: async deviceName => {
|
|
136
|
+
if (!activeSessionId) {
|
|
137
|
+
throw new Error('No active session');
|
|
138
|
+
}
|
|
139
|
+
return await oxyServices.updateDeviceName(activeSessionId, deviceName);
|
|
140
|
+
},
|
|
141
|
+
onSuccess: () => {
|
|
142
|
+
// Invalidate device and session queries
|
|
143
|
+
queryClient.invalidateQueries({
|
|
144
|
+
queryKey: queryKeys.devices.all
|
|
145
|
+
});
|
|
146
|
+
queryClient.invalidateQueries({
|
|
147
|
+
queryKey: queryKeys.sessions.all
|
|
148
|
+
});
|
|
149
|
+
toast.success('Device name updated');
|
|
150
|
+
},
|
|
151
|
+
onError: error => {
|
|
152
|
+
toast.error(error instanceof Error ? error.message : 'Failed to update device name');
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Remove a device
|
|
159
|
+
*/
|
|
160
|
+
export const useRemoveDevice = () => {
|
|
161
|
+
const {
|
|
162
|
+
oxyServices
|
|
163
|
+
} = useOxy();
|
|
164
|
+
const queryClient = useQueryClient();
|
|
165
|
+
return useMutation({
|
|
166
|
+
mutationFn: async deviceId => {
|
|
167
|
+
await oxyServices.removeDevice(deviceId);
|
|
168
|
+
return deviceId;
|
|
169
|
+
},
|
|
170
|
+
onSuccess: () => {
|
|
171
|
+
// Invalidate device queries
|
|
172
|
+
queryClient.invalidateQueries({
|
|
173
|
+
queryKey: queryKeys.devices.all
|
|
174
|
+
});
|
|
175
|
+
queryClient.invalidateQueries({
|
|
176
|
+
queryKey: queryKeys.sessions.all
|
|
177
|
+
});
|
|
178
|
+
toast.success('Device removed');
|
|
179
|
+
},
|
|
180
|
+
onError: error => {
|
|
181
|
+
toast.error(error instanceof Error ? error.message : 'Failed to remove device');
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
//# sourceMappingURL=useServicesMutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMutation","useQueryClient","queryKeys","invalidateSessionQueries","useOxy","toast","useSwitchSession","switchSession","activeSessionId","queryClient","mutationFn","sessionId","onSuccess","user","setQueryData","accounts","current","invalidateQueries","queryKey","all","onError","error","Error","message","useLogoutSession","oxyServices","sessions","targetSessionId","sessionToLogout","logoutSession","onMutate","cancelQueries","previousSessions","getQueryData","list","updatedSessions","filter","s","context","onSettled","useLogoutAll","clearSessionState","logoutAllSessions","clear","success","useUpdateDeviceName","deviceName","updateDeviceName","devices","useRemoveDevice","deviceId","removeDevice"],"sourceRoot":"../../../../../src","sources":["ui/hooks/mutations/useServicesMutations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/index.ts"],"mappings":";;AAAA;AACA,cAAc,qBAAqB;AACnC,cAAc,sBAAsB;AACpC,cAAc,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Centralized query keys for TanStack Query
|
|
5
|
+
*
|
|
6
|
+
* Following best practices:
|
|
7
|
+
* - Use arrays for hierarchical keys
|
|
8
|
+
* - Include all parameters in the key
|
|
9
|
+
* - Use consistent naming conventions
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export const queryKeys = {
|
|
13
|
+
// Account queries
|
|
14
|
+
accounts: {
|
|
15
|
+
all: ['accounts'],
|
|
16
|
+
lists: () => [...queryKeys.accounts.all, 'list'],
|
|
17
|
+
list: sessionIds => [...queryKeys.accounts.lists(), sessionIds],
|
|
18
|
+
details: () => [...queryKeys.accounts.all, 'detail'],
|
|
19
|
+
detail: sessionId => [...queryKeys.accounts.details(), sessionId],
|
|
20
|
+
current: () => [...queryKeys.accounts.all, 'current'],
|
|
21
|
+
settings: () => [...queryKeys.accounts.all, 'settings']
|
|
22
|
+
},
|
|
23
|
+
// User queries
|
|
24
|
+
users: {
|
|
25
|
+
all: ['users'],
|
|
26
|
+
lists: () => [...queryKeys.users.all, 'list'],
|
|
27
|
+
list: userIds => [...queryKeys.users.lists(), userIds],
|
|
28
|
+
details: () => [...queryKeys.users.all, 'detail'],
|
|
29
|
+
detail: userId => [...queryKeys.users.details(), userId],
|
|
30
|
+
profile: sessionId => [...queryKeys.users.details(), sessionId, 'profile']
|
|
31
|
+
},
|
|
32
|
+
// Session queries
|
|
33
|
+
sessions: {
|
|
34
|
+
all: ['sessions'],
|
|
35
|
+
lists: () => [...queryKeys.sessions.all, 'list'],
|
|
36
|
+
list: userId => [...queryKeys.sessions.lists(), userId],
|
|
37
|
+
details: () => [...queryKeys.sessions.all, 'detail'],
|
|
38
|
+
detail: sessionId => [...queryKeys.sessions.details(), sessionId],
|
|
39
|
+
active: () => [...queryKeys.sessions.all, 'active'],
|
|
40
|
+
device: deviceId => [...queryKeys.sessions.all, 'device', deviceId]
|
|
41
|
+
},
|
|
42
|
+
// Device queries
|
|
43
|
+
devices: {
|
|
44
|
+
all: ['devices'],
|
|
45
|
+
lists: () => [...queryKeys.devices.all, 'list'],
|
|
46
|
+
list: userId => [...queryKeys.devices.lists(), userId],
|
|
47
|
+
details: () => [...queryKeys.devices.all, 'detail'],
|
|
48
|
+
detail: deviceId => [...queryKeys.devices.details(), deviceId]
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Helper to invalidate all account-related queries
|
|
54
|
+
*/
|
|
55
|
+
export const invalidateAccountQueries = queryClient => {
|
|
56
|
+
queryClient.invalidateQueries({
|
|
57
|
+
queryKey: queryKeys.accounts.all
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Helper to invalidate all user-related queries
|
|
63
|
+
*/
|
|
64
|
+
export const invalidateUserQueries = queryClient => {
|
|
65
|
+
queryClient.invalidateQueries({
|
|
66
|
+
queryKey: queryKeys.users.all
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Helper to invalidate all session-related queries
|
|
72
|
+
*/
|
|
73
|
+
export const invalidateSessionQueries = queryClient => {
|
|
74
|
+
queryClient.invalidateQueries({
|
|
75
|
+
queryKey: queryKeys.sessions.all
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=queryKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["queryKeys","accounts","all","lists","list","sessionIds","details","detail","sessionId","current","settings","users","userIds","userId","profile","sessions","active","device","deviceId","devices","invalidateAccountQueries","queryClient","invalidateQueries","queryKey","invalidateUserQueries","invalidateSessionQueries"],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/queryKeys.ts"],"mappings":"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","ignoreList":[]}
|