@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.
Files changed (190) hide show
  1. package/lib/commonjs/core/mixins/OxyServices.assets.js +15 -0
  2. package/lib/commonjs/core/mixins/OxyServices.assets.js.map +1 -1
  3. package/lib/commonjs/core/mixins/OxyServices.user.js +14 -13
  4. package/lib/commonjs/core/mixins/OxyServices.user.js.map +1 -1
  5. package/lib/commonjs/crypto/keyManager.js +164 -3
  6. package/lib/commonjs/crypto/keyManager.js.map +1 -1
  7. package/lib/commonjs/crypto/signatureService.js +26 -0
  8. package/lib/commonjs/crypto/signatureService.js.map +1 -1
  9. package/lib/commonjs/index.js.map +1 -1
  10. package/lib/commonjs/ui/components/GroupedSection.js +1 -1
  11. package/lib/commonjs/ui/components/GroupedSection.js.map +1 -1
  12. package/lib/commonjs/ui/components/OxyProvider.js +71 -24
  13. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  14. package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js +1 -4
  15. package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js.map +1 -1
  16. package/lib/commonjs/ui/context/OxyContext.js +177 -4
  17. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  18. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +148 -49
  19. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  20. package/lib/commonjs/ui/context/hooks/useSessionManagement.js +22 -2
  21. package/lib/commonjs/ui/context/hooks/useSessionManagement.js.map +1 -1
  22. package/lib/commonjs/ui/hooks/mutations/index.js +28 -0
  23. package/lib/commonjs/ui/hooks/mutations/index.js.map +1 -0
  24. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +314 -0
  25. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -0
  26. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +193 -0
  27. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -0
  28. package/lib/commonjs/ui/hooks/queries/index.js +39 -0
  29. package/lib/commonjs/ui/hooks/queries/index.js.map +1 -0
  30. package/lib/commonjs/ui/hooks/queries/queryKeys.js +85 -0
  31. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -0
  32. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +145 -0
  33. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -0
  34. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +138 -0
  35. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -0
  36. package/lib/commonjs/ui/hooks/queryClient.js +117 -0
  37. package/lib/commonjs/ui/hooks/queryClient.js.map +1 -0
  38. package/lib/commonjs/ui/hooks/useIdentityMutations.js +111 -0
  39. package/lib/commonjs/ui/hooks/useIdentityMutations.js.map +1 -0
  40. package/lib/commonjs/ui/hooks/useProfileEditing.js +42 -58
  41. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  42. package/lib/commonjs/ui/hooks/useQueryClient.js +20 -0
  43. package/lib/commonjs/ui/hooks/useQueryClient.js.map +1 -0
  44. package/lib/commonjs/ui/hooks/useSessionManagement.js +22 -2
  45. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  46. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +43 -42
  47. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  48. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +63 -58
  49. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  50. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +6 -6
  51. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  52. package/lib/commonjs/ui/stores/accountStore.js +57 -42
  53. package/lib/commonjs/ui/stores/accountStore.js.map +1 -1
  54. package/lib/commonjs/ui/stores/authStore.js +4 -25
  55. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  56. package/lib/module/core/mixins/OxyServices.assets.js +15 -0
  57. package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
  58. package/lib/module/core/mixins/OxyServices.user.js +14 -13
  59. package/lib/module/core/mixins/OxyServices.user.js.map +1 -1
  60. package/lib/module/crypto/keyManager.js +164 -3
  61. package/lib/module/crypto/keyManager.js.map +1 -1
  62. package/lib/module/crypto/signatureService.js +26 -0
  63. package/lib/module/crypto/signatureService.js.map +1 -1
  64. package/lib/module/index.js.map +1 -1
  65. package/lib/module/ui/components/GroupedSection.js +1 -1
  66. package/lib/module/ui/components/GroupedSection.js.map +1 -1
  67. package/lib/module/ui/components/OxyProvider.js +72 -25
  68. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  69. package/lib/module/ui/components/profile/EditDisplayNameModal.js +1 -4
  70. package/lib/module/ui/components/profile/EditDisplayNameModal.js.map +1 -1
  71. package/lib/module/ui/context/OxyContext.js +176 -4
  72. package/lib/module/ui/context/OxyContext.js.map +1 -1
  73. package/lib/module/ui/context/hooks/useAuthOperations.js +148 -49
  74. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  75. package/lib/module/ui/context/hooks/useSessionManagement.js +22 -2
  76. package/lib/module/ui/context/hooks/useSessionManagement.js.map +1 -1
  77. package/lib/module/ui/hooks/mutations/index.js +6 -0
  78. package/lib/module/ui/hooks/mutations/index.js.map +1 -0
  79. package/lib/module/ui/hooks/mutations/useAccountMutations.js +308 -0
  80. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -0
  81. package/lib/module/ui/hooks/mutations/useServicesMutations.js +185 -0
  82. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -0
  83. package/lib/module/ui/hooks/queries/index.js +7 -0
  84. package/lib/module/ui/hooks/queries/index.js.map +1 -0
  85. package/lib/module/ui/hooks/queries/queryKeys.js +78 -0
  86. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -0
  87. package/lib/module/ui/hooks/queries/useAccountQueries.js +136 -0
  88. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -0
  89. package/lib/module/ui/hooks/queries/useServicesQueries.js +130 -0
  90. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -0
  91. package/lib/module/ui/hooks/queryClient.js +110 -0
  92. package/lib/module/ui/hooks/queryClient.js.map +1 -0
  93. package/lib/module/ui/hooks/useIdentityMutations.js +105 -0
  94. package/lib/module/ui/hooks/useIdentityMutations.js.map +1 -0
  95. package/lib/module/ui/hooks/useProfileEditing.js +43 -59
  96. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  97. package/lib/module/ui/hooks/useQueryClient.js +15 -0
  98. package/lib/module/ui/hooks/useQueryClient.js.map +1 -0
  99. package/lib/module/ui/hooks/useSessionManagement.js +22 -2
  100. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  101. package/lib/module/ui/screens/AccountOverviewScreen.js +43 -42
  102. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  103. package/lib/module/ui/screens/AccountSettingsScreen.js +63 -58
  104. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  105. package/lib/module/ui/screens/WelcomeNewUserScreen.js +6 -6
  106. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  107. package/lib/module/ui/stores/accountStore.js +57 -42
  108. package/lib/module/ui/stores/accountStore.js.map +1 -1
  109. package/lib/module/ui/stores/authStore.js +4 -25
  110. package/lib/module/ui/stores/authStore.js.map +1 -1
  111. package/lib/typescript/core/mixins/OxyServices.assets.d.ts +7 -1
  112. package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
  113. package/lib/typescript/core/mixins/OxyServices.user.d.ts +4 -5
  114. package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
  115. package/lib/typescript/core/mixins/index.d.ts +1 -1
  116. package/lib/typescript/core/mixins/index.d.ts.map +1 -1
  117. package/lib/typescript/crypto/keyManager.d.ts +19 -2
  118. package/lib/typescript/crypto/keyManager.d.ts.map +1 -1
  119. package/lib/typescript/crypto/signatureService.d.ts +5 -0
  120. package/lib/typescript/crypto/signatureService.d.ts.map +1 -1
  121. package/lib/typescript/index.d.ts +1 -1
  122. package/lib/typescript/index.d.ts.map +1 -1
  123. package/lib/typescript/models/interfaces.d.ts +21 -0
  124. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  125. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  126. package/lib/typescript/ui/components/profile/EditDisplayNameModal.d.ts.map +1 -1
  127. package/lib/typescript/ui/context/OxyContext.d.ts +4 -0
  128. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  129. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  130. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts +3 -1
  131. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts.map +1 -1
  132. package/lib/typescript/ui/hooks/mutations/index.d.ts +3 -0
  133. package/lib/typescript/ui/hooks/mutations/index.d.ts.map +1 -0
  134. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts +25 -0
  135. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -0
  136. package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts +23 -0
  137. package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -0
  138. package/lib/typescript/ui/hooks/queries/index.d.ts +4 -0
  139. package/lib/typescript/ui/hooks/queries/index.d.ts.map +1 -0
  140. package/lib/typescript/ui/hooks/queries/queryKeys.d.ts +56 -0
  141. package/lib/typescript/ui/hooks/queries/queryKeys.d.ts.map +1 -0
  142. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts +41 -0
  143. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -0
  144. package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts +34 -0
  145. package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +1 -0
  146. package/lib/typescript/ui/hooks/queryClient.d.ts +19 -0
  147. package/lib/typescript/ui/hooks/queryClient.d.ts.map +1 -0
  148. package/lib/typescript/ui/hooks/useIdentityMutations.d.ts +29 -0
  149. package/lib/typescript/ui/hooks/useIdentityMutations.d.ts.map +1 -0
  150. package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +1 -1
  151. package/lib/typescript/ui/hooks/useQueryClient.d.ts +7 -0
  152. package/lib/typescript/ui/hooks/useQueryClient.d.ts.map +1 -0
  153. package/lib/typescript/ui/hooks/useSessionManagement.d.ts +3 -1
  154. package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +1 -1
  155. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  156. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  157. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  158. package/lib/typescript/ui/stores/accountStore.d.ts.map +1 -1
  159. package/lib/typescript/ui/stores/authStore.d.ts +0 -4
  160. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  161. package/package.json +6 -5
  162. package/src/core/mixins/OxyServices.assets.ts +16 -1
  163. package/src/core/mixins/OxyServices.user.ts +17 -10
  164. package/src/crypto/keyManager.ts +177 -2
  165. package/src/crypto/signatureService.ts +30 -0
  166. package/src/index.ts +4 -1
  167. package/src/models/interfaces.ts +23 -0
  168. package/src/ui/components/GroupedSection.tsx +1 -1
  169. package/src/ui/components/OxyProvider.tsx +91 -37
  170. package/src/ui/components/profile/EditDisplayNameModal.tsx +1 -3
  171. package/src/ui/context/OxyContext.tsx +185 -2
  172. package/src/ui/context/hooks/useAuthOperations.ts +171 -58
  173. package/src/ui/context/hooks/useSessionManagement.ts +24 -1
  174. package/src/ui/hooks/mutations/index.ts +4 -0
  175. package/src/ui/hooks/mutations/useAccountMutations.ts +277 -0
  176. package/src/ui/hooks/mutations/useServicesMutations.ts +164 -0
  177. package/src/ui/hooks/queries/index.ts +5 -0
  178. package/src/ui/hooks/queries/queryKeys.ts +73 -0
  179. package/src/ui/hooks/queries/useAccountQueries.ts +126 -0
  180. package/src/ui/hooks/queries/useServicesQueries.ts +121 -0
  181. package/src/ui/hooks/queryClient.ts +112 -0
  182. package/src/ui/hooks/useIdentityMutations.ts +115 -0
  183. package/src/ui/hooks/useProfileEditing.ts +46 -60
  184. package/src/ui/hooks/useQueryClient.ts +17 -0
  185. package/src/ui/hooks/useSessionManagement.ts +24 -1
  186. package/src/ui/screens/AccountOverviewScreen.tsx +38 -46
  187. package/src/ui/screens/AccountSettingsScreen.tsx +54 -54
  188. package/src/ui/screens/WelcomeNewUserScreen.tsx +13 -12
  189. package/src/ui/stores/accountStore.ts +54 -43
  190. package/src/ui/stores/authStore.ts +3 -17
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useUsersBySessions = exports.useUserProfiles = exports.useUserProfile = exports.useUserByUsername = exports.useUserById = exports.useCurrentUser = void 0;
7
+ var _reactQuery = require("@tanstack/react-query");
8
+ var _queryKeys = require("./queryKeys");
9
+ var _OxyContext = require("../../context/OxyContext");
10
+ /**
11
+ * Get user profile by session ID
12
+ */
13
+ const useUserProfile = (sessionId, options) => {
14
+ const {
15
+ oxyServices
16
+ } = (0, _OxyContext.useOxy)();
17
+ return (0, _reactQuery.useQuery)({
18
+ queryKey: _queryKeys.queryKeys.users.profile(sessionId || ''),
19
+ queryFn: async () => {
20
+ if (!sessionId) {
21
+ throw new Error('Session ID is required');
22
+ }
23
+ return await oxyServices.getUserBySession(sessionId);
24
+ },
25
+ enabled: options?.enabled !== false && !!sessionId,
26
+ staleTime: 5 * 60 * 1000,
27
+ // 5 minutes
28
+ gcTime: 30 * 60 * 1000 // 30 minutes
29
+ });
30
+ };
31
+
32
+ /**
33
+ * Get multiple user profiles by session IDs (batch query)
34
+ */
35
+ exports.useUserProfile = useUserProfile;
36
+ const useUserProfiles = (sessionIds, options) => {
37
+ const {
38
+ oxyServices
39
+ } = (0, _OxyContext.useOxy)();
40
+ return (0, _reactQuery.useQueries)({
41
+ queries: sessionIds.map(sessionId => ({
42
+ queryKey: _queryKeys.queryKeys.users.profile(sessionId),
43
+ queryFn: async () => {
44
+ const results = await oxyServices.getUsersBySessions([sessionId]);
45
+ return results[0]?.user || null;
46
+ },
47
+ enabled: options?.enabled !== false && !!sessionId,
48
+ staleTime: 5 * 60 * 1000,
49
+ gcTime: 30 * 60 * 1000
50
+ }))
51
+ });
52
+ };
53
+
54
+ /**
55
+ * Get current authenticated user
56
+ */
57
+ exports.useUserProfiles = useUserProfiles;
58
+ const useCurrentUser = options => {
59
+ const {
60
+ oxyServices,
61
+ activeSessionId,
62
+ isAuthenticated
63
+ } = (0, _OxyContext.useOxy)();
64
+ return (0, _reactQuery.useQuery)({
65
+ queryKey: _queryKeys.queryKeys.accounts.current(),
66
+ queryFn: async () => {
67
+ if (!activeSessionId) {
68
+ throw new Error('No active session');
69
+ }
70
+ return await oxyServices.getUserBySession(activeSessionId);
71
+ },
72
+ enabled: options?.enabled !== false && isAuthenticated && !!activeSessionId,
73
+ staleTime: 1 * 60 * 1000,
74
+ // 1 minute for current user
75
+ gcTime: 30 * 60 * 1000
76
+ });
77
+ };
78
+
79
+ /**
80
+ * Get user by ID
81
+ */
82
+ exports.useCurrentUser = useCurrentUser;
83
+ const useUserById = (userId, options) => {
84
+ const {
85
+ oxyServices
86
+ } = (0, _OxyContext.useOxy)();
87
+ return (0, _reactQuery.useQuery)({
88
+ queryKey: _queryKeys.queryKeys.users.detail(userId || ''),
89
+ queryFn: async () => {
90
+ if (!userId) {
91
+ throw new Error('User ID is required');
92
+ }
93
+ return await oxyServices.getUserById(userId);
94
+ },
95
+ enabled: options?.enabled !== false && !!userId,
96
+ staleTime: 5 * 60 * 1000,
97
+ gcTime: 30 * 60 * 1000
98
+ });
99
+ };
100
+
101
+ /**
102
+ * Get user profile by username
103
+ */
104
+ exports.useUserById = useUserById;
105
+ const useUserByUsername = (username, options) => {
106
+ const {
107
+ oxyServices
108
+ } = (0, _OxyContext.useOxy)();
109
+ return (0, _reactQuery.useQuery)({
110
+ queryKey: [..._queryKeys.queryKeys.users.details(), 'username', username || ''],
111
+ queryFn: async () => {
112
+ if (!username) {
113
+ throw new Error('Username is required');
114
+ }
115
+ return await oxyServices.getProfileByUsername(username);
116
+ },
117
+ enabled: options?.enabled !== false && !!username,
118
+ staleTime: 5 * 60 * 1000,
119
+ gcTime: 30 * 60 * 1000
120
+ });
121
+ };
122
+
123
+ /**
124
+ * Batch get users by session IDs (optimized single API call)
125
+ */
126
+ exports.useUserByUsername = useUserByUsername;
127
+ const useUsersBySessions = (sessionIds, options) => {
128
+ const {
129
+ oxyServices
130
+ } = (0, _OxyContext.useOxy)();
131
+ return (0, _reactQuery.useQuery)({
132
+ queryKey: _queryKeys.queryKeys.accounts.list(sessionIds),
133
+ queryFn: async () => {
134
+ if (sessionIds.length === 0) {
135
+ return [];
136
+ }
137
+ return await oxyServices.getUsersBySessions(sessionIds);
138
+ },
139
+ enabled: options?.enabled !== false && sessionIds.length > 0,
140
+ staleTime: 5 * 60 * 1000,
141
+ gcTime: 30 * 60 * 1000
142
+ });
143
+ };
144
+ exports.useUsersBySessions = useUsersBySessions;
145
+ //# sourceMappingURL=useAccountQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactQuery","require","_queryKeys","_OxyContext","useUserProfile","sessionId","options","oxyServices","useOxy","useQuery","queryKey","queryKeys","users","profile","queryFn","Error","getUserBySession","enabled","staleTime","gcTime","exports","useUserProfiles","sessionIds","useQueries","queries","map","results","getUsersBySessions","user","useCurrentUser","activeSessionId","isAuthenticated","accounts","current","useUserById","userId","detail","getUserById","useUserByUsername","username","details","getProfileByUsername","useUsersBySessions","list","length"],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/useAccountQueries.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useUserDevices = exports.useSessions = exports.useSession = exports.useSecurityInfo = exports.useDeviceSessions = void 0;
7
+ var _reactQuery = require("@tanstack/react-query");
8
+ var _queryKeys = require("./queryKeys");
9
+ var _OxyContext = require("../../context/OxyContext");
10
+ var _sessionHelpers = require("../../context/utils/sessionHelpers");
11
+ /**
12
+ * Get all active sessions for the current user
13
+ */
14
+ const useSessions = (userId, options) => {
15
+ const {
16
+ oxyServices,
17
+ activeSessionId
18
+ } = (0, _OxyContext.useOxy)();
19
+ return (0, _reactQuery.useQuery)({
20
+ queryKey: _queryKeys.queryKeys.sessions.list(userId),
21
+ queryFn: async () => {
22
+ if (!activeSessionId) {
23
+ throw new Error('No active session');
24
+ }
25
+ const sessions = await (0, _sessionHelpers.fetchSessionsWithFallback)(oxyServices, activeSessionId, {
26
+ fallbackDeviceId: undefined,
27
+ fallbackUserId: userId
28
+ });
29
+ return (0, _sessionHelpers.mapSessionsToClient)(sessions, activeSessionId);
30
+ },
31
+ enabled: options?.enabled !== false && !!activeSessionId,
32
+ staleTime: 2 * 60 * 1000,
33
+ // 2 minutes (sessions change frequently)
34
+ gcTime: 10 * 60 * 1000 // 10 minutes
35
+ });
36
+ };
37
+
38
+ /**
39
+ * Get specific session by ID
40
+ */
41
+ exports.useSessions = useSessions;
42
+ const useSession = (sessionId, options) => {
43
+ const {
44
+ oxyServices
45
+ } = (0, _OxyContext.useOxy)();
46
+ return (0, _reactQuery.useQuery)({
47
+ queryKey: _queryKeys.queryKeys.sessions.detail(sessionId || ''),
48
+ queryFn: async () => {
49
+ if (!sessionId) {
50
+ throw new Error('Session ID is required');
51
+ }
52
+ const validation = await oxyServices.validateSession(sessionId, {
53
+ useHeaderValidation: true
54
+ });
55
+ if (!validation?.valid || !validation.user) {
56
+ throw new Error('Session not found or invalid');
57
+ }
58
+ const now = new Date();
59
+ return {
60
+ sessionId,
61
+ deviceId: '',
62
+ // Device ID not available from validation response
63
+ expiresAt: validation.expiresAt || new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000).toISOString(),
64
+ lastActive: validation.lastActivity || now.toISOString(),
65
+ userId: validation.user.id?.toString() ?? '',
66
+ isCurrent: false
67
+ };
68
+ },
69
+ enabled: options?.enabled !== false && !!sessionId,
70
+ staleTime: 2 * 60 * 1000,
71
+ gcTime: 10 * 60 * 1000
72
+ });
73
+ };
74
+
75
+ /**
76
+ * Get device sessions for the current active session
77
+ */
78
+ exports.useSession = useSession;
79
+ const useDeviceSessions = options => {
80
+ const {
81
+ oxyServices,
82
+ activeSessionId
83
+ } = (0, _OxyContext.useOxy)();
84
+ return (0, _reactQuery.useQuery)({
85
+ queryKey: _queryKeys.queryKeys.sessions.active(),
86
+ queryFn: async () => {
87
+ if (!activeSessionId) {
88
+ throw new Error('No active session');
89
+ }
90
+ return await oxyServices.getDeviceSessions(activeSessionId);
91
+ },
92
+ enabled: options?.enabled !== false && !!activeSessionId,
93
+ staleTime: 2 * 60 * 1000,
94
+ gcTime: 10 * 60 * 1000
95
+ });
96
+ };
97
+
98
+ /**
99
+ * Get user devices
100
+ */
101
+ exports.useDeviceSessions = useDeviceSessions;
102
+ const useUserDevices = options => {
103
+ const {
104
+ oxyServices,
105
+ isAuthenticated
106
+ } = (0, _OxyContext.useOxy)();
107
+ return (0, _reactQuery.useQuery)({
108
+ queryKey: _queryKeys.queryKeys.devices.list(),
109
+ queryFn: async () => {
110
+ return await oxyServices.getUserDevices();
111
+ },
112
+ enabled: options?.enabled !== false && isAuthenticated,
113
+ staleTime: 5 * 60 * 1000,
114
+ gcTime: 30 * 60 * 1000
115
+ });
116
+ };
117
+
118
+ /**
119
+ * Get security information
120
+ */
121
+ exports.useUserDevices = useUserDevices;
122
+ const useSecurityInfo = options => {
123
+ const {
124
+ oxyServices,
125
+ isAuthenticated
126
+ } = (0, _OxyContext.useOxy)();
127
+ return (0, _reactQuery.useQuery)({
128
+ queryKey: [..._queryKeys.queryKeys.devices.all, 'security'],
129
+ queryFn: async () => {
130
+ return await oxyServices.getSecurityInfo();
131
+ },
132
+ enabled: options?.enabled !== false && isAuthenticated,
133
+ staleTime: 5 * 60 * 1000,
134
+ gcTime: 30 * 60 * 1000
135
+ });
136
+ };
137
+ exports.useSecurityInfo = useSecurityInfo;
138
+ //# sourceMappingURL=useServicesQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactQuery","require","_queryKeys","_OxyContext","_sessionHelpers","useSessions","userId","options","oxyServices","activeSessionId","useOxy","useQuery","queryKey","queryKeys","sessions","list","queryFn","Error","fetchSessionsWithFallback","fallbackDeviceId","undefined","fallbackUserId","mapSessionsToClient","enabled","staleTime","gcTime","exports","useSession","sessionId","detail","validation","validateSession","useHeaderValidation","valid","user","now","Date","deviceId","expiresAt","getTime","toISOString","lastActive","lastActivity","id","toString","isCurrent","useDeviceSessions","active","getDeviceSessions","useUserDevices","isAuthenticated","devices","getUserDevices","useSecurityInfo","all","getSecurityInfo"],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/useServicesQueries.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createQueryClient = exports.createPersistenceAdapter = exports.clearQueryCache = void 0;
7
+ var _reactQuery = require("@tanstack/react-query");
8
+ const QUERY_CACHE_KEY = 'oxy_query_cache';
9
+ const QUERY_CACHE_VERSION = '1';
10
+
11
+ /**
12
+ * Custom persistence adapter for TanStack Query using our StorageInterface
13
+ */
14
+ const createPersistenceAdapter = storage => {
15
+ return {
16
+ persistClient: async client => {
17
+ try {
18
+ const serialized = JSON.stringify({
19
+ clientState: client,
20
+ timestamp: Date.now(),
21
+ version: QUERY_CACHE_VERSION
22
+ });
23
+ await storage.setItem(QUERY_CACHE_KEY, serialized);
24
+ } catch (error) {
25
+ if (__DEV__) {
26
+ console.warn('[QueryClient] Failed to persist cache:', error);
27
+ }
28
+ }
29
+ },
30
+ restoreClient: async () => {
31
+ try {
32
+ const cached = await storage.getItem(QUERY_CACHE_KEY);
33
+ if (!cached) return undefined;
34
+ const parsed = JSON.parse(cached);
35
+
36
+ // Check version compatibility
37
+ if (parsed.version !== QUERY_CACHE_VERSION) {
38
+ // Clear old cache on version mismatch
39
+ await storage.removeItem(QUERY_CACHE_KEY);
40
+ return undefined;
41
+ }
42
+
43
+ // Check if cache is too old (30 days)
44
+ const maxAge = 30 * 24 * 60 * 60 * 1000;
45
+ if (parsed.timestamp && Date.now() - parsed.timestamp > maxAge) {
46
+ await storage.removeItem(QUERY_CACHE_KEY);
47
+ return undefined;
48
+ }
49
+ return parsed.clientState;
50
+ } catch (error) {
51
+ if (__DEV__) {
52
+ console.warn('[QueryClient] Failed to restore cache:', error);
53
+ }
54
+ return undefined;
55
+ }
56
+ },
57
+ removeClient: async () => {
58
+ try {
59
+ await storage.removeItem(QUERY_CACHE_KEY);
60
+ } catch (error) {
61
+ if (__DEV__) {
62
+ console.warn('[QueryClient] Failed to remove cache:', error);
63
+ }
64
+ }
65
+ }
66
+ };
67
+ };
68
+
69
+ /**
70
+ * Create a QueryClient with offline-first configuration
71
+ */
72
+ exports.createPersistenceAdapter = createPersistenceAdapter;
73
+ const createQueryClient = storage => {
74
+ const client = new _reactQuery.QueryClient({
75
+ defaultOptions: {
76
+ queries: {
77
+ // Data is fresh for 5 minutes
78
+ staleTime: 5 * 60 * 1000,
79
+ // Keep unused data in cache for 30 minutes
80
+ gcTime: 30 * 60 * 1000,
81
+ // Retry 3 times with exponential backoff
82
+ retry: 3,
83
+ retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30000),
84
+ // Refetch on reconnect
85
+ refetchOnReconnect: true,
86
+ // Don't refetch on window focus (better for mobile)
87
+ refetchOnWindowFocus: false,
88
+ // Offline-first: use cache when offline
89
+ networkMode: 'offlineFirst'
90
+ },
91
+ mutations: {
92
+ // Retry once for mutations
93
+ retry: 1,
94
+ // Offline-first: queue mutations when offline
95
+ networkMode: 'offlineFirst'
96
+ }
97
+ }
98
+ });
99
+
100
+ // Note: Persistence is handled by TanStack Query's built-in persistence
101
+ // For now, we rely on the query client's default behavior with networkMode: 'offlineFirst'
102
+ // The cache will be available in memory and queries will use cached data when offline
103
+ // Full persistence to AsyncStorage can be added later with @tanstack/react-query-persist-client if needed
104
+
105
+ return client;
106
+ };
107
+
108
+ /**
109
+ * Clear persisted query cache
110
+ */
111
+ exports.createQueryClient = createQueryClient;
112
+ const clearQueryCache = async storage => {
113
+ const adapter = createPersistenceAdapter(storage);
114
+ await adapter.removeClient();
115
+ };
116
+ exports.clearQueryCache = clearQueryCache;
117
+ //# sourceMappingURL=queryClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactQuery","require","QUERY_CACHE_KEY","QUERY_CACHE_VERSION","createPersistenceAdapter","storage","persistClient","client","serialized","JSON","stringify","clientState","timestamp","Date","now","version","setItem","error","__DEV__","console","warn","restoreClient","cached","getItem","undefined","parsed","parse","removeItem","maxAge","removeClient","exports","createQueryClient","QueryClient","defaultOptions","queries","staleTime","gcTime","retry","retryDelay","attemptIndex","Math","min","refetchOnReconnect","refetchOnWindowFocus","networkMode","mutations","clearQueryCache","adapter"],"sourceRoot":"../../../../src","sources":["ui/hooks/queryClient.ts"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAGA,MAAMC,eAAe,GAAG,iBAAiB;AACzC,MAAMC,mBAAmB,GAAG,GAAG;;AAE/B;AACA;AACA;AACO,MAAMC,wBAAwB,GAAIC,OAAyB,IAAK;EACrE,OAAO;IACLC,aAAa,EAAE,MAAOC,MAAW,IAAK;MACpC,IAAI;QACF,MAAMC,UAAU,GAAGC,IAAI,CAACC,SAAS,CAAC;UAChCC,WAAW,EAAEJ,MAAM;UACnBK,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;UACrBC,OAAO,EAAEZ;QACX,CAAC,CAAC;QACF,MAAME,OAAO,CAACW,OAAO,CAACd,eAAe,EAAEM,UAAU,CAAC;MACpD,CAAC,CAAC,OAAOS,KAAK,EAAE;QACd,IAAIC,OAAO,EAAE;UACXC,OAAO,CAACC,IAAI,CAAC,wCAAwC,EAAEH,KAAK,CAAC;QAC/D;MACF;IACF,CAAC;IACDI,aAAa,EAAE,MAAAA,CAAA,KAAY;MACzB,IAAI;QACF,MAAMC,MAAM,GAAG,MAAMjB,OAAO,CAACkB,OAAO,CAACrB,eAAe,CAAC;QACrD,IAAI,CAACoB,MAAM,EAAE,OAAOE,SAAS;QAE7B,MAAMC,MAAM,GAAGhB,IAAI,CAACiB,KAAK,CAACJ,MAAM,CAAC;;QAEjC;QACA,IAAIG,MAAM,CAACV,OAAO,KAAKZ,mBAAmB,EAAE;UAC1C;UACA,MAAME,OAAO,CAACsB,UAAU,CAACzB,eAAe,CAAC;UACzC,OAAOsB,SAAS;QAClB;;QAEA;QACA,MAAMI,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QACvC,IAAIH,MAAM,CAACb,SAAS,IAAIC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGW,MAAM,CAACb,SAAS,GAAGgB,MAAM,EAAE;UAC9D,MAAMvB,OAAO,CAACsB,UAAU,CAACzB,eAAe,CAAC;UACzC,OAAOsB,SAAS;QAClB;QAEA,OAAOC,MAAM,CAACd,WAAW;MAC3B,CAAC,CAAC,OAAOM,KAAK,EAAE;QACd,IAAIC,OAAO,EAAE;UACXC,OAAO,CAACC,IAAI,CAAC,wCAAwC,EAAEH,KAAK,CAAC;QAC/D;QACA,OAAOO,SAAS;MAClB;IACF,CAAC;IACDK,YAAY,EAAE,MAAAA,CAAA,KAAY;MACxB,IAAI;QACF,MAAMxB,OAAO,CAACsB,UAAU,CAACzB,eAAe,CAAC;MAC3C,CAAC,CAAC,OAAOe,KAAK,EAAE;QACd,IAAIC,OAAO,EAAE;UACXC,OAAO,CAACC,IAAI,CAAC,uCAAuC,EAAEH,KAAK,CAAC;QAC9D;MACF;IACF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AAFAa,OAAA,CAAA1B,wBAAA,GAAAA,wBAAA;AAGO,MAAM2B,iBAAiB,GAAI1B,OAAiC,IAAkB;EACnF,MAAME,MAAM,GAAG,IAAIyB,uBAAW,CAAC;IAC7BC,cAAc,EAAE;MACdC,OAAO,EAAE;QACP;QACAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB;QACAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QACtB;QACAC,KAAK,EAAE,CAAC;QACRC,UAAU,EAAGC,YAAY,IAAKC,IAAI,CAACC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAIF,YAAY,EAAE,KAAK,CAAC;QACvE;QACAG,kBAAkB,EAAE,IAAI;QACxB;QACAC,oBAAoB,EAAE,KAAK;QAC3B;QACAC,WAAW,EAAE;MACf,CAAC;MACDC,SAAS,EAAE;QACT;QACAR,KAAK,EAAE,CAAC;QACR;QACAO,WAAW,EAAE;MACf;IACF;EACF,CAAC,CAAC;;EAEF;EACA;EACA;EACA;;EAEA,OAAOrC,MAAM;AACf,CAAC;;AAED;AACA;AACA;AAFAuB,OAAA,CAAAC,iBAAA,GAAAA,iBAAA;AAGO,MAAMe,eAAe,GAAG,MAAOzC,OAAyB,IAAoB;EACjF,MAAM0C,OAAO,GAAG3C,wBAAwB,CAACC,OAAO,CAAC;EACjD,MAAM0C,OAAO,CAAClB,YAAY,CAAC,CAAC;AAC9B,CAAC;AAACC,OAAA,CAAAgB,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useCreateIdentity = useCreateIdentity;
7
+ exports.useImportIdentity = useImportIdentity;
8
+ exports.useSyncIdentity = useSyncIdentity;
9
+ var _reactQuery = require("@tanstack/react-query");
10
+ /**
11
+ * TanStack Query mutations for identity operations
12
+ * Provides offline-first mutations for identity creation, import, and sync
13
+ * Never deletes identity on errors - preserves user data
14
+ */
15
+
16
+ /**
17
+ * Hook for creating a new identity with offline support
18
+ * Never deletes identity on error - preserves user data
19
+ */
20
+ function useCreateIdentity(createIdentityFn) {
21
+ const queryClient = (0, _reactQuery.useQueryClient)();
22
+ return (0, _reactQuery.useMutation)({
23
+ mutationFn: createIdentityFn,
24
+ onSuccess: data => {
25
+ // Invalidate user queries to refetch after identity creation
26
+ queryClient.invalidateQueries({
27
+ queryKey: ['user']
28
+ });
29
+ queryClient.invalidateQueries({
30
+ queryKey: ['identity']
31
+ });
32
+ },
33
+ onError: error => {
34
+ // Never delete identity on error - just log it
35
+ // User can recover using recovery phrase
36
+ if (__DEV__) {
37
+ console.warn('[useCreateIdentity] Identity creation error (identity may still exist):', error);
38
+ }
39
+ },
40
+ retry: false,
41
+ // Don't retry identity creation
42
+ networkMode: 'offlineFirst'
43
+ });
44
+ }
45
+
46
+ /**
47
+ * Hook for importing an identity from recovery phrase
48
+ * Never deletes identity on error - preserves user data
49
+ */
50
+ function useImportIdentity(importIdentityFn) {
51
+ const queryClient = (0, _reactQuery.useQueryClient)();
52
+ return (0, _reactQuery.useMutation)({
53
+ mutationFn: importIdentityFn,
54
+ onSuccess: data => {
55
+ queryClient.invalidateQueries({
56
+ queryKey: ['user']
57
+ });
58
+ queryClient.invalidateQueries({
59
+ queryKey: ['identity']
60
+ });
61
+ },
62
+ onError: error => {
63
+ // Never delete identity on error - just log it
64
+ if (__DEV__) {
65
+ console.warn('[useImportIdentity] Identity import error (identity may still exist):', error);
66
+ }
67
+ },
68
+ retry: false,
69
+ networkMode: 'offlineFirst'
70
+ });
71
+ }
72
+
73
+ /**
74
+ * Hook for syncing identity with server
75
+ * Never deletes identity on error - only logs and allows retry
76
+ */
77
+ function useSyncIdentity(syncIdentityFn) {
78
+ const queryClient = (0, _reactQuery.useQueryClient)();
79
+ return (0, _reactQuery.useMutation)({
80
+ mutationFn: syncIdentityFn,
81
+ onSuccess: user => {
82
+ // Update user cache
83
+ queryClient.setQueryData(['user', 'current'], user);
84
+ queryClient.invalidateQueries({
85
+ queryKey: ['user']
86
+ });
87
+ queryClient.invalidateQueries({
88
+ queryKey: ['identity']
89
+ });
90
+ },
91
+ onError: error => {
92
+ // Never delete identity on error - just log it
93
+ // User can retry sync later or use recovery phrase
94
+ if (__DEV__) {
95
+ console.warn('[useSyncIdentity] Sync failed, but identity is preserved:', error);
96
+ }
97
+ },
98
+ retry: (failureCount, error) => {
99
+ // Retry up to 2 times for sync operations
100
+ // Don't retry if it's a network error - user can retry when online
101
+ const errorMessage = error instanceof Error ? error.message : String(error);
102
+ const isNetworkError = errorMessage.includes('Network') || errorMessage.includes('Failed to fetch') || error?.code === 'NETWORK_ERROR';
103
+ if (isNetworkError) {
104
+ return false; // Don't retry network errors - user will retry when online
105
+ }
106
+ return failureCount < 2;
107
+ },
108
+ networkMode: 'offlineFirst'
109
+ });
110
+ }
111
+ //# sourceMappingURL=useIdentityMutations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactQuery","require","useCreateIdentity","createIdentityFn","queryClient","useQueryClient","useMutation","mutationFn","onSuccess","data","invalidateQueries","queryKey","onError","error","__DEV__","console","warn","retry","networkMode","useImportIdentity","importIdentityFn","useSyncIdentity","syncIdentityFn","user","setQueryData","failureCount","errorMessage","Error","message","String","isNetworkError","includes","code"],"sourceRoot":"../../../../src","sources":["ui/hooks/useIdentityMutations.ts"],"mappings":"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","ignoreList":[]}