@oxyhq/services 5.16.36 → 5.16.38
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/ui/context/OxyContext.js +101 -8
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +69 -4
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/stores/transferStore.js +4 -0
- package/lib/commonjs/ui/stores/transferStore.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +102 -9
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +69 -4
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/stores/transferStore.js +4 -0
- package/lib/module/ui/stores/transferStore.js.map +1 -1
- 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/stores/transferStore.d.ts +1 -0
- package/lib/typescript/ui/stores/transferStore.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ui/context/OxyContext.tsx +100 -8
- package/src/ui/context/hooks/useAuthOperations.ts +72 -4
- package/src/ui/stores/transferStore.ts +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAMvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,MAAM,CAAC;IAGlC,cAAc,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnD,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3F,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3C,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,6BAA6B,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjH,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzH,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IACjL,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,sBAAsB,EAAE,MAAM,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IACpM,mBAAmB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACzC,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAGtG,iBAAiB,EAAE;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IAGF,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,iBAAiB,EAAE,MAAM,OAAO,CAC9B,KAAK,CAAC;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CACH,CAAC;IACF,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,GAAG;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/G,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,QAAA,MAAM,UAAU,uCAA8C,CAAC;AAE/D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACrC;AAgCD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+lCzD,CAAC;AAEF,eAAO,MAAM,kBAAkB,mCAAc,CAAC;AAE9C,eAAO,MAAM,MAAM,QAAO,eAMzB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthOperations.d.ts","sourceRoot":"","sources":["../../../../../src/ui/context/hooks/useAuthOperations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useAuthOperations.d.ts","sourceRoot":"","sources":["../../../../../src/ui/context/hooks/useAuthOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export interface TransferState {
|
|
|
23
23
|
markRestored: () => void;
|
|
24
24
|
cleanupExpired: () => void;
|
|
25
25
|
reset: () => void;
|
|
26
|
+
clearAll: () => void;
|
|
26
27
|
}
|
|
27
28
|
export declare const useTransferStore: import("zustand").UseBoundStore<import("zustand").StoreApi<TransferState>>;
|
|
28
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/stores/transferStore.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAE5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAGhD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,UAAU,EAAE,OAAO,CAAC;IAGpB,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChH,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC7F,sBAAsB,EAAE,MAAM,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IACpF,mBAAmB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACzC,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvG,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"transferStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/stores/transferStore.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAE5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAGhD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,UAAU,EAAE,OAAO,CAAC;IAGpB,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChH,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC7F,sBAAsB,EAAE,MAAM,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IACpF,mBAAmB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACzC,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvG,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAUD,eAAO,MAAM,gBAAgB,4EA8I1B,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;CAO1C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/services",
|
|
3
|
-
"version": "5.16.
|
|
3
|
+
"version": "5.16.38",
|
|
4
4
|
"description": "Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
useCallback,
|
|
5
5
|
useContext,
|
|
6
6
|
useEffect,
|
|
7
|
+
useLayoutEffect,
|
|
7
8
|
useMemo,
|
|
8
9
|
useRef,
|
|
9
10
|
useState,
|
|
@@ -211,6 +212,15 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
211
212
|
|
|
212
213
|
const { storage, isReady: isStorageReady } = useStorage({ onError, logger });
|
|
213
214
|
|
|
215
|
+
// Invalidate KeyManager cache on mount to prevent stale cache issues
|
|
216
|
+
// useLayoutEffect runs synchronously after render but before paint, ensuring cache
|
|
217
|
+
// invalidation happens before any async operations start
|
|
218
|
+
useLayoutEffect(() => {
|
|
219
|
+
if (Platform.OS !== 'web') {
|
|
220
|
+
KeyManager.invalidateCache();
|
|
221
|
+
}
|
|
222
|
+
}, []);
|
|
223
|
+
|
|
214
224
|
// Identity integrity check and auto-restore on startup
|
|
215
225
|
// Skip on web platform - identity storage is only available on native platforms
|
|
216
226
|
useEffect(() => {
|
|
@@ -219,9 +229,7 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
219
229
|
|
|
220
230
|
const checkAndRestoreIdentity = async () => {
|
|
221
231
|
try {
|
|
222
|
-
//
|
|
223
|
-
// This prevents stale cache from previous session from showing incorrect state
|
|
224
|
-
KeyManager.invalidateCache();
|
|
232
|
+
// Cache was already invalidated synchronously above
|
|
225
233
|
|
|
226
234
|
// Check if identity exists and verify integrity
|
|
227
235
|
const hasIdentity = await KeyManager.hasIdentity();
|
|
@@ -352,9 +360,17 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
352
360
|
[importIdentityBase]
|
|
353
361
|
);
|
|
354
362
|
|
|
363
|
+
// Storage keys for transfer codes
|
|
364
|
+
const TRANSFER_CODES_STORAGE_KEY = `${storageKeyPrefix}_transfer_codes`;
|
|
365
|
+
const ACTIVE_TRANSFER_STORAGE_KEY = `${storageKeyPrefix}_active_transfer_id`;
|
|
366
|
+
|
|
355
367
|
// Clear all account data when identity is lost (for accounts app)
|
|
356
368
|
// In accounts app, identity = account, so losing identity means losing everything
|
|
357
369
|
const clearAllAccountData = useCallback(async (): Promise<void> => {
|
|
370
|
+
if (__DEV__) {
|
|
371
|
+
logger('Clearing all account data - identity changed or lost');
|
|
372
|
+
}
|
|
373
|
+
|
|
358
374
|
// Clear TanStack Query cache (in-memory)
|
|
359
375
|
queryClient.clear();
|
|
360
376
|
|
|
@@ -386,9 +402,30 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
386
402
|
// Reset account store
|
|
387
403
|
useAccountStore.getState().reset();
|
|
388
404
|
|
|
405
|
+
// CRITICAL: Clear ALL transfer codes and active transfer state
|
|
406
|
+
// This prevents transfer state from previous identity from lingering
|
|
407
|
+
if (storage) {
|
|
408
|
+
try {
|
|
409
|
+
await storage.removeItem(TRANSFER_CODES_STORAGE_KEY);
|
|
410
|
+
await storage.removeItem(ACTIVE_TRANSFER_STORAGE_KEY);
|
|
411
|
+
|
|
412
|
+
// Also clear Zustand transfer store
|
|
413
|
+
useTransferStore.getState().clearAll();
|
|
414
|
+
|
|
415
|
+
if (__DEV__) {
|
|
416
|
+
logger('Cleared all transfer state');
|
|
417
|
+
}
|
|
418
|
+
} catch (error) {
|
|
419
|
+
logger('Failed to clear transfer state', error);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
389
423
|
// Clear HTTP service cache
|
|
390
424
|
oxyServices.clearCache();
|
|
391
|
-
|
|
425
|
+
|
|
426
|
+
// Force KeyManager cache invalidation
|
|
427
|
+
KeyManager.invalidateCache();
|
|
428
|
+
}, [queryClient, storage, clearSessionState, logger, oxyServices, TRANSFER_CODES_STORAGE_KEY, ACTIVE_TRANSFER_STORAGE_KEY]);
|
|
392
429
|
|
|
393
430
|
// Extract Zustand store functions early (before they're used in callbacks)
|
|
394
431
|
const getAllPendingTransfersStore = useTransferStore((state) => state.getAllPendingTransfers);
|
|
@@ -580,17 +617,56 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
580
617
|
setTokenReady(false);
|
|
581
618
|
|
|
582
619
|
try {
|
|
620
|
+
// CRITICAL: Get current identity's public key first
|
|
621
|
+
// Only restore sessions that belong to this identity
|
|
622
|
+
// Force cache invalidation to ensure we get the actual current identity
|
|
623
|
+
KeyManager.invalidateCache();
|
|
624
|
+
const currentPublicKey = await KeyManager.getPublicKey().catch(() => null);
|
|
625
|
+
|
|
583
626
|
const storedSessionIdsJson = await storage.getItem(storageKeys.sessionIds);
|
|
584
627
|
const storedSessionIds: string[] = storedSessionIdsJson ? JSON.parse(storedSessionIdsJson) : [];
|
|
585
628
|
const storedActiveSessionId = await storage.getItem(storageKeys.activeSessionId);
|
|
586
629
|
|
|
630
|
+
// If no identity exists, clear all sessions and return
|
|
631
|
+
if (!currentPublicKey) {
|
|
632
|
+
if (storedSessionIds.length > 0 || storedActiveSessionId) {
|
|
633
|
+
if (__DEV__) {
|
|
634
|
+
logger('No identity found - clearing all stored sessions to prevent cross-identity data leak');
|
|
635
|
+
}
|
|
636
|
+
await clearSessionState();
|
|
637
|
+
}
|
|
638
|
+
setTokenReady(true);
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
if (__DEV__) {
|
|
643
|
+
logger('Restoring sessions for identity', { publicKey: currentPublicKey.substring(0, 16) + '...', sessionCount: storedSessionIds.length });
|
|
644
|
+
}
|
|
645
|
+
|
|
587
646
|
const validSessions: ClientSession[] = [];
|
|
647
|
+
const invalidSessionIds: string[] = []; // Track invalid sessions for batch removal
|
|
588
648
|
|
|
589
649
|
if (storedSessionIds.length > 0) {
|
|
590
650
|
for (const sessionId of storedSessionIds) {
|
|
591
651
|
try {
|
|
592
652
|
const validation = await oxyServices.validateSession(sessionId, { useHeaderValidation: true });
|
|
593
653
|
if (validation?.valid && validation.user) {
|
|
654
|
+
// CRITICAL: Verify session belongs to current identity
|
|
655
|
+
// Compare session's publicKey to current identity's publicKey
|
|
656
|
+
if (validation.user.publicKey !== currentPublicKey) {
|
|
657
|
+
// Session belongs to different identity - skip it and log warning
|
|
658
|
+
if (__DEV__) {
|
|
659
|
+
logger('CRITICAL: Skipping session from different identity during restoration', {
|
|
660
|
+
sessionPublicKey: validation.user.publicKey?.substring(0, 16) + '...',
|
|
661
|
+
currentPublicKey: currentPublicKey.substring(0, 16) + '...',
|
|
662
|
+
sessionId: sessionId.substring(0, 16) + '...',
|
|
663
|
+
});
|
|
664
|
+
}
|
|
665
|
+
// Mark for batch removal
|
|
666
|
+
invalidSessionIds.push(sessionId);
|
|
667
|
+
continue;
|
|
668
|
+
}
|
|
669
|
+
|
|
594
670
|
const now = new Date();
|
|
595
671
|
validSessions.push({
|
|
596
672
|
sessionId,
|
|
@@ -613,6 +689,24 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
613
689
|
}
|
|
614
690
|
}
|
|
615
691
|
|
|
692
|
+
// Batch remove invalid sessions from storage (performance optimization)
|
|
693
|
+
if (invalidSessionIds.length > 0) {
|
|
694
|
+
try {
|
|
695
|
+
// Use Set for O(n) lookup instead of O(n²) with includes()
|
|
696
|
+
const invalidSessionSet = new Set(invalidSessionIds);
|
|
697
|
+
const updatedIds = storedSessionIds.filter(id => !invalidSessionSet.has(id));
|
|
698
|
+
await storage.setItem(storageKeys.sessionIds, JSON.stringify(updatedIds));
|
|
699
|
+
if (__DEV__) {
|
|
700
|
+
logger('Removed invalid sessions from storage', { count: invalidSessionIds.length });
|
|
701
|
+
}
|
|
702
|
+
} catch (cleanupError) {
|
|
703
|
+
// Ignore cleanup errors - will be cleaned on next restart
|
|
704
|
+
if (__DEV__) {
|
|
705
|
+
logger('Failed to remove invalid sessions from storage', cleanupError);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
|
|
616
710
|
if (validSessions.length > 0) {
|
|
617
711
|
updateSessions(validSessions, { merge: false });
|
|
618
712
|
}
|
|
@@ -727,13 +821,11 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
727
821
|
}, [isAuthenticatedFromStore, isAuthenticatedFromSessions]);
|
|
728
822
|
|
|
729
823
|
// Get userId from JWT token (MongoDB ObjectId) for socket room matching
|
|
730
|
-
// user.id
|
|
731
|
-
// The JWT token's userId field contains the MongoDB ObjectId
|
|
824
|
+
// user.id contains the MongoDB ObjectId, user.publicKey contains the cryptographic public key
|
|
732
825
|
const userId = oxyServices.getCurrentUserId() || user?.id;
|
|
733
826
|
|
|
734
827
|
// Use Zustand store for transfer state management
|
|
735
|
-
|
|
736
|
-
const ACTIVE_TRANSFER_STORAGE_KEY = `${storageKeyPrefix}_active_transfer_id`;
|
|
828
|
+
// Storage keys are defined above (TRANSFER_CODES_STORAGE_KEY, ACTIVE_TRANSFER_STORAGE_KEY)
|
|
737
829
|
const isRestored = useTransferStore((state) => state.isRestored);
|
|
738
830
|
const restoreFromStorage = useTransferStore((state) => state.restoreFromStorage);
|
|
739
831
|
const markRestored = useTransferStore((state) => state.markRestored);
|
|
@@ -84,6 +84,37 @@ export const useAuthOperations = ({
|
|
|
84
84
|
logger,
|
|
85
85
|
}: UseAuthOperationsOptions): UseAuthOperationsResult => {
|
|
86
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Clear session data if identity has changed
|
|
89
|
+
* Internal helper to avoid code duplication
|
|
90
|
+
*/
|
|
91
|
+
const clearSessionsIfIdentityChanged = useCallback(
|
|
92
|
+
async (oldPublicKey: string | null, newPublicKey: string): Promise<void> => {
|
|
93
|
+
if (oldPublicKey && oldPublicKey !== newPublicKey) {
|
|
94
|
+
if (__DEV__ && logger) {
|
|
95
|
+
logger('CRITICAL: Identity changed - clearing all session data', {
|
|
96
|
+
oldPublicKey: oldPublicKey.substring(0, 16) + '...',
|
|
97
|
+
newPublicKey: newPublicKey.substring(0, 16) + '...',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Clear all session state to prevent old identity's data from showing up
|
|
102
|
+
await clearSessionState();
|
|
103
|
+
|
|
104
|
+
// Logout from auth store (clears user, isAuthenticated, etc.)
|
|
105
|
+
logoutStore();
|
|
106
|
+
|
|
107
|
+
// Force KeyManager cache invalidation
|
|
108
|
+
KeyManager.invalidateCache();
|
|
109
|
+
|
|
110
|
+
if (__DEV__ && logger) {
|
|
111
|
+
logger('Session state cleared for new identity');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
[clearSessionState, logoutStore, logger]
|
|
116
|
+
);
|
|
117
|
+
|
|
87
118
|
/**
|
|
88
119
|
* Internal function to perform challenge-response sign in (works offline)
|
|
89
120
|
*/
|
|
@@ -292,9 +323,24 @@ export const useAuthOperations = ({
|
|
|
292
323
|
setAuthState({ isLoading: true, error: null });
|
|
293
324
|
|
|
294
325
|
try {
|
|
326
|
+
// CRITICAL: Get old public key before creating new identity
|
|
327
|
+
// If identity changes, we must clear all session data to prevent data leakage
|
|
328
|
+
const oldPublicKey = await KeyManager.getPublicKey().catch(() => null);
|
|
329
|
+
|
|
330
|
+
if (__DEV__ && logger) {
|
|
331
|
+
logger('Creating new identity', { hadPreviousIdentity: !!oldPublicKey });
|
|
332
|
+
}
|
|
333
|
+
|
|
295
334
|
// Generate new key pair directly (works offline)
|
|
296
335
|
const { publicKey, privateKey } = await KeyManager.generateKeyPair();
|
|
297
336
|
await KeyManager.importKeyPair(privateKey);
|
|
337
|
+
|
|
338
|
+
if (__DEV__ && logger) {
|
|
339
|
+
logger('Identity keys generated', { publicKey: publicKey.substring(0, 16) + '...' });
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// Clear sessions if identity changed (prevents data leakage)
|
|
343
|
+
await clearSessionsIfIdentityChanged(oldPublicKey, publicKey);
|
|
298
344
|
|
|
299
345
|
// Mark as not synced
|
|
300
346
|
await storage.setItem('oxy_identity_synced', 'false');
|
|
@@ -308,14 +354,18 @@ export const useAuthOperations = ({
|
|
|
308
354
|
// Mark as synced (Zustand store + storage)
|
|
309
355
|
await storage.setItem('oxy_identity_synced', 'true');
|
|
310
356
|
setIdentitySynced(true);
|
|
357
|
+
|
|
358
|
+
if (__DEV__ && logger) {
|
|
359
|
+
logger('Identity synced with server successfully');
|
|
360
|
+
}
|
|
311
361
|
|
|
312
362
|
return {
|
|
313
363
|
synced: true,
|
|
314
364
|
};
|
|
315
365
|
} catch (syncError) {
|
|
316
366
|
// Offline or server error - identity is created locally but not synced
|
|
317
|
-
if (__DEV__) {
|
|
318
|
-
|
|
367
|
+
if (__DEV__ && logger) {
|
|
368
|
+
logger('Identity created locally (offline), will sync when online', syncError);
|
|
319
369
|
}
|
|
320
370
|
|
|
321
371
|
return {
|
|
@@ -358,7 +408,7 @@ export const useAuthOperations = ({
|
|
|
358
408
|
setAuthState({ isLoading: false });
|
|
359
409
|
}
|
|
360
410
|
},
|
|
361
|
-
[oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced],
|
|
411
|
+
[oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced, clearSessionsIfIdentityChanged],
|
|
362
412
|
);
|
|
363
413
|
|
|
364
414
|
/**
|
|
@@ -463,6 +513,17 @@ export const useAuthOperations = ({
|
|
|
463
513
|
setAuthState({ isLoading: true, error: null });
|
|
464
514
|
|
|
465
515
|
try {
|
|
516
|
+
// CRITICAL: Get old public key before importing new identity
|
|
517
|
+
// If identity changes, we must clear all session data to prevent data leakage
|
|
518
|
+
const oldPublicKey = await KeyManager.getPublicKey().catch(() => null);
|
|
519
|
+
|
|
520
|
+
if (__DEV__ && logger) {
|
|
521
|
+
logger('Importing identity from backup', {
|
|
522
|
+
hadPreviousIdentity: !!oldPublicKey,
|
|
523
|
+
backupPublicKey: backupData.publicKey.substring(0, 16) + '...'
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
|
|
466
527
|
// Decrypt private key from backup data
|
|
467
528
|
const Crypto = await import('expo-crypto');
|
|
468
529
|
|
|
@@ -498,12 +559,19 @@ export const useAuthOperations = ({
|
|
|
498
559
|
|
|
499
560
|
// Import the key pair
|
|
500
561
|
const publicKey = await KeyManager.importKeyPair(privateKey);
|
|
562
|
+
|
|
563
|
+
if (__DEV__ && logger) {
|
|
564
|
+
logger('Identity keys imported', { publicKey: publicKey.substring(0, 16) + '...' });
|
|
565
|
+
}
|
|
501
566
|
|
|
502
567
|
// Verify public key matches
|
|
503
568
|
if (publicKey !== backupData.publicKey) {
|
|
504
569
|
throw new Error('Backup file is corrupted or password is incorrect');
|
|
505
570
|
}
|
|
506
571
|
|
|
572
|
+
// Clear sessions if identity changed (prevents data leakage)
|
|
573
|
+
await clearSessionsIfIdentityChanged(oldPublicKey, publicKey);
|
|
574
|
+
|
|
507
575
|
// Mark as not synced
|
|
508
576
|
await storage.setItem('oxy_identity_synced', 'false');
|
|
509
577
|
setIdentitySynced(false);
|
|
@@ -548,7 +616,7 @@ export const useAuthOperations = ({
|
|
|
548
616
|
setAuthState({ isLoading: false });
|
|
549
617
|
}
|
|
550
618
|
},
|
|
551
|
-
[oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced],
|
|
619
|
+
[oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced, clearSessionsIfIdentityChanged],
|
|
552
620
|
);
|
|
553
621
|
|
|
554
622
|
/**
|
|
@@ -31,6 +31,7 @@ export interface TransferState {
|
|
|
31
31
|
markRestored: () => void;
|
|
32
32
|
cleanupExpired: () => void;
|
|
33
33
|
reset: () => void;
|
|
34
|
+
clearAll: () => void; // Alias for reset - use when clearing on identity change for semantic clarity
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
const FIFTEEN_MINUTES = 15 * 60 * 1000;
|
|
@@ -178,6 +179,11 @@ export const useTransferStore = create<TransferState>((set, get) => ({
|
|
|
178
179
|
reset: () => {
|
|
179
180
|
set(initialState);
|
|
180
181
|
},
|
|
182
|
+
|
|
183
|
+
clearAll: () => {
|
|
184
|
+
// Delegate to reset to maintain single source of truth
|
|
185
|
+
get().reset();
|
|
186
|
+
},
|
|
181
187
|
}));
|
|
182
188
|
|
|
183
189
|
/**
|