@oxyhq/services 5.17.7 → 5.17.9
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/crypto/index.js +0 -23
- package/lib/commonjs/crypto/index.js.map +1 -1
- package/lib/commonjs/index.js +0 -15
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/components/Icon.js.map +1 -1
- package/lib/commonjs/ui/components/IconButton/utils.js.map +1 -1
- package/lib/commonjs/ui/components/TextField/Adornment/utils.js.map +1 -1
- package/lib/commonjs/ui/components/TextField/helpers.js.map +1 -1
- package/lib/commonjs/ui/components/TouchableRipple/utils.js.map +1 -1
- package/lib/commonjs/ui/components/Typography/AnimatedText.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +37 -589
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContextBase.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +60 -425
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +8 -112
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +2 -27
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +2 -27
- package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionSocket.js +2 -88
- package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +0 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/commonjs/ui/stores/authStore.js +52 -15
- package/lib/commonjs/ui/stores/authStore.js.map +1 -1
- package/lib/commonjs/ui/utils/avatarUtils.js +2 -32
- package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
- package/lib/module/crypto/index.js +4 -6
- package/lib/module/crypto/index.js.map +1 -1
- package/lib/module/index.js +6 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/components/Icon.js.map +1 -1
- package/lib/module/ui/components/IconButton/utils.js.map +1 -1
- package/lib/module/ui/components/TextField/Adornment/utils.js.map +1 -1
- package/lib/module/ui/components/TextField/helpers.js.map +1 -1
- package/lib/module/ui/components/TouchableRipple/utils.js.map +1 -1
- package/lib/module/ui/components/Typography/AnimatedText.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +35 -588
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/OxyContextBase.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +60 -424
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +8 -112
- package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/module/ui/hooks/queries/useAccountQueries.js +2 -27
- package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
- package/lib/module/ui/hooks/queries/useServicesQueries.js +2 -27
- package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
- package/lib/module/ui/hooks/useSessionSocket.js +2 -88
- package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +0 -1
- package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/module/ui/stores/authStore.js +52 -15
- package/lib/module/ui/stores/authStore.js.map +1 -1
- package/lib/module/ui/utils/avatarUtils.js +2 -32
- package/lib/module/ui/utils/avatarUtils.js.map +1 -1
- package/lib/typescript/crypto/index.d.ts +2 -5
- package/lib/typescript/crypto/index.d.ts.map +1 -1
- package/lib/typescript/crypto/types.d.ts +6 -2
- package/lib/typescript/crypto/types.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +4 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/ui/components/IconButton/utils.d.ts +1 -1
- package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts +1 -1
- package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts.map +1 -1
- package/lib/typescript/ui/components/TextField/helpers.d.ts +6 -6
- package/lib/typescript/ui/components/types.d.ts +0 -4
- package/lib/typescript/ui/components/types.d.ts.map +1 -1
- package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/ui/context/OxyContextBase.d.ts +2 -39
- package/lib/typescript/ui/context/OxyContextBase.d.ts.map +1 -1
- package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +10 -25
- package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/useSessionSocket.d.ts +1 -14
- package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
- package/lib/typescript/ui/stores/authStore.d.ts +27 -4
- package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/ui/utils/avatarUtils.d.ts +0 -2
- package/lib/typescript/ui/utils/avatarUtils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/crypto/index.ts +3 -11
- package/src/crypto/types.ts +6 -2
- package/src/index.ts +6 -11
- package/src/ui/components/Icon.tsx +1 -1
- package/src/ui/components/IconButton/utils.ts +1 -1
- package/src/ui/components/TextField/Adornment/utils.ts +2 -2
- package/src/ui/components/TextField/helpers.tsx +8 -8
- package/src/ui/components/TouchableRipple/utils.ts +2 -2
- package/src/ui/components/Typography/AnimatedText.tsx +2 -2
- package/src/ui/components/types.tsx +0 -6
- package/src/ui/context/OxyContext.tsx +33 -637
- package/src/ui/context/OxyContextBase.tsx +5 -23
- package/src/ui/context/hooks/useAuthOperations.ts +84 -460
- package/src/ui/hooks/mutations/useAccountMutations.ts +12 -110
- package/src/ui/hooks/queries/useAccountQueries.ts +3 -27
- package/src/ui/hooks/queries/useServicesQueries.ts +3 -27
- package/src/ui/hooks/useSessionSocket.ts +2 -106
- package/src/ui/screens/OxyAuthScreen.tsx +1 -1
- package/src/ui/stores/authStore.ts +57 -18
- package/src/ui/utils/avatarUtils.ts +4 -36
- package/lib/commonjs/crypto/keyManager.js +0 -511
- package/lib/commonjs/crypto/keyManager.js.map +0 -1
- package/lib/commonjs/crypto/signatureService.js +0 -269
- package/lib/commonjs/crypto/signatureService.js.map +0 -1
- package/lib/module/crypto/keyManager.js +0 -508
- package/lib/module/crypto/keyManager.js.map +0 -1
- package/lib/module/crypto/signatureService.js +0 -266
- package/lib/module/crypto/signatureService.js.map +0 -1
- package/lib/typescript/crypto/keyManager.d.ts +0 -97
- package/lib/typescript/crypto/keyManager.d.ts.map +0 -1
- package/lib/typescript/crypto/signatureService.d.ts +0 -77
- package/lib/typescript/crypto/signatureService.d.ts.map +0 -1
- package/src/crypto/keyManager.ts +0 -545
- package/src/crypto/signatureService.ts +0 -301
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","Platform","OxyServices","toast","useAuthStore","useShallow","useSessionSocket","useStorage","useLanguageManagement","useSessionManagement","useAuthOperations","useDeviceManagement","getStorageKeys","isInvalidSessionError","isTimeoutOrNetworkError","showBottomSheet","globalShowBottomSheet","useQueryClient","useQuery","clearQueryCache","queryKeys","KeyManager","translate","updateAvatarVisibility","updateProfileWithAvatar","useAccountStore","logger","loggerUtil","OxyContext","useOxy","jsx","_jsx","cachedUseFollowHook","loadUseFollowHook","useFollow","require","error","__DEV__","warn","component","method","fallback","Error","IDENTITY_CACHE_KEY","updateIdentityCache","exists","OS","SecureStore","setItemAsync","clearIdentityCache","deleteItemAsync","OxyProvider","children","oxyServices","providedOxyServices","baseURL","storageKeyPrefix","onAuthStateChange","onError","oxyServicesRef","current","isAuthenticated","isLoading","loginSuccess","loginFailure","logoutStore","isIdentitySyncedStore","isSyncing","setIdentitySynced","setSyncing","state","logout","isIdentitySynced","tokenReady","setTokenReady","initializedRef","setAuthState","setState","message","err","undefined","console","storageKeys","storage","isReady","isStorageReady","checkAndRestoreIdentity","hasIdentity","isValid","verifyIdentityIntegrity","restored","restoreIdentityFromBackup","backupIdentity","currentLanguage","metadata","currentLanguageMetadata","languageName","currentLanguageName","nativeLanguageName","currentNativeLanguageName","setLanguage","applyLanguagePreference","languageKey","language","queryClient","sessions","activeSessionId","setActiveSessionId","updateSessions","switchSession","refreshSessions","clearSessionState","saveActiveSessionId","trackRemovedSession","setAuthError","data","userData","queryKey","accounts","queryFn","getUserBySession","enabled","staleTime","gcTime","retry","user","createIdentity","importIdentity","importIdentityBase","signIn","logoutAll","getPublicKey","syncIdentity","syncIdentityBase","wrappedCreateIdentity","result","backupData","password","clearAllAccountData","clear","removeItem","getState","reset","clearCache","getAllPendingTransfers","pending","transferCodesRef","forEach","transferId","push","getActiveTransferId","activeTransferIdRef","deleteIdentityAndClearAccount","skipBackup","force","userConfirmed","pendingTransfers","length","activeTransferId","hasActiveTransfer","some","t","deleteIdentity","wasOffline","checkTimeout","lastReconnectionLog","RECONNECTION_LOG_DEBOUNCE_MS","stateRef","consecutiveFailures","currentInterval","baseInterval","maxInterval","maxFailures","scheduleNextCheck","clearTimeout","setTimeout","checkNetworkAndSync","healthCheck","catch","now","Date","timeSinceLastLog","hasIdentityValue","syncStatus","getItem","syncError","code","debug","backoffMultiplier","Math","min","pow","getDeviceSessions","logoutAllDeviceSessions","updateDeviceName","useFollowHook","restoreSessionsFromStorage","storedSessionIdsJson","sessionIds","storedSessionIds","JSON","parse","storedActiveSessionId","validSessions","sessionId","validation","validateSession","useHeaderValidation","valid","deviceId","expiresAt","getTime","toISOString","lastActive","userId","id","toString","isCurrent","validationError","merge","switchError","filter","session","String","activeSession","find","currentDeviceId","getCurrentUserId","Map","TRANSFER_CODES_STORAGE_KEY","ACTIVE_TRANSFER_STORAGE_KEY","clearStaleTransfers","persistTransferCodes","codesToStore","value","key","setItem","stringify","cleanup","setInterval","fifteenMinutes","needsPersist","timestamp","delete","has","clearInterval","storeTransferCode","sourceDeviceId","publicKey","transferData","set","substring","getTransferCode","get","updateTransferState","clearTransferCode","refreshSessionsWithUser","handleSessionRemoved","handleRemoteSignOut","info","remoteError","handleIdentityTransferComplete","hasActiveSession","storedTransfer","publicKeyMatches","receivedPublicKey","storedPublicKey","deviceIdMatches","receivedDeviceId","storedDeviceId","transferCode","codeMatches","toUpperCase","receivedCode","storedCode","transferAge","tenMinutes","age","ageMinutes","round","identityStillExists","identityDeleted","success","deleteError","getBaseURL","getAccessToken","onRemoteSignOut","onSessionRemoved","onIdentityTransferComplete","switchSessionForContext","showBottomSheetForContext","screenOrConfig","openAvatarPicker","screen","props","selectMode","multiSelect","disabledMimeTypes","afterSelect","onSelect","file","contentType","startsWith","avatar","e","contextValue","isTokenReady","identitySyncState","isSynced","removeSession","Provider","OxyContextProvider"],"sourceRoot":"../../../../src","sources":["ui/context/OxyContext.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","OxyServices","toast","useAuthStore","useShallow","useSessionSocket","useStorage","useLanguageManagement","useSessionManagement","useAuthOperations","useDeviceManagement","getStorageKeys","isInvalidSessionError","isTimeoutOrNetworkError","showBottomSheet","globalShowBottomSheet","useQueryClient","useQuery","clearQueryCache","queryKeys","translate","updateAvatarVisibility","updateProfileWithAvatar","useAccountStore","logger","loggerUtil","OxyContext","useOxy","jsx","_jsx","cachedUseFollowHook","loadUseFollowHook","useFollow","require","error","__DEV__","warn","component","method","fallback","Error","OxyProvider","children","oxyServices","providedOxyServices","baseURL","storageKeyPrefix","onAuthStateChange","onError","oxyServicesRef","current","isAuthenticated","isOnline","isLoading","setOnline","loginSuccess","loginFailure","logoutStore","state","logout","tokenReady","setTokenReady","initializedRef","setAuthState","setState","message","err","undefined","console","storageKeys","storage","isReady","isStorageReady","currentLanguage","metadata","currentLanguageMetadata","languageName","currentLanguageName","nativeLanguageName","currentNativeLanguageName","setLanguage","applyLanguagePreference","languageKey","language","queryClient","sessions","activeSessionId","setActiveSessionId","updateSessions","switchSession","refreshSessions","clearSessionState","saveActiveSessionId","trackRemovedSession","setAuthError","data","userData","queryKey","accounts","queryFn","getUserBySession","enabled","staleTime","gcTime","retry","user","completeSignIn","logoutAll","clearAllAccountData","clear","getState","reset","clearCache","wasOffline","checkTimeout","scheduleNextCheck","clearTimeout","setTimeout","checkNetworkStatus","healthCheck","getDeviceSessions","logoutAllDeviceSessions","updateDeviceName","useFollowHook","restoreSessionsFromStorage","storedSessionIdsJson","getItem","sessionIds","storedSessionIds","JSON","parse","storedActiveSessionId","validSessions","length","sessionId","validation","validateSession","useHeaderValidation","valid","now","Date","push","deviceId","expiresAt","getTime","toISOString","lastActive","userId","id","toString","isCurrent","validationError","debug","merge","switchError","removeItem","filter","session","String","activeSession","find","currentDeviceId","getCurrentUserId","refreshSessionsWithUser","handleSessionRemoved","handleRemoteSignOut","info","catch","remoteError","getBaseURL","getAccessToken","onRemoteSignOut","onSessionRemoved","switchSessionForContext","showBottomSheetForContext","screenOrConfig","openAvatarPicker","screen","props","selectMode","multiSelect","disabledMimeTypes","afterSelect","onSelect","file","contentType","startsWith","avatar","success","e","contextValue","isTokenReady","removeSession","Provider","value","OxyContextProvider"],"sourceRoot":"../../../../src","sources":["ui/context/OxyContext.tsx"],"mappings":";;AACA,SACEA,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AAEd,SAASC,WAAW,QAAQ,YAAY;AAGxC,SAASC,KAAK,QAAQ,kBAAkB;AACxC,SAASC,YAAY,QAAwB,qBAAqB;AAClE,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,gBAAgB,QAAQ,2BAA2B;AAE5D,SAASC,UAAU,QAAQ,qBAAqB;AAChD,SAASC,qBAAqB,QAAQ,gCAAgC;AACtE,SAASC,oBAAoB,QAAQ,+BAA+B;AACpE,SAASC,iBAAiB,QAAQ,2BAA2B;AAC7D,SAASC,mBAAmB,QAAQ,8BAA8B;AAClE,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,qBAAqB,EAAEC,uBAAuB,QAAQ,wBAAwB;AAEvF,SAASC,eAAe,IAAIC,qBAAqB,QAAQ,kCAAkC;AAC3F,SAASC,cAAc,EAAEC,QAAQ,QAAQ,uBAAuB;AAChE,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,SAAS,QAAQ,4BAA4B;AAEtD,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,sBAAsB,EAAEC,uBAAuB,QAAQ,sBAAsB;AACtF,SAASC,eAAe,QAAQ,wBAAwB;AACxD,SAASC,MAAM,IAAIC,UAAU,QAAQ,yBAAyB;;AAE9D;AACA,SACEC,UAAU,EACVC,MAAM,QAGD,kBAAkB;;AAEzB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,SAASH,UAAU,EAAEC,MAAM;AAE3B,IAAIG,mBAAyC,GAAG,IAAI;AAEpD,MAAMC,iBAAiB,GAAGA,CAAA,KAAqB;EAC7C,IAAID,mBAAmB,EAAE;IACvB,OAAOA,mBAAmB;EAC5B;EAEA,IAAI;IACF;IACA,MAAM;MAAEE;IAAU,CAAC,GAAGC,OAAO,CAAC,oBAAoB,CAAC;IACnDH,mBAAmB,GAAGE,SAA0B;IAChD,OAAOF,mBAAmB;EAC5B,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd,IAAIC,OAAO,EAAE;MACXV,UAAU,CAACW,IAAI,CACb,yFAAyF,EACzF;QAAEC,SAAS,EAAE,YAAY;QAAEC,MAAM,EAAE;MAAoB,CAAC,EACxDJ,KACF,CAAC;IACH;IAEA,MAAMK,QAAuB,GAAGA,CAAA,KAAM;MACpC,MAAM,IAAIC,KAAK,CAAC,oFAAoF,CAAC;IACvG,CAAC;IAEDV,mBAAmB,GAAGS,QAAQ;IAC9B,OAAOT,mBAAmB;EAC5B;AACF,CAAC;AAED,OAAO,MAAMW,WAA8C,GAAGA,CAAC;EAC7DC,QAAQ;EACRC,WAAW,EAAEC,mBAAmB;EAChCC,OAAO;EACPC,gBAAgB,GAAG,aAAa;EAChCC,iBAAiB;EACjBC;AACF,CAAC,KAAK;EACJ,MAAMC,cAAc,GAAGlD,MAAM,CAAqB,IAAI,CAAC;EAEvD,IAAI,CAACkD,cAAc,CAACC,OAAO,EAAE;IAC3B,IAAIN,mBAAmB,EAAE;MACvBK,cAAc,CAACC,OAAO,GAAGN,mBAAmB;IAC9C,CAAC,MAAM,IAAIC,OAAO,EAAE;MAClBI,cAAc,CAACC,OAAO,GAAG,IAAIjD,WAAW,CAAC;QAAE4C;MAAQ,CAAC,CAAC;IACvD,CAAC,MAAM;MACL,MAAM,IAAIL,KAAK,CAAC,sEAAsE,CAAC;IACzF;EACF;EAEA,MAAMG,WAAW,GAAGM,cAAc,CAACC,OAAO;EAE1C,MAAM;IACJC,eAAe;IACfC,QAAQ;IACRC,SAAS;IACTnB,KAAK;IACLoB,SAAS;IACTC,YAAY;IACZC,YAAY;IACZC;EACF,CAAC,GAAGtD,YAAY,CACdC,UAAU,CAAEsD,KAAgB,KAAM;IAChCP,eAAe,EAAEO,KAAK,CAACP,eAAe;IACtCC,QAAQ,EAAEM,KAAK,CAACN,QAAQ;IACxBC,SAAS,EAAEK,KAAK,CAACL,SAAS;IAC1BnB,KAAK,EAAEwB,KAAK,CAACxB,KAAK;IAClBoB,SAAS,EAAEI,KAAK,CAACJ,SAAS;IAC1BC,YAAY,EAAEG,KAAK,CAACH,YAAY;IAChCC,YAAY,EAAEE,KAAK,CAACF,YAAY;IAChCC,WAAW,EAAEC,KAAK,CAACC;EACrB,CAAC,CAAC,CACJ,CAAC;EAED,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG7D,QAAQ,CAAC,IAAI,CAAC;EAClD,MAAM8D,cAAc,GAAG/D,MAAM,CAAC,KAAK,CAAC;EACpC,MAAMgE,YAAY,GAAG5D,YAAY,CAAC6D,QAAQ;EAE1C,MAAMxC,MAAM,GAAG5B,WAAW,CAAC,CAACqE,OAAe,EAAEC,GAAa,KAAK;IAC7D,IAAI/B,OAAO,EAAE;MACX,IAAI+B,GAAG,KAAKC,SAAS,EAAE;QACrBC,OAAO,CAAChC,IAAI,CAAC,gBAAgB6B,OAAO,EAAE,EAAEC,GAAG,CAAC;MAC9C,CAAC,MAAM;QACLE,OAAO,CAAChC,IAAI,CAAC,gBAAgB6B,OAAO,EAAE,CAAC;MACzC;IACF;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,WAAW,GAAGvE,OAAO,CAAC,MAAMa,cAAc,CAACmC,gBAAgB,CAAC,EAAE,CAACA,gBAAgB,CAAC,CAAC;EAEvF,MAAM;IAAEwB,OAAO;IAAEC,OAAO,EAAEC;EAAe,CAAC,GAAGlE,UAAU,CAAC;IAAE0C,OAAO;IAAExB;EAAO,CAAC,CAAC;EAE5E,MAAM;IACJiD,eAAe;IACfC,QAAQ,EAAEC,uBAAuB;IACjCC,YAAY,EAAEC,mBAAmB;IACjCC,kBAAkB,EAAEC,yBAAyB;IAC7CC,WAAW;IACXC;EACF,CAAC,GAAG1E,qBAAqB,CAAC;IACxB+D,OAAO;IACPY,WAAW,EAAEb,WAAW,CAACc,QAAQ;IACjCnC,OAAO;IACPxB;EACF,CAAC,CAAC;EAEF,MAAM4D,WAAW,GAAGpE,cAAc,CAAC,CAAC;EAEpC,MAAM;IACJqE,QAAQ;IACRC,eAAe;IACfC,kBAAkB;IAClBC,cAAc;IACdC,aAAa;IACbC,eAAe;IACfC,iBAAiB;IACjBC,mBAAmB;IACnBC;EACF,CAAC,GAAGrF,oBAAoB,CAAC;IACvBmC,WAAW;IACX2B,OAAO;IACPxB,gBAAgB;IAChBS,YAAY;IACZE,WAAW;IACXwB,uBAAuB;IACvBlC,iBAAiB;IACjBC,OAAO;IACP8C,YAAY,EAAG7B,OAAO,IAAKF,YAAY,CAAC;MAAE7B,KAAK,EAAE+B;IAAQ,CAAC,CAAC;IAC3DzC,MAAM;IACNqC,aAAa;IACbuB;EACF,CAAC,CAAC;;EAEF;EACA;EACA;EACA;EACA,MAAM;IAAEW,IAAI,EAAEC;EAAS,CAAC,GAAG/E,QAAQ,CAAC;IAClCgF,QAAQ,EAAE9E,SAAS,CAAC+E,QAAQ,CAAChD,OAAO,CAAC,CAAC;IACtCiD,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnB,IAAI,CAACb,eAAe,EAAE;QACpB,MAAM,IAAI9C,KAAK,CAAC,mBAAmB,CAAC;MACtC;MACA,OAAO,MAAMG,WAAW,CAACyD,gBAAgB,CAACd,eAAe,CAAC;IAC5D,CAAC;IACDe,OAAO,EAAElD,eAAe,IAAI,CAAC,CAACmC,eAAe,IAAI1B,UAAU;IAC3D0C,SAAS,EAAE,CAAC;IAAE;IACdC,MAAM,EAAE,CAAC;IAAE;IACXC,KAAK,EAAE,KAAK,CAAE;EAChB,CAAC,CAAC;EACF,MAAMC,IAAI,GAAGT,QAAQ,IAAI,IAAI;EAE7B,MAAM;IACJU,cAAc;IACd/C,MAAM;IACNgD;EACF,CAAC,GAAGlG,iBAAiB,CAAC;IACpBkC,WAAW;IACX2B,OAAO;IACPe,QAAQ;IACRC,eAAe;IACfC,kBAAkB;IAClBC,cAAc;IACdI,mBAAmB;IACnBD,iBAAiB;IACjBF,aAAa;IACbR,uBAAuB;IACvBlC,iBAAiB;IACjBC,OAAO;IACPO,YAAY;IACZC,YAAY;IACZC,WAAW;IACXM,YAAY;IACZvC;EACF,CAAC,CAAC;;EAEF;EACA,MAAMoF,mBAAmB,GAAGhH,WAAW,CAAC,YAA2B;IACjE;IACAwF,WAAW,CAACyB,KAAK,CAAC,CAAC;;IAEnB;IACA,IAAIvC,OAAO,EAAE;MACX,IAAI;QACF,MAAMpD,eAAe,CAACoD,OAAO,CAAC;MAChC,CAAC,CAAC,OAAOpC,KAAK,EAAE;QACdV,MAAM,CAAC,uCAAuC,EAAEU,KAAK,CAAC;MACxD;IACF;;IAEA;IACA,MAAMyD,iBAAiB,CAAC,CAAC;;IAEzB;IACApE,eAAe,CAACuF,QAAQ,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;;IAElC;IACApE,WAAW,CAACqE,UAAU,CAAC,CAAC;EAC1B,CAAC,EAAE,CAAC5B,WAAW,EAAEd,OAAO,EAAEqB,iBAAiB,EAAEnE,MAAM,EAAEmB,WAAW,CAAC,CAAC;;EAElE;EACA;EACA;EACA9C,SAAS,CAAC,MAAM;IACd,IAAI,CAACyE,OAAO,EAAE;IAEd,IAAI2C,UAAU,GAAG,KAAK;IACtB,IAAIC,YAAmC,GAAG,IAAI;IAE9C,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;MAC9B,IAAID,YAAY,EAAE;QAChBE,YAAY,CAACF,YAAY,CAAC;MAC5B;MACAA,YAAY,GAAGG,UAAU,CAAC,MAAM;QAC9BC,kBAAkB,CAAC,CAAC;MACtB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACb,CAAC;IAED,MAAMA,kBAAkB,GAAG,MAAAA,CAAA,KAAY;MACrC,IAAI;QACF;QACA,MAAM3E,WAAW,CAAC4E,WAAW,CAAC,CAAC;;QAE/B;QACA,IAAIN,UAAU,EAAE;UACdzF,MAAM,CAAC,4CAA4C,CAAC;UACpD8B,SAAS,CAAC,IAAI,CAAC;UACf;UACA;UACA2D,UAAU,GAAG,KAAK;QACpB,CAAC,MAAM;UACL;UACA3D,SAAS,CAAC,IAAI,CAAC;QACjB;MACF,CAAC,CAAC,OAAOpB,KAAK,EAAE;QACd;QACA,IAAI,CAAC+E,UAAU,EAAE;UACf,IAAI9E,OAAO,EAAE;YACXX,MAAM,CAAC,qDAAqD,CAAC;UAC/D;UACA8B,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACpB;QACA2D,UAAU,GAAG,IAAI;MACnB,CAAC,SAAS;QACRE,iBAAiB,CAAC,CAAC;MACrB;IACF,CAAC;;IAED;IACAG,kBAAkB,CAAC,CAAC;IAEpB,OAAO,MAAM;MACX,IAAIJ,YAAY,EAAE;QAChBE,YAAY,CAACF,YAAY,CAAC;MAC5B;IACF,CAAC;EACH,CAAC,EAAE,CAACvE,WAAW,EAAE2B,OAAO,EAAE9C,MAAM,EAAE8B,SAAS,CAAC,CAAC;EAE7C,MAAM;IAAEkE,iBAAiB;IAAEC,uBAAuB;IAAEC;EAAiB,CAAC,GAAGhH,mBAAmB,CAAC;IAC3FiC,WAAW;IACX2C,eAAe;IACftC,OAAO;IACP2C,iBAAiB;IACjBnE;EACF,CAAC,CAAC;EAEF,MAAMmG,aAAa,GAAG5F,iBAAiB,CAAC,CAAC;EAEzC,MAAM6F,0BAA0B,GAAGhI,WAAW,CAAC,YAA2B;IACxE,IAAI,CAAC0E,OAAO,EAAE;MACZ;IACF;IAEAT,aAAa,CAAC,KAAK,CAAC;IAEpB,IAAI;MACF,MAAMgE,oBAAoB,GAAG,MAAMvD,OAAO,CAACwD,OAAO,CAACzD,WAAW,CAAC0D,UAAU,CAAC;MAC1E,MAAMC,gBAA0B,GAAGH,oBAAoB,GAAGI,IAAI,CAACC,KAAK,CAACL,oBAAoB,CAAC,GAAG,EAAE;MAC/F,MAAMM,qBAAqB,GAAG,MAAM7D,OAAO,CAACwD,OAAO,CAACzD,WAAW,CAACiB,eAAe,CAAC;MAEhF,MAAM8C,aAA8B,GAAG,EAAE;MAEzC,IAAIJ,gBAAgB,CAACK,MAAM,GAAG,CAAC,EAAE;QAC/B,KAAK,MAAMC,SAAS,IAAIN,gBAAgB,EAAE;UACxC,IAAI;YACF,MAAMO,UAAU,GAAG,MAAM5F,WAAW,CAAC6F,eAAe,CAACF,SAAS,EAAE;cAAEG,mBAAmB,EAAE;YAAK,CAAC,CAAC;YAC9F,IAAIF,UAAU,EAAEG,KAAK,IAAIH,UAAU,CAAC9B,IAAI,EAAE;cACxC,MAAMkC,GAAG,GAAG,IAAIC,IAAI,CAAC,CAAC;cACtBR,aAAa,CAACS,IAAI,CAAC;gBACjBP,SAAS;gBACTQ,QAAQ,EAAE,EAAE;gBACZC,SAAS,EAAE,IAAIH,IAAI,CAACD,GAAG,CAACK,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAACC,WAAW,CAAC,CAAC;gBAC1EC,UAAU,EAAEP,GAAG,CAACM,WAAW,CAAC,CAAC;gBAC7BE,MAAM,EAAEZ,UAAU,CAAC9B,IAAI,CAAC2C,EAAE,EAAEC,QAAQ,CAAC,CAAC,IAAI,EAAE;gBAC5CC,SAAS,EAAEhB,SAAS,KAAKH;cAC3B,CAAC,CAAC;YACJ;UACF,CAAC,CAAC,OAAOoB,eAAe,EAAE;YACxB;YACA;YACA,IAAI,CAAC3I,qBAAqB,CAAC2I,eAAe,CAAC,IAAI,CAAC1I,uBAAuB,CAAC0I,eAAe,CAAC,EAAE;cACxF/H,MAAM,CAAC,uCAAuC,EAAE+H,eAAe,CAAC;YAClE,CAAC,MAAM,IAAIpH,OAAO,IAAItB,uBAAuB,CAAC0I,eAAe,CAAC,EAAE;cAC9D;cACA9H,UAAU,CAAC+H,KAAK,CAAC,oDAAoD,EAAE;gBAAEnH,SAAS,EAAE,YAAY;gBAAEC,MAAM,EAAE;cAA6B,CAAC,EAAEiH,eAA0B,CAAC;YACvK;UACF;QACF;QAEA,IAAInB,aAAa,CAACC,MAAM,GAAG,CAAC,EAAE;UAC5B7C,cAAc,CAAC4C,aAAa,EAAE;YAAEqB,KAAK,EAAE;UAAM,CAAC,CAAC;QACjD;MACF;MAEA,IAAItB,qBAAqB,EAAE;QACzB,IAAI;UACF,MAAM1C,aAAa,CAAC0C,qBAAqB,CAAC;QAC5C,CAAC,CAAC,OAAOuB,WAAW,EAAE;UACpB;UACA,IAAI9I,qBAAqB,CAAC8I,WAAW,CAAC,EAAE;YACtC,MAAMpF,OAAO,CAACqF,UAAU,CAACtF,WAAW,CAACiB,eAAe,CAAC;YACrDE,cAAc,CACZ4C,aAAa,CAACwB,MAAM,CAAEC,OAAO,IAAKA,OAAO,CAACvB,SAAS,KAAKH,qBAAqB,CAAC,EAC9E;cAAEsB,KAAK,EAAE;YAAM,CACjB,CAAC;YACD;UACF,CAAC,MAAM,IAAI5I,uBAAuB,CAAC6I,WAAW,CAAC,EAAE;YAC/C;YACA,IAAIvH,OAAO,EAAE;cACXV,UAAU,CAAC+H,KAAK,CAAC,2DAA2D,EAAE;gBAAEnH,SAAS,EAAE,YAAY;gBAAEC,MAAM,EAAE;cAA6B,CAAC,EAAEoH,WAAsB,CAAC;YAC1K;UACF,CAAC,MAAM;YACL;YACAlI,MAAM,CAAC,iCAAiC,EAAEkI,WAAW,CAAC;UACxD;QACF;MACF;IACF,CAAC,CAAC,OAAOxH,KAAK,EAAE;MACd,IAAIC,OAAO,EAAE;QACXV,UAAU,CAACS,KAAK,CAAC,iBAAiB,EAAEA,KAAK,YAAYM,KAAK,GAAGN,KAAK,GAAG,IAAIM,KAAK,CAACsH,MAAM,CAAC5H,KAAK,CAAC,CAAC,EAAE;UAAEG,SAAS,EAAE,YAAY;UAAEC,MAAM,EAAE;QAA6B,CAAC,CAAC;MACnK;MACA,MAAMqD,iBAAiB,CAAC,CAAC;IAC3B,CAAC,SAAS;MACR9B,aAAa,CAAC,IAAI,CAAC;IACrB;EACF,CAAC,EAAE,CACD8B,iBAAiB,EACjBnE,MAAM,EACNmB,WAAW,EACX2B,OAAO,EACPD,WAAW,CAACiB,eAAe,EAC3BjB,WAAW,CAAC0D,UAAU,EACtBtC,aAAa,EACbD,cAAc,CACf,CAAC;EAEF3F,SAAS,CAAC,MAAM;IACd,IAAI,CAACyE,OAAO,IAAIR,cAAc,CAACZ,OAAO,EAAE;MACtC;IACF;IAEAY,cAAc,CAACZ,OAAO,GAAG,IAAI;IAC7B,KAAK0E,0BAA0B,CAAC,CAAC;EACnC,CAAC,EAAE,CAACA,0BAA0B,EAAEtD,OAAO,CAAC,CAAC;EAEzC,MAAMyF,aAAa,GAAGzE,eAAe,GACjCD,QAAQ,CAAC2E,IAAI,CAAEH,OAAO,IAAKA,OAAO,CAACvB,SAAS,KAAKhD,eAAe,CAAC,GACjEnB,SAAS;EACb,MAAM8F,eAAe,GAAGF,aAAa,EAAEjB,QAAQ,IAAI,IAAI;;EAEvD;EACA,MAAMK,MAAM,GAAGxG,WAAW,CAACuH,gBAAgB,CAAC,CAAC;EAE7C,MAAMC,uBAAuB,GAAGvK,WAAW,CACzC,MAAM8F,eAAe,CAACyD,MAAM,IAAIhF,SAAS,CAAC,EAC1C,CAACuB,eAAe,EAAEyD,MAAM,CAC1B,CAAC;EAED,MAAMiB,oBAAoB,GAAGxK,WAAW,CACrC0I,SAAiB,IAAK;IACrBzC,mBAAmB,CAACyC,SAAS,CAAC;EAChC,CAAC,EACD,CAACzC,mBAAmB,CACtB,CAAC;EAED,MAAMwE,mBAAmB,GAAGzK,WAAW,CAAC,MAAM;IAC5CM,KAAK,CAACoK,IAAI,CAAC,oCAAoC,CAAC;IAChD3G,MAAM,CAAC,CAAC,CAAC4G,KAAK,CAAEC,WAAW,IAAKhJ,MAAM,CAAC,mCAAmC,EAAEgJ,WAAW,CAAC,CAAC;EAC3F,CAAC,EAAE,CAAChJ,MAAM,EAAEmC,MAAM,CAAC,CAAC;EAEpBtD,gBAAgB,CAAC;IACf8I,MAAM;IACN7D,eAAe;IACf2E,eAAe;IACfvE,eAAe,EAAEyE,uBAAuB;IACxCxG,MAAM;IACNgC,iBAAiB;IACjB9C,OAAO,EAAEF,WAAW,CAAC8H,UAAU,CAAC,CAAC;IACjCC,cAAc,EAAEA,CAAA,KAAM/H,WAAW,CAAC+H,cAAc,CAAC,CAAC;IAClDC,eAAe,EAAEN,mBAAmB;IACpCO,gBAAgB,EAAER;EACpB,CAAC,CAAC;EAEF,MAAMS,uBAAuB,GAAGjL,WAAW,CACzC,MAAO0I,SAAiB,IAAoB;IAC1C,MAAM7C,aAAa,CAAC6C,SAAS,CAAC;EAChC,CAAC,EACD,CAAC7C,aAAa,CAChB,CAAC;;EAED;EACA,MAAMqF,yBAAyB,GAAGlL,WAAW,CAC1CmL,cAAkF,IAAK;IACtFhK,qBAAqB,CAACgK,cAAc,CAAC;EACvC,CAAC,EACD,EACF,CAAC;;EAED;EACA,MAAMC,gBAAgB,GAAGpL,WAAW,CAAC,MAAM;IACzCkL,yBAAyB,CAAC;MACxBG,MAAM,EAAE,gBAA6B;MACrCC,KAAK,EAAE;QACLC,UAAU,EAAE,IAAI;QAChBC,WAAW,EAAE,KAAK;QAClBC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC;QAC1DC,WAAW,EAAE,MAAM;QAAE;QACrBC,QAAQ,EAAE,MAAOC,IAAS,IAAK;UAC7B,IAAI,CAACA,IAAI,CAACC,WAAW,CAACC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC1CxL,KAAK,CAACgC,KAAK,CAACd,SAAS,CAACqD,eAAe,EAAE,gCAAgC,CAAC,IAAI,6BAA6B,CAAC;YAC1G;UACF;UACA,IAAI;YACF;YACA,MAAMpD,sBAAsB,CAACmK,IAAI,CAACpC,EAAE,EAAEzG,WAAW,EAAE,YAAY,CAAC;;YAEhE;YACA,MAAMrB,uBAAuB,CAC3B;cAAEqK,MAAM,EAAEH,IAAI,CAACpC;YAAG,CAAC,EACnBzG,WAAW,EACX2C,eAAe,EACfF,WAAW,EACX;cAAE0D,QAAQ,EAAEmB,eAAe,IAAI9F;YAAU,CAC3C,CAAC;YAEDjE,KAAK,CAAC0L,OAAO,CAACxK,SAAS,CAACqD,eAAe,EAAE,kCAAkC,CAAC,IAAI,gBAAgB,CAAC;UACnG,CAAC,CAAC,OAAOoH,CAAM,EAAE;YACf3L,KAAK,CAACgC,KAAK,CAAC2J,CAAC,CAAC5H,OAAO,IAAI7C,SAAS,CAACqD,eAAe,EAAE,uCAAuC,CAAC,IAAI,yBAAyB,CAAC;UAC5H;QACF;MACF;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAAC9B,WAAW,EAAE8B,eAAe,EAAEqG,yBAAyB,EAAExF,eAAe,EAAEF,WAAW,CAAC,CAAC;EAE3F,MAAM0G,YAA6B,GAAGhM,OAAO,CAAC,OAAO;IACnD2G,IAAI;IACJpB,QAAQ;IACRC,eAAe;IACf2E,eAAe;IACf9G,eAAe;IACfE,SAAS;IACT0I,YAAY,EAAEnI,UAAU;IACxBY,cAAc;IACdtC,KAAK;IACLuC,eAAe;IACfE,uBAAuB;IACvBE,mBAAmB;IACnBE,yBAAyB;IACzB2B,cAAc;IACd/C,MAAM;IACNgD,SAAS;IACTlB,aAAa,EAAEoF,uBAAuB;IACtCmB,aAAa,EAAErI,MAAM;IACrB+B,eAAe,EAAEyE,uBAAuB;IACxCnF,WAAW;IACXwC,iBAAiB;IACjBC,uBAAuB;IACvBC,gBAAgB;IAChB/B,iBAAiB;IACjBiB,mBAAmB;IACnBjE,WAAW;IACXX,SAAS,EAAE2F,aAAa;IACxB7G,eAAe,EAAEgK,yBAAyB;IAC1CE;EACF,CAAC,CAAC,EAAE,CACF1F,eAAe,EACf2E,eAAe,EACfvD,cAAc,EACdjC,eAAe,EACfE,uBAAuB,EACvBE,mBAAmB,EACnBE,yBAAyB,EACzB7C,KAAK,EACLsF,iBAAiB,EACjBrE,eAAe,EACfE,SAAS,EACTM,MAAM,EACNgD,SAAS,EACTc,uBAAuB,EACvB9E,WAAW,EACXwH,uBAAuB,EACvB9E,QAAQ,EACRL,WAAW,EACX6F,uBAAuB,EACvBjH,UAAU,EACVY,cAAc,EACdkD,gBAAgB,EAChBd,mBAAmB,EACnBe,aAAa,EACblB,IAAI,EACJqE,yBAAyB,EACzBE,gBAAgB,CACjB,CAAC;EAEF,oBACEnJ,IAAA,CAACH,UAAU,CAACuK,QAAQ;IAACC,KAAK,EAAEJ,YAAa;IAAApJ,QAAA,EACtCA;EAAQ,CACU,CAAC;AAE1B,CAAC;AAED,OAAO,MAAMyJ,kBAAkB,GAAG1J,WAAW;AAE7C,eAAef,UAAU","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useContext","OxyContext","useOxy","context","Error"],"sourceRoot":"../../../../src","sources":["ui/context/OxyContextBase.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"names":["createContext","useContext","OxyContext","useOxy","context","Error"],"sourceRoot":"../../../../src","sources":["ui/context/OxyContextBase.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAuDjD,OAAO,MAAMC,UAAU,gBAAGF,aAAa,CAAyB,IAAI,CAAC;AAWrE;AACA;AACA;AACA;AACA,OAAO,MAAMG,MAAM,GAAGA,CAAA,KAAuB;EACzC,MAAMC,OAAO,GAAGH,UAAU,CAACC,UAAU,CAAC;EACtC,IAAI,CAACE,OAAO,EAAE;IACV,MAAM,IAAIC,KAAK,CAAC,kDAAkD,CAAC;EACvE;EACA,OAAOD,OAAO;AAClB,CAAC","ignoreList":[]}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
|
-
import { DeviceManager } from '../../../utils/deviceManager';
|
|
5
4
|
import { fetchSessionsWithFallback } from '../../utils/sessionHelpers';
|
|
6
5
|
import { handleAuthError, isInvalidSessionError } from '../../utils/errorHandlers';
|
|
7
|
-
import { KeyManager, SignatureService } from '../../../crypto';
|
|
8
|
-
const LOGIN_ERROR_CODE = 'LOGIN_ERROR';
|
|
9
|
-
const REGISTER_ERROR_CODE = 'REGISTER_ERROR';
|
|
10
6
|
const LOGOUT_ERROR_CODE = 'LOGOUT_ERROR';
|
|
11
7
|
const LOGOUT_ALL_ERROR_CODE = 'LOGOUT_ALL_ERROR';
|
|
12
8
|
|
|
13
9
|
/**
|
|
14
|
-
* Authentication operations
|
|
15
|
-
*
|
|
10
|
+
* Authentication operations for Services SDK.
|
|
11
|
+
*
|
|
12
|
+
* ARCHITECTURE:
|
|
13
|
+
* - Services SDK only handles tokens/sessions (NOT identity)
|
|
14
|
+
* - Accounts app handles identity (KeyManager, SignatureService, challenge signing)
|
|
15
|
+
* - completeSignIn() accepts already-verified session from Accounts app
|
|
16
16
|
*/
|
|
17
17
|
export const useAuthOperations = ({
|
|
18
18
|
oxyServices,
|
|
@@ -31,422 +31,78 @@ export const useAuthOperations = ({
|
|
|
31
31
|
loginFailure,
|
|
32
32
|
logoutStore,
|
|
33
33
|
setAuthState,
|
|
34
|
-
setIdentitySynced,
|
|
35
|
-
setSyncing,
|
|
36
34
|
logger
|
|
37
35
|
}) => {
|
|
38
36
|
/**
|
|
39
|
-
*
|
|
37
|
+
* Complete sign-in after external authentication.
|
|
38
|
+
*
|
|
39
|
+
* This is called by Accounts app AFTER it has:
|
|
40
|
+
* 1. Requested challenge from backend
|
|
41
|
+
* 2. Signed challenge locally with private key
|
|
42
|
+
* 3. Verified challenge with backend to get sessionResponse
|
|
43
|
+
*
|
|
44
|
+
* Services SDK only stores tokens and manages session state.
|
|
45
|
+
*
|
|
46
|
+
* @param sessionResponse - Session data from verifyChallenge API call
|
|
40
47
|
*/
|
|
41
|
-
const
|
|
42
|
-
const deviceFingerprintObj = DeviceManager.getDeviceFingerprint();
|
|
43
|
-
const deviceFingerprint = JSON.stringify(deviceFingerprintObj);
|
|
44
|
-
const deviceInfo = await DeviceManager.getDeviceInfo();
|
|
45
|
-
const deviceName = deviceInfo.deviceName || DeviceManager.getDefaultDeviceName();
|
|
46
|
-
const USER_ID_STORAGE_KEY = 'oxy_user_id';
|
|
47
|
-
|
|
48
|
-
// Online-only sign-in: require backend availability
|
|
49
|
-
// First, look up the user by public key to get the correct userId
|
|
50
|
-
// This ensures we always use the userId that matches the current identity's public key
|
|
51
|
-
let userId = null;
|
|
52
|
-
|
|
53
|
-
// Always verify the userId matches the current public key
|
|
54
|
-
// This prevents auth failures when identity has changed
|
|
55
|
-
const userLookup = await oxyServices.getUserByPublicKey(publicKey);
|
|
56
|
-
userId = userLookup.id;
|
|
57
|
-
|
|
58
|
-
// Update stored userId to match current identity
|
|
59
|
-
if (storage && userId) {
|
|
60
|
-
await storage.setItem(USER_ID_STORAGE_KEY, userId).catch(() => {});
|
|
61
|
-
}
|
|
62
|
-
const challengeResponse = await oxyServices.requestChallenge(userId);
|
|
63
|
-
const challenge = challengeResponse.challenge;
|
|
64
|
-
|
|
65
|
-
// Note: Biometric authentication check should be handled by the app layer
|
|
66
|
-
// (e.g., accounts app) before calling signIn. The biometric preference is stored
|
|
67
|
-
// in local storage as 'oxy_biometric_enabled' and can be checked there.
|
|
68
|
-
|
|
69
|
-
// Sign the challenge
|
|
70
|
-
const {
|
|
71
|
-
challenge: signature,
|
|
72
|
-
timestamp
|
|
73
|
-
} = await SignatureService.signChallenge(challenge);
|
|
74
|
-
|
|
75
|
-
// Online sign-in: use normal flow
|
|
76
|
-
if (!userId) {
|
|
77
|
-
throw new Error('User ID not found');
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// Verify and create session using userId
|
|
81
|
-
let sessionResponse;
|
|
82
|
-
try {
|
|
83
|
-
sessionResponse = await oxyServices.verifyChallenge(userId, challenge, signature, timestamp, deviceName, deviceFingerprint);
|
|
84
|
-
} catch (verifyError) {
|
|
85
|
-
// Add detailed logging for 401 errors to help diagnose auth failures
|
|
86
|
-
if (__DEV__) {
|
|
87
|
-
console.error('[useAuthOperations] verifyChallenge failed:', {
|
|
88
|
-
error: verifyError,
|
|
89
|
-
userId,
|
|
90
|
-
challengeLength: challenge?.length,
|
|
91
|
-
signatureLength: signature?.length,
|
|
92
|
-
timestamp,
|
|
93
|
-
timeSinceChallenge: Date.now() - timestamp
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
throw verifyError;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Store tokens immediately (no extra round-trip)
|
|
100
|
-
oxyServices.setTokens(sessionResponse.accessToken, sessionResponse.refreshToken);
|
|
101
|
-
|
|
102
|
-
// Get full user data
|
|
103
|
-
const fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
|
|
104
|
-
|
|
105
|
-
// IMPORTANT: user.id should be MongoDB ObjectId, not publicKey
|
|
106
|
-
// The API should return the correct id (ObjectId) from the database
|
|
107
|
-
// If it doesn't, we need to fix the API, not work around it here
|
|
108
|
-
// Validate that id is ObjectId format (24 hex characters)
|
|
109
|
-
if (fullUser.id && !/^[0-9a-fA-F]{24}$/.test(fullUser.id)) {
|
|
110
|
-
console.warn('[useAuthOperations] User.id is not MongoDB ObjectId format:', {
|
|
111
|
-
id: fullUser.id.substring(0, 20),
|
|
112
|
-
publicKey: fullUser.publicKey.substring(0, 20),
|
|
113
|
-
message: 'API should return MongoDB ObjectId as user.id, not publicKey'
|
|
114
|
-
});
|
|
115
|
-
// Don't override - let the API fix this issue
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Fetch device sessions
|
|
119
|
-
let allDeviceSessions = [];
|
|
120
|
-
try {
|
|
121
|
-
allDeviceSessions = await fetchSessionsWithFallback(oxyServices, sessionResponse.sessionId, {
|
|
122
|
-
fallbackDeviceId: sessionResponse.deviceId,
|
|
123
|
-
fallbackUserId: fullUser.id,
|
|
124
|
-
logger
|
|
125
|
-
});
|
|
126
|
-
} catch (error) {
|
|
127
|
-
if (__DEV__) {
|
|
128
|
-
console.warn('Failed to fetch device sessions after login:', error);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// Check for existing session for same user
|
|
133
|
-
const existingSession = allDeviceSessions.find(session => session.userId?.toString() === fullUser.id?.toString() && session.sessionId !== sessionResponse.sessionId);
|
|
134
|
-
if (existingSession) {
|
|
135
|
-
// Logout duplicate session
|
|
136
|
-
try {
|
|
137
|
-
await oxyServices.logoutSession(sessionResponse.sessionId, sessionResponse.sessionId);
|
|
138
|
-
} catch (logoutError) {
|
|
139
|
-
if (__DEV__) {
|
|
140
|
-
console.warn('Failed to logout duplicate session:', logoutError);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
await switchSession(existingSession.sessionId);
|
|
144
|
-
updateSessions(allDeviceSessions.filter(session => session.sessionId !== sessionResponse.sessionId), {
|
|
145
|
-
merge: false
|
|
146
|
-
});
|
|
147
|
-
onAuthStateChange?.(fullUser);
|
|
148
|
-
return fullUser;
|
|
149
|
-
}
|
|
150
|
-
setActiveSessionId(sessionResponse.sessionId);
|
|
151
|
-
await saveActiveSessionId(sessionResponse.sessionId);
|
|
152
|
-
updateSessions(allDeviceSessions, {
|
|
153
|
-
merge: true
|
|
154
|
-
});
|
|
155
|
-
await applyLanguagePreference(fullUser);
|
|
156
|
-
loginSuccess(); // Services never caches profile - only tokens
|
|
157
|
-
onAuthStateChange?.(fullUser);
|
|
158
|
-
if (storage) {
|
|
159
|
-
await storage.setItem('oxy_identity_synced', 'true').catch(() => {});
|
|
160
|
-
}
|
|
161
|
-
setIdentitySynced(true);
|
|
162
|
-
return fullUser;
|
|
163
|
-
}, [applyLanguagePreference, logger, loginSuccess, onAuthStateChange, oxyServices, saveActiveSessionId, setActiveSessionId, setIdentitySynced, switchSession, updateSessions, storage]);
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Create a new identity (offline-first)
|
|
167
|
-
* Identity is purely cryptographic - no username or email required
|
|
168
|
-
*/
|
|
169
|
-
const createIdentity = useCallback(async () => {
|
|
48
|
+
const completeSignIn = useCallback(async sessionResponse => {
|
|
170
49
|
if (!storage) throw new Error('Storage not initialized');
|
|
171
50
|
setAuthState({
|
|
172
51
|
isLoading: true,
|
|
173
52
|
error: null
|
|
174
53
|
});
|
|
175
54
|
try {
|
|
176
|
-
//
|
|
177
|
-
|
|
178
|
-
publicKey,
|
|
179
|
-
privateKey
|
|
180
|
-
} = await KeyManager.generateKeyPair();
|
|
181
|
-
await KeyManager.importKeyPair(privateKey);
|
|
55
|
+
// Store tokens (Services' only responsibility)
|
|
56
|
+
oxyServices.setTokens(sessionResponse.accessToken, sessionResponse.refreshToken);
|
|
182
57
|
|
|
183
|
-
//
|
|
184
|
-
|
|
185
|
-
// Registration with server (registerIdentity) must be done by the app (Accounts) with profile data
|
|
186
|
-
await storage.setItem('oxy_identity_synced', 'false');
|
|
187
|
-
setIdentitySynced(false);
|
|
188
|
-
return {
|
|
189
|
-
synced: false // Always false - registration must be done separately by Accounts app
|
|
190
|
-
};
|
|
191
|
-
} catch (error) {
|
|
192
|
-
// CRITICAL: Never delete identity on error - it may have been successfully created
|
|
193
|
-
// Only log the error and let the user recover using their backup file
|
|
194
|
-
// Identity deletion should ONLY happen when explicitly requested by the user
|
|
195
|
-
if (__DEV__ && logger) {
|
|
196
|
-
logger('Error during identity creation (identity may still exist):', error);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
// Check if identity was actually created (keys exist)
|
|
200
|
-
const hasIdentity = await KeyManager.hasIdentity().catch(() => false);
|
|
201
|
-
if (hasIdentity) {
|
|
202
|
-
// Identity exists - don't delete it! Just mark as not synced
|
|
203
|
-
await storage.setItem('oxy_identity_synced', 'false').catch(() => {});
|
|
204
|
-
setIdentitySynced(false);
|
|
205
|
-
if (__DEV__ && logger) {
|
|
206
|
-
logger('Identity was created but sync failed - user can sync later using backup file');
|
|
207
|
-
}
|
|
208
|
-
} else {
|
|
209
|
-
// No identity exists - this was a generation failure, safe to clean up sync flag
|
|
210
|
-
await storage.removeItem('oxy_identity_synced').catch(() => {});
|
|
211
|
-
setIdentitySynced(false);
|
|
212
|
-
}
|
|
213
|
-
const message = handleAuthError(error, {
|
|
214
|
-
defaultMessage: 'Failed to create identity',
|
|
215
|
-
code: REGISTER_ERROR_CODE,
|
|
216
|
-
onError,
|
|
217
|
-
setAuthError: msg => setAuthState({
|
|
218
|
-
error: msg
|
|
219
|
-
}),
|
|
220
|
-
logger
|
|
221
|
-
});
|
|
222
|
-
loginFailure(message);
|
|
223
|
-
throw error;
|
|
224
|
-
} finally {
|
|
225
|
-
setAuthState({
|
|
226
|
-
isLoading: false
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
}, [oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced]);
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Check if identity is synced with server (reads from storage for persistence)
|
|
233
|
-
*/
|
|
234
|
-
const isIdentitySyncedFn = useCallback(async () => {
|
|
235
|
-
if (!storage) return true;
|
|
236
|
-
const synced = await storage.getItem('oxy_identity_synced');
|
|
237
|
-
const isSynced = synced !== 'false';
|
|
238
|
-
setIdentitySynced(isSynced);
|
|
239
|
-
return isSynced;
|
|
240
|
-
}, [storage, setIdentitySynced]);
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Sync local identity with server (call when online)
|
|
244
|
-
* TanStack Query handles offline mutations automatically
|
|
245
|
-
*/
|
|
246
|
-
const syncIdentity = useCallback(async () => {
|
|
247
|
-
if (!storage) throw new Error('Storage not initialized');
|
|
248
|
-
setAuthState({
|
|
249
|
-
isLoading: true,
|
|
250
|
-
error: null
|
|
251
|
-
});
|
|
252
|
-
setSyncing(true);
|
|
253
|
-
try {
|
|
254
|
-
const publicKey = await KeyManager.getPublicKey();
|
|
255
|
-
if (!publicKey) {
|
|
256
|
-
throw new Error('No identity found on this device');
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// Check if already synced
|
|
260
|
-
const alreadySynced = await storage.getItem('oxy_identity_synced');
|
|
261
|
-
if (alreadySynced === 'true') {
|
|
262
|
-
setIdentitySynced(true);
|
|
263
|
-
return await performSignIn(publicKey);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// Check if already registered on server
|
|
267
|
-
const {
|
|
268
|
-
registered
|
|
269
|
-
} = await oxyServices.checkPublicKeyRegistered(publicKey);
|
|
270
|
-
if (!registered) {
|
|
271
|
-
// Identity is not registered - registration must be done by Accounts app with profile data
|
|
272
|
-
// syncIdentity only syncs already-registered identities
|
|
273
|
-
throw new Error('Identity is not registered. Please register your identity first using the Accounts app.');
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
// Mark as synced (Zustand store + storage)
|
|
277
|
-
await storage.setItem('oxy_identity_synced', 'true');
|
|
278
|
-
setIdentitySynced(true);
|
|
279
|
-
|
|
280
|
-
// Sign in (Services never caches profile - only tokens)
|
|
281
|
-
const user = await performSignIn(publicKey);
|
|
282
|
-
|
|
283
|
-
// Check if user has username - required for syncing
|
|
284
|
-
if (!user.username) {
|
|
285
|
-
const usernameError = new Error('USERNAME_REQUIRED');
|
|
286
|
-
usernameError.code = 'USERNAME_REQUIRED';
|
|
287
|
-
throw usernameError;
|
|
288
|
-
}
|
|
58
|
+
// Get full user data
|
|
59
|
+
const fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
|
|
289
60
|
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
return user;
|
|
293
|
-
} catch (error) {
|
|
294
|
-
const message = handleAuthError(error, {
|
|
295
|
-
defaultMessage: 'Failed to sync identity',
|
|
296
|
-
code: REGISTER_ERROR_CODE,
|
|
297
|
-
onError,
|
|
298
|
-
setAuthError: msg => setAuthState({
|
|
299
|
-
error: msg
|
|
300
|
-
}),
|
|
301
|
-
logger
|
|
302
|
-
});
|
|
303
|
-
loginFailure(message);
|
|
304
|
-
throw error;
|
|
305
|
-
} finally {
|
|
306
|
-
setAuthState({
|
|
307
|
-
isLoading: false
|
|
308
|
-
});
|
|
309
|
-
setSyncing(false);
|
|
310
|
-
}
|
|
311
|
-
}, [oxyServices, storage, setAuthState, performSignIn, loginFailure, onError, logger, setSyncing, setIdentitySynced]);
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Import identity from backup file data (offline-first)
|
|
315
|
-
*/
|
|
316
|
-
const importIdentity = useCallback(async (backupData, password) => {
|
|
317
|
-
if (!storage) throw new Error('Storage not initialized');
|
|
318
|
-
|
|
319
|
-
// Validate arguments - ensure backupData is an object, not a string (old signature)
|
|
320
|
-
if (!backupData || typeof backupData !== 'object' || Array.isArray(backupData)) {
|
|
321
|
-
throw new Error('Invalid backup data. Please use the backup file import feature.');
|
|
322
|
-
}
|
|
323
|
-
if (!backupData.encrypted || !backupData.salt || !backupData.iv || !backupData.publicKey) {
|
|
324
|
-
throw new Error('Invalid backup data structure. Missing required fields.');
|
|
325
|
-
}
|
|
326
|
-
if (!password || typeof password !== 'string') {
|
|
327
|
-
throw new Error('Password is required for backup file import.');
|
|
328
|
-
}
|
|
329
|
-
setAuthState({
|
|
330
|
-
isLoading: true,
|
|
331
|
-
error: null
|
|
332
|
-
});
|
|
333
|
-
try {
|
|
334
|
-
// Decrypt private key from backup data
|
|
335
|
-
const Crypto = await import('expo-crypto');
|
|
336
|
-
|
|
337
|
-
// Convert hex strings to Uint8Array
|
|
338
|
-
const saltBytes = new Uint8Array(backupData.salt.match(/.{1,2}/g)?.map(byte => parseInt(byte, 16)) || []);
|
|
339
|
-
const ivBytes = new Uint8Array(backupData.iv.match(/.{1,2}/g)?.map(byte => parseInt(byte, 16)) || []);
|
|
340
|
-
|
|
341
|
-
// Derive key from password (same algorithm as EncryptedBackupGenerator)
|
|
342
|
-
const saltHex = Array.from(saltBytes).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
343
|
-
let key = password + saltHex;
|
|
344
|
-
for (let i = 0; i < 10000; i++) {
|
|
345
|
-
key = await Crypto.digestStringAsync(Crypto.CryptoDigestAlgorithm.SHA256, key);
|
|
346
|
-
}
|
|
347
|
-
const keyBytes = new Uint8Array(32);
|
|
348
|
-
for (let i = 0; i < 64 && i < key.length; i += 2) {
|
|
349
|
-
keyBytes[i / 2] = parseInt(key.substring(i, i + 2), 16);
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
// Decrypt private key (XOR decryption - same as encryption)
|
|
353
|
-
const encryptedBytes = Buffer.from(backupData.encrypted, 'base64');
|
|
354
|
-
const decryptedBytes = new Uint8Array(encryptedBytes.length);
|
|
355
|
-
for (let i = 0; i < encryptedBytes.length; i++) {
|
|
356
|
-
decryptedBytes[i] = encryptedBytes[i] ^ keyBytes[i % keyBytes.length] ^ ivBytes[i % ivBytes.length];
|
|
357
|
-
}
|
|
358
|
-
const privateKey = new TextDecoder().decode(decryptedBytes);
|
|
359
|
-
|
|
360
|
-
// Import the key pair
|
|
361
|
-
const publicKey = await KeyManager.importKeyPair(privateKey);
|
|
362
|
-
|
|
363
|
-
// Verify public key matches
|
|
364
|
-
if (publicKey !== backupData.publicKey) {
|
|
365
|
-
throw new Error('Backup file is corrupted or password is incorrect');
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
// Mark as not synced
|
|
369
|
-
await storage.setItem('oxy_identity_synced', 'false');
|
|
370
|
-
setIdentitySynced(false);
|
|
371
|
-
|
|
372
|
-
// Try to sync with server
|
|
61
|
+
// Fetch device sessions
|
|
62
|
+
let allDeviceSessions = [];
|
|
373
63
|
try {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
await storage.setItem('oxy_identity_synced', 'true');
|
|
381
|
-
setIdentitySynced(true);
|
|
382
|
-
return {
|
|
383
|
-
synced: true
|
|
384
|
-
};
|
|
385
|
-
} else {
|
|
386
|
-
// Identity is not registered - registration must be done by Accounts app with profile data
|
|
387
|
-
// importIdentity only imports already-registered identities
|
|
388
|
-
await storage.setItem('oxy_identity_synced', 'false');
|
|
389
|
-
setIdentitySynced(false);
|
|
390
|
-
return {
|
|
391
|
-
synced: false
|
|
392
|
-
};
|
|
393
|
-
}
|
|
394
|
-
} catch (syncError) {
|
|
395
|
-
// Offline - identity restored locally but not synced
|
|
64
|
+
allDeviceSessions = await fetchSessionsWithFallback(oxyServices, sessionResponse.sessionId, {
|
|
65
|
+
fallbackDeviceId: sessionResponse.deviceId,
|
|
66
|
+
fallbackUserId: fullUser.id,
|
|
67
|
+
logger
|
|
68
|
+
});
|
|
69
|
+
} catch (error) {
|
|
396
70
|
if (__DEV__) {
|
|
397
|
-
console.
|
|
71
|
+
console.warn('Failed to fetch device sessions after login:', error);
|
|
398
72
|
}
|
|
399
|
-
return {
|
|
400
|
-
synced: false
|
|
401
|
-
};
|
|
402
73
|
}
|
|
403
|
-
} catch (error) {
|
|
404
|
-
const message = handleAuthError(error, {
|
|
405
|
-
defaultMessage: 'Failed to import identity. Please check your password and backup file.',
|
|
406
|
-
code: REGISTER_ERROR_CODE,
|
|
407
|
-
onError,
|
|
408
|
-
setAuthError: msg => setAuthState({
|
|
409
|
-
error: msg
|
|
410
|
-
}),
|
|
411
|
-
logger
|
|
412
|
-
});
|
|
413
|
-
loginFailure(message);
|
|
414
|
-
throw error;
|
|
415
|
-
} finally {
|
|
416
|
-
setAuthState({
|
|
417
|
-
isLoading: false
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
}, [oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced]);
|
|
421
74
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
const {
|
|
440
|
-
registered
|
|
441
|
-
} = await oxyServices.checkPublicKeyRegistered(publicKey);
|
|
442
|
-
if (!registered) {
|
|
443
|
-
throw new Error('Identity is not registered. Please register your identity in the Accounts app before signing in.');
|
|
75
|
+
// Check for existing session for same user
|
|
76
|
+
const existingSession = allDeviceSessions.find(session => session.userId?.toString() === fullUser.id?.toString() && session.sessionId !== sessionResponse.sessionId);
|
|
77
|
+
if (existingSession) {
|
|
78
|
+
// Logout duplicate session
|
|
79
|
+
try {
|
|
80
|
+
await oxyServices.logoutSession(sessionResponse.sessionId, sessionResponse.sessionId);
|
|
81
|
+
} catch (logoutError) {
|
|
82
|
+
if (__DEV__) {
|
|
83
|
+
console.warn('Failed to logout duplicate session:', logoutError);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
await switchSession(existingSession.sessionId);
|
|
87
|
+
updateSessions(allDeviceSessions.filter(session => session.sessionId !== sessionResponse.sessionId), {
|
|
88
|
+
merge: false
|
|
89
|
+
});
|
|
90
|
+
onAuthStateChange?.(fullUser);
|
|
91
|
+
return fullUser;
|
|
444
92
|
}
|
|
445
|
-
|
|
93
|
+
setActiveSessionId(sessionResponse.sessionId);
|
|
94
|
+
await saveActiveSessionId(sessionResponse.sessionId);
|
|
95
|
+
updateSessions(allDeviceSessions, {
|
|
96
|
+
merge: true
|
|
97
|
+
});
|
|
98
|
+
await applyLanguagePreference(fullUser);
|
|
99
|
+
loginSuccess();
|
|
100
|
+
onAuthStateChange?.(fullUser);
|
|
101
|
+
return fullUser;
|
|
446
102
|
} catch (error) {
|
|
447
103
|
const message = handleAuthError(error, {
|
|
448
104
|
defaultMessage: 'Sign in failed',
|
|
449
|
-
code:
|
|
105
|
+
code: 'COMPLETE_SIGNIN_ERROR',
|
|
450
106
|
onError,
|
|
451
107
|
setAuthError: msg => setAuthState({
|
|
452
108
|
error: msg
|
|
@@ -460,7 +116,7 @@ export const useAuthOperations = ({
|
|
|
460
116
|
isLoading: false
|
|
461
117
|
});
|
|
462
118
|
}
|
|
463
|
-
}, [storage, setAuthState,
|
|
119
|
+
}, [storage, setAuthState, oxyServices, logger, saveActiveSessionId, setActiveSessionId, switchSession, updateSessions, applyLanguagePreference, loginSuccess, onAuthStateChange, onError, loginFailure]);
|
|
464
120
|
|
|
465
121
|
/**
|
|
466
122
|
* Logout from session
|
|
@@ -533,30 +189,10 @@ export const useAuthOperations = ({
|
|
|
533
189
|
throw error instanceof Error ? error : new Error('Logout all failed');
|
|
534
190
|
}
|
|
535
191
|
}, [activeSessionId, clearSessionState, logger, onError, oxyServices, setAuthState]);
|
|
536
|
-
|
|
537
|
-
/**
|
|
538
|
-
* Check if device has an identity stored
|
|
539
|
-
*/
|
|
540
|
-
const hasIdentity = useCallback(async () => {
|
|
541
|
-
return KeyManager.hasIdentity();
|
|
542
|
-
}, []);
|
|
543
|
-
|
|
544
|
-
/**
|
|
545
|
-
* Get the public key of the stored identity
|
|
546
|
-
*/
|
|
547
|
-
const getPublicKey = useCallback(async () => {
|
|
548
|
-
return KeyManager.getPublicKey();
|
|
549
|
-
}, []);
|
|
550
192
|
return {
|
|
551
|
-
|
|
552
|
-
importIdentity,
|
|
553
|
-
signIn,
|
|
193
|
+
completeSignIn,
|
|
554
194
|
logout,
|
|
555
|
-
logoutAll
|
|
556
|
-
hasIdentity,
|
|
557
|
-
getPublicKey,
|
|
558
|
-
isIdentitySynced: isIdentitySyncedFn,
|
|
559
|
-
syncIdentity
|
|
195
|
+
logoutAll
|
|
560
196
|
};
|
|
561
197
|
};
|
|
562
198
|
//# sourceMappingURL=useAuthOperations.js.map
|