@oxyhq/services 5.15.9 → 5.16.1

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 (159) hide show
  1. package/lib/commonjs/core/OxyServices.js +0 -1
  2. package/lib/commonjs/core/OxyServices.js.map +1 -1
  3. package/lib/commonjs/core/mixins/OxyServices.assets.js +15 -0
  4. package/lib/commonjs/core/mixins/OxyServices.assets.js.map +1 -1
  5. package/lib/commonjs/core/mixins/OxyServices.auth.js +3 -6
  6. package/lib/commonjs/core/mixins/OxyServices.auth.js.map +1 -1
  7. package/lib/commonjs/core/mixins/OxyServices.devices.js +1 -1
  8. package/lib/commonjs/core/mixins/OxyServices.devices.js.map +1 -1
  9. package/lib/commonjs/core/mixins/index.js +11 -12
  10. package/lib/commonjs/core/mixins/index.js.map +1 -1
  11. package/lib/commonjs/crypto/signatureService.js +3 -2
  12. package/lib/commonjs/crypto/signatureService.js.map +1 -1
  13. package/lib/commonjs/i18n/locales/ar-SA.json +1 -9
  14. package/lib/commonjs/i18n/locales/ca-ES.json +1 -9
  15. package/lib/commonjs/i18n/locales/de-DE.json +1 -9
  16. package/lib/commonjs/i18n/locales/en-US.json +3 -21
  17. package/lib/commonjs/i18n/locales/es-ES.json +3 -21
  18. package/lib/commonjs/i18n/locales/fr-FR.json +1 -9
  19. package/lib/commonjs/i18n/locales/it-IT.json +1 -9
  20. package/lib/commonjs/i18n/locales/ja-JP.json +1 -9
  21. package/lib/commonjs/i18n/locales/ko-KR.json +1 -9
  22. package/lib/commonjs/i18n/locales/pt-PT.json +1 -9
  23. package/lib/commonjs/i18n/locales/zh-CN.json +1 -9
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/ui/context/OxyContext.js +24 -4
  26. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  27. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +217 -100
  28. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  29. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +2 -319
  30. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  31. package/lib/commonjs/ui/screens/OxyAuthScreen.js +16 -7
  32. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  33. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +0 -1
  34. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  35. package/lib/commonjs/ui/screens/SessionManagementScreen.js +43 -29
  36. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  37. package/lib/commonjs/ui/stores/authStore.js +14 -1
  38. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  39. package/lib/module/core/OxyServices.js +0 -1
  40. package/lib/module/core/OxyServices.js.map +1 -1
  41. package/lib/module/core/mixins/OxyServices.assets.js +15 -0
  42. package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
  43. package/lib/module/core/mixins/OxyServices.auth.js +3 -6
  44. package/lib/module/core/mixins/OxyServices.auth.js.map +1 -1
  45. package/lib/module/core/mixins/OxyServices.devices.js +1 -1
  46. package/lib/module/core/mixins/OxyServices.devices.js.map +1 -1
  47. package/lib/module/core/mixins/index.js +1 -2
  48. package/lib/module/core/mixins/index.js.map +1 -1
  49. package/lib/module/crypto/signatureService.js +3 -2
  50. package/lib/module/crypto/signatureService.js.map +1 -1
  51. package/lib/module/i18n/locales/ar-SA.json +1 -9
  52. package/lib/module/i18n/locales/ca-ES.json +1 -9
  53. package/lib/module/i18n/locales/de-DE.json +1 -9
  54. package/lib/module/i18n/locales/en-US.json +3 -21
  55. package/lib/module/i18n/locales/es-ES.json +3 -21
  56. package/lib/module/i18n/locales/fr-FR.json +1 -9
  57. package/lib/module/i18n/locales/it-IT.json +1 -9
  58. package/lib/module/i18n/locales/ja-JP.json +1 -9
  59. package/lib/module/i18n/locales/ko-KR.json +1 -9
  60. package/lib/module/i18n/locales/pt-PT.json +1 -9
  61. package/lib/module/i18n/locales/zh-CN.json +1 -9
  62. package/lib/module/index.js.map +1 -1
  63. package/lib/module/ui/context/OxyContext.js +24 -4
  64. package/lib/module/ui/context/OxyContext.js.map +1 -1
  65. package/lib/module/ui/context/hooks/useAuthOperations.js +217 -100
  66. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  67. package/lib/module/ui/screens/AccountSettingsScreen.js +2 -319
  68. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  69. package/lib/module/ui/screens/OxyAuthScreen.js +16 -7
  70. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  71. package/lib/module/ui/screens/PrivacySettingsScreen.js +0 -1
  72. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  73. package/lib/module/ui/screens/SessionManagementScreen.js +44 -29
  74. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  75. package/lib/module/ui/stores/authStore.js +14 -1
  76. package/lib/module/ui/stores/authStore.js.map +1 -1
  77. package/lib/typescript/core/OxyServices.d.ts +0 -1
  78. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  79. package/lib/typescript/core/mixins/OxyServices.assets.d.ts +7 -1
  80. package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
  81. package/lib/typescript/core/mixins/OxyServices.auth.d.ts +3 -4
  82. package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +1 -1
  83. package/lib/typescript/core/mixins/OxyServices.devices.d.ts +1 -4
  84. package/lib/typescript/core/mixins/OxyServices.devices.d.ts.map +1 -1
  85. package/lib/typescript/core/mixins/index.d.ts +2 -64
  86. package/lib/typescript/core/mixins/index.d.ts.map +1 -1
  87. package/lib/typescript/crypto/signatureService.d.ts +2 -1
  88. package/lib/typescript/crypto/signatureService.d.ts.map +1 -1
  89. package/lib/typescript/index.d.ts +1 -1
  90. package/lib/typescript/index.d.ts.map +1 -1
  91. package/lib/typescript/models/interfaces.d.ts +22 -1
  92. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  93. package/lib/typescript/types/bip39.d.ts +1 -0
  94. package/lib/typescript/types/buffer.d.ts +1 -0
  95. package/lib/typescript/types/color.d.ts +1 -0
  96. package/lib/typescript/types/elliptic.d.ts +1 -0
  97. package/lib/typescript/types/expo-crypto.d.ts +1 -0
  98. package/lib/typescript/types/expo-secure-store.d.ts +1 -0
  99. package/lib/typescript/ui/context/OxyContext.d.ts +11 -3
  100. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  101. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +13 -5
  102. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  103. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  104. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  105. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  106. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  107. package/lib/typescript/ui/stores/authStore.d.ts +4 -0
  108. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  109. package/package.json +5 -4
  110. package/src/core/OxyServices.ts +0 -1
  111. package/src/core/mixins/OxyServices.assets.ts +16 -1
  112. package/src/core/mixins/OxyServices.auth.ts +3 -8
  113. package/src/core/mixins/OxyServices.devices.ts +1 -4
  114. package/src/core/mixins/index.ts +2 -5
  115. package/src/crypto/index.ts +1 -0
  116. package/src/crypto/keyManager.ts +1 -0
  117. package/src/crypto/polyfill.ts +1 -0
  118. package/src/crypto/recoveryPhrase.ts +1 -0
  119. package/src/crypto/signatureService.ts +4 -5
  120. package/src/i18n/locales/ar-SA.json +1 -9
  121. package/src/i18n/locales/ca-ES.json +1 -9
  122. package/src/i18n/locales/de-DE.json +1 -9
  123. package/src/i18n/locales/en-US.json +3 -21
  124. package/src/i18n/locales/es-ES.json +3 -21
  125. package/src/i18n/locales/fr-FR.json +1 -9
  126. package/src/i18n/locales/it-IT.json +1 -9
  127. package/src/i18n/locales/ja-JP.json +1 -9
  128. package/src/i18n/locales/ko-KR.json +1 -9
  129. package/src/i18n/locales/pt-PT.json +1 -9
  130. package/src/i18n/locales/zh-CN.json +1 -9
  131. package/src/index.ts +4 -1
  132. package/src/models/interfaces.ts +24 -1
  133. package/src/types/bip39.d.ts +1 -0
  134. package/src/types/buffer.d.ts +1 -0
  135. package/src/types/color.d.ts +1 -0
  136. package/src/types/elliptic.d.ts +1 -0
  137. package/src/types/expo-crypto.d.ts +1 -0
  138. package/src/types/expo-secure-store.d.ts +1 -0
  139. package/src/ui/context/OxyContext.tsx +35 -3
  140. package/src/ui/context/hooks/useAuthOperations.ts +212 -98
  141. package/src/ui/screens/AccountSettingsScreen.tsx +1 -201
  142. package/src/ui/screens/OxyAuthScreen.tsx +16 -8
  143. package/src/ui/screens/PrivacySettingsScreen.tsx +0 -2
  144. package/src/ui/screens/SessionManagementScreen.tsx +43 -26
  145. package/src/ui/stores/authStore.ts +31 -2
  146. package/lib/commonjs/core/mixins/OxyServices.totp.js +0 -53
  147. package/lib/commonjs/core/mixins/OxyServices.totp.js.map +0 -1
  148. package/lib/commonjs/ui/components/profile/TwoFactorSetupModal.js +0 -467
  149. package/lib/commonjs/ui/components/profile/TwoFactorSetupModal.js.map +0 -1
  150. package/lib/module/core/mixins/OxyServices.totp.js +0 -49
  151. package/lib/module/core/mixins/OxyServices.totp.js.map +0 -1
  152. package/lib/module/ui/components/profile/TwoFactorSetupModal.js +0 -460
  153. package/lib/module/ui/components/profile/TwoFactorSetupModal.js.map +0 -1
  154. package/lib/typescript/core/mixins/OxyServices.totp.d.ts +0 -66
  155. package/lib/typescript/core/mixins/OxyServices.totp.d.ts.map +0 -1
  156. package/lib/typescript/ui/components/profile/TwoFactorSetupModal.d.ts +0 -11
  157. package/lib/typescript/ui/components/profile/TwoFactorSetupModal.d.ts.map +0 -1
  158. package/src/core/mixins/OxyServices.totp.ts +0 -36
  159. package/src/ui/components/profile/TwoFactorSetupModal.tsx +0 -442
@@ -46,14 +46,6 @@
46
46
  "status": {
47
47
  "accountSwitched": "{{name}}を使用中"
48
48
  },
49
- "totp": {
50
- "title": "二要素認証コード",
51
- "subtitle": "@{{username}}の認証アプリから6桁のコードを入力してください",
52
- "invalidCode": "無効なコードです。もう一度お試しください。",
53
- "noAccess": "認証アプリにアクセスできませんか?",
54
- "useBackupCode": "バックアップコードを使用",
55
- "useRecoveryKey": "回復キーを使用"
56
- }
57
49
  },
58
50
  "signup": {
59
51
  "welcome": {
@@ -98,7 +90,7 @@
98
90
  "password": "パスワード"
99
91
  },
100
92
  "notSet": "未設定",
101
- "securityTip": "より強力なセキュリティのため、アカウント作成後、アカウント設定から二要素認証(TOTP)を有効にしてください。",
93
+ "securityTip": "より強力なセキュリティのため、アカウント作成後、アカウント設定から生体認証を有効にしてください。",
102
94
  "legalReminder": "アカウントを作成することで、利用規約とプライバシーポリシーに同意したことになります。"
103
95
  }
104
96
  },
@@ -46,14 +46,6 @@
46
46
  "status": {
47
47
  "accountSwitched": "{{name}} 사용 중"
48
48
  },
49
- "totp": {
50
- "title": "2단계 인증 코드",
51
- "subtitle": "@{{username}}의 인증 앱에서 6자리 코드를 입력하세요",
52
- "invalidCode": "잘못된 코드입니다. 다시 시도해주세요.",
53
- "noAccess": "인증 앱에 액세스할 수 없나요?",
54
- "useBackupCode": "백업 코드 사용",
55
- "useRecoveryKey": "복구 키 사용"
56
- }
57
49
  },
58
50
  "signup": {
59
51
  "welcome": {
@@ -98,7 +90,7 @@
98
90
  "password": "비밀번호"
99
91
  },
100
92
  "notSet": "설정되지 않음",
101
- "securityTip": "더 강력한 보안을 위해 계정을 만든 후 계정 설정에서 2단계 인증(TOTP)을 활성화하세요.",
93
+ "securityTip": "더 강력한 보안을 위해 계정을 만든 후 계정 설정에서 생체 인증을 활성화하세요.",
102
94
  "legalReminder": "계정을 만들면 서비스 약관 및 개인정보 보호정책에 동의하는 것입니다."
103
95
  }
104
96
  },
@@ -46,14 +46,6 @@
46
46
  "status": {
47
47
  "accountSwitched": "Agora a usar {{name}}"
48
48
  },
49
- "totp": {
50
- "title": "Código de dois fatores",
51
- "subtitle": "Introduza o código de 6 dígitos da sua app autenticadora para @{{username}}",
52
- "invalidCode": "Código inválido. Por favor, tente novamente.",
53
- "noAccess": "Sem acesso ao seu autenticador?",
54
- "useBackupCode": "Usar código de backup",
55
- "useRecoveryKey": "Usar chave de recuperação"
56
- }
57
49
  },
58
50
  "signup": {
59
51
  "welcome": {
@@ -98,7 +90,7 @@
98
90
  "password": "Palavra-passe"
99
91
  },
100
92
  "notSet": "Não definido",
101
- "securityTip": "Para maior segurança, ative a Autenticação de Dois Fatores (TOTP) nas Definições da conta após criar a sua conta.",
93
+ "securityTip": "Para maior segurança, ative a autenticação biométrica nas Definições da conta após criar a sua conta.",
102
94
  "legalReminder": "Ao criar uma conta, concorda com os nossos Termos de Serviço e Política de Privacidade."
103
95
  }
104
96
  },
@@ -46,14 +46,6 @@
46
46
  "status": {
47
47
  "accountSwitched": "正在使用{{name}}"
48
48
  },
49
- "totp": {
50
- "title": "双因素验证码",
51
- "subtitle": "输入@{{username}}的验证器应用中的6位数字代码",
52
- "invalidCode": "无效的代码。请重试。",
53
- "noAccess": "无法访问您的验证器?",
54
- "useBackupCode": "使用备份代码",
55
- "useRecoveryKey": "使用恢复密钥"
56
- }
57
49
  },
58
50
  "signup": {
59
51
  "welcome": {
@@ -98,7 +90,7 @@
98
90
  "password": "密码"
99
91
  },
100
92
  "notSet": "未设置",
101
- "securityTip": "为了更强的安全性,创建账户后,请在账户设置中启用双因素身份验证(TOTP)。",
93
+ "securityTip": "为了更强的安全性,创建账户后,请在账户设置中启用生物识别身份验证。",
102
94
  "legalReminder": "创建账户即表示您同意我们的服务条款和隐私政策。"
103
95
  }
104
96
  },
@@ -1 +1 @@
1
- {"version":3,"names":["require","_crypto","_core","_OxyContext","_OxyProvider","_interopRequireDefault","_deviceManager","_languageUtils","_authStore","_assetStore","_useSessionSocket","_useAssets","_useFileDownloadUrl","_OxySignInButton","_ui","_apiUtils","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_errorUtils","_validationUtils","_loggerUtils","_asyncUtils","_hookUtils","e","__esModule","default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["require","_crypto","_core","_OxyContext","_OxyProvider","_interopRequireDefault","_deviceManager","_languageUtils","_authStore","_assetStore","_useSessionSocket","_useAssets","_useFileDownloadUrl","_OxySignInButton","_ui","_apiUtils","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_errorUtils","_validationUtils","_loggerUtils","_asyncUtils","_hookUtils","e","__esModule","default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -71,7 +71,12 @@ const OxyProvider = ({
71
71
  error,
72
72
  loginSuccess,
73
73
  loginFailure,
74
- logoutStore
74
+ logoutStore,
75
+ // Identity sync state and actions
76
+ isIdentitySyncedStore,
77
+ isSyncing,
78
+ setIdentitySynced,
79
+ setSyncing
75
80
  } = (0, _authStore.useAuthStore)((0, _shallow.useShallow)(state => ({
76
81
  user: state.user,
77
82
  isAuthenticated: state.isAuthenticated,
@@ -79,7 +84,12 @@ const OxyProvider = ({
79
84
  error: state.error,
80
85
  loginSuccess: state.loginSuccess,
81
86
  loginFailure: state.loginFailure,
82
- logoutStore: state.logout
87
+ logoutStore: state.logout,
88
+ // Identity sync state and actions
89
+ isIdentitySyncedStore: state.isIdentitySynced,
90
+ isSyncing: state.isSyncing,
91
+ setIdentitySynced: state.setIdentitySynced,
92
+ setSyncing: state.setSyncing
83
93
  })));
84
94
  const [tokenReady, setTokenReady] = (0, _react.useState)(true);
85
95
  const initializedRef = (0, _react.useRef)(false);
@@ -141,7 +151,9 @@ const OxyProvider = ({
141
151
  logout,
142
152
  logoutAll,
143
153
  hasIdentity,
144
- getPublicKey
154
+ getPublicKey,
155
+ isIdentitySynced,
156
+ syncIdentity
145
157
  } = (0, _useAuthOperations.useAuthOperations)({
146
158
  oxyServices,
147
159
  storage,
@@ -159,6 +171,8 @@ const OxyProvider = ({
159
171
  loginFailure,
160
172
  logoutStore,
161
173
  setAuthState,
174
+ setIdentitySynced,
175
+ setSyncing,
162
176
  logger
163
177
  });
164
178
  const {
@@ -287,6 +301,12 @@ const OxyProvider = ({
287
301
  signIn,
288
302
  hasIdentity,
289
303
  getPublicKey,
304
+ isIdentitySynced,
305
+ syncIdentity,
306
+ identitySyncState: {
307
+ isSynced: isIdentitySyncedStore ?? true,
308
+ isSyncing: isSyncing ?? false
309
+ },
290
310
  logout,
291
311
  logoutAll,
292
312
  switchSession: switchSessionForContext,
@@ -299,7 +319,7 @@ const OxyProvider = ({
299
319
  oxyServices,
300
320
  useFollow: useFollowHook,
301
321
  showBottomSheet: showBottomSheetForContext
302
- }), [activeSessionId, createIdentity, importIdentity, signIn, hasIdentity, getPublicKey, currentLanguage, currentLanguageMetadata, currentLanguageName, currentNativeLanguageName, error, getDeviceSessions, isAuthenticated, isLoading, logout, logoutAll, logoutAllDeviceSessions, oxyServices, refreshSessionsWithUser, sessions, setLanguage, switchSessionForContext, tokenReady, updateDeviceName, useFollowHook, user, showBottomSheetForContext]);
322
+ }), [activeSessionId, createIdentity, importIdentity, signIn, hasIdentity, getPublicKey, isIdentitySynced, syncIdentity, isIdentitySyncedStore, isSyncing, currentLanguage, currentLanguageMetadata, currentLanguageName, currentNativeLanguageName, error, getDeviceSessions, isAuthenticated, isLoading, logout, logoutAll, logoutAllDeviceSessions, oxyServices, refreshSessionsWithUser, sessions, setLanguage, switchSessionForContext, tokenReady, updateDeviceName, useFollowHook, user, showBottomSheetForContext]);
303
323
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(OxyContext.Provider, {
304
324
  value: contextValue,
305
325
  children: children
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_core","_sonner","_authStore","_shallow","_useSessionSocket","_useStorage","_useLanguageManagement","_useSessionManagement","_useAuthOperations","_useDeviceManagement","_storageHelpers","_errorHandlers","_bottomSheetManager","_jsxRuntime","OxyContext","createContext","cachedUseFollowHook","loadUseFollowHook","useFollow","error","__DEV__","console","warn","fallback","Error","OxyProvider","children","oxyServices","providedOxyServices","baseURL","storageKeyPrefix","onAuthStateChange","onError","oxyServicesRef","useRef","current","OxyServices","user","isAuthenticated","isLoading","loginSuccess","loginFailure","logoutStore","useAuthStore","useShallow","state","logout","tokenReady","setTokenReady","useState","initializedRef","setAuthState","setState","logger","useCallback","message","err","storageKeys","useMemo","getStorageKeys","storage","useStorage","currentLanguage","metadata","currentLanguageMetadata","languageName","currentLanguageName","nativeLanguageName","currentNativeLanguageName","setLanguage","applyLanguagePreference","useLanguageManagement","languageKey","language","sessions","activeSessionId","setActiveSessionId","updateSessions","switchSession","refreshSessions","clearSessionState","saveActiveSessionId","trackRemovedSession","useSessionManagement","setAuthError","createIdentity","importIdentity","signIn","logoutAll","hasIdentity","getPublicKey","useAuthOperations","getDeviceSessions","logoutAllDeviceSessions","updateDeviceName","useDeviceManagement","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","merge","switchError","isInvalidSessionError","removeItem","filter","session","useEffect","activeSession","find","undefined","currentDeviceId","refreshSessionsWithUser","handleSessionRemoved","handleRemoteSignOut","toast","info","catch","remoteError","useSessionSocket","getBaseURL","onRemoteSignOut","onSessionRemoved","switchSessionForContext","showBottomSheetForContext","screenOrConfig","globalShowBottomSheet","contextValue","isTokenReady","removeSession","showBottomSheet","jsx","Provider","value","exports","OxyContextProvider","useOxy","context","useContext","_default","default"],"sourceRoot":"../../../../src","sources":["ui/context/OxyContext.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_core","_sonner","_authStore","_shallow","_useSessionSocket","_useStorage","_useLanguageManagement","_useSessionManagement","_useAuthOperations","_useDeviceManagement","_storageHelpers","_errorHandlers","_bottomSheetManager","_jsxRuntime","OxyContext","createContext","cachedUseFollowHook","loadUseFollowHook","useFollow","error","__DEV__","console","warn","fallback","Error","OxyProvider","children","oxyServices","providedOxyServices","baseURL","storageKeyPrefix","onAuthStateChange","onError","oxyServicesRef","useRef","current","OxyServices","user","isAuthenticated","isLoading","loginSuccess","loginFailure","logoutStore","isIdentitySyncedStore","isSyncing","setIdentitySynced","setSyncing","useAuthStore","useShallow","state","logout","isIdentitySynced","tokenReady","setTokenReady","useState","initializedRef","setAuthState","setState","logger","useCallback","message","err","storageKeys","useMemo","getStorageKeys","storage","useStorage","currentLanguage","metadata","currentLanguageMetadata","languageName","currentLanguageName","nativeLanguageName","currentNativeLanguageName","setLanguage","applyLanguagePreference","useLanguageManagement","languageKey","language","sessions","activeSessionId","setActiveSessionId","updateSessions","switchSession","refreshSessions","clearSessionState","saveActiveSessionId","trackRemovedSession","useSessionManagement","setAuthError","createIdentity","importIdentity","signIn","logoutAll","hasIdentity","getPublicKey","syncIdentity","useAuthOperations","getDeviceSessions","logoutAllDeviceSessions","updateDeviceName","useDeviceManagement","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","merge","switchError","isInvalidSessionError","removeItem","filter","session","useEffect","activeSession","find","undefined","currentDeviceId","refreshSessionsWithUser","handleSessionRemoved","handleRemoteSignOut","toast","info","catch","remoteError","useSessionSocket","getBaseURL","onRemoteSignOut","onSessionRemoved","switchSessionForContext","showBottomSheetForContext","screenOrConfig","globalShowBottomSheet","contextValue","isTokenReady","identitySyncState","isSynced","removeSession","showBottomSheet","jsx","Provider","value","exports","OxyContextProvider","useOxy","context","useContext","_default","default"],"sourceRoot":"../../../../src","sources":["ui/context/OxyContext.tsx"],"mappings":"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","ignoreList":[]}
@@ -35,45 +35,138 @@ const useAuthOperations = ({
35
35
  loginFailure,
36
36
  logoutStore,
37
37
  setAuthState,
38
+ setIdentitySynced,
39
+ setSyncing,
38
40
  logger
39
41
  }) => {
40
42
  /**
41
- * Create a new identity with recovery phrase
43
+ * Internal function to perform challenge-response sign in
42
44
  */
43
- const createIdentity = (0, _react.useCallback)(async (username, email) => {
45
+ const performSignIn = (0, _react.useCallback)(async publicKey => {
46
+ const deviceFingerprintObj = _deviceManager.DeviceManager.getDeviceFingerprint();
47
+ const deviceFingerprint = JSON.stringify(deviceFingerprintObj);
48
+ const deviceInfo = await _deviceManager.DeviceManager.getDeviceInfo();
49
+ const deviceName = deviceInfo.deviceName || _deviceManager.DeviceManager.getDefaultDeviceName();
50
+
51
+ // Request challenge
52
+ const {
53
+ challenge
54
+ } = await oxyServices.requestChallenge(publicKey);
55
+
56
+ // Note: Biometric authentication check should be handled by the app layer
57
+ // (e.g., accounts app) before calling signIn. The biometric preference is stored
58
+ // in local storage as 'oxy_biometric_enabled' and can be checked there.
59
+
60
+ // Sign the challenge
61
+ const {
62
+ challenge: signature,
63
+ timestamp
64
+ } = await _crypto.SignatureService.signChallenge(challenge);
65
+
66
+ // Verify and create session
67
+ const sessionResponse = await oxyServices.verifyChallenge(publicKey, challenge, signature, timestamp, deviceName, deviceFingerprint);
68
+
69
+ // Get token for the session
70
+ await oxyServices.getTokenBySession(sessionResponse.sessionId);
71
+
72
+ // Get full user data
73
+ const fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
74
+ await applyLanguagePreference(fullUser);
75
+ loginSuccess(fullUser);
76
+
77
+ // Fetch device sessions
78
+ let allDeviceSessions = [];
79
+ try {
80
+ allDeviceSessions = await (0, _sessionHelpers.fetchSessionsWithFallback)(oxyServices, sessionResponse.sessionId, {
81
+ fallbackDeviceId: sessionResponse.deviceId,
82
+ fallbackUserId: fullUser.id,
83
+ logger
84
+ });
85
+ } catch (error) {
86
+ if (__DEV__) {
87
+ console.warn('Failed to fetch device sessions after login:', error);
88
+ }
89
+ }
90
+
91
+ // Check for existing session for same user
92
+ const existingSession = allDeviceSessions.find(session => session.userId?.toString() === fullUser.id?.toString() && session.sessionId !== sessionResponse.sessionId);
93
+ if (existingSession) {
94
+ // Logout duplicate session
95
+ try {
96
+ await oxyServices.logoutSession(sessionResponse.sessionId, sessionResponse.sessionId);
97
+ } catch (logoutError) {
98
+ if (__DEV__) {
99
+ console.warn('Failed to logout duplicate session:', logoutError);
100
+ }
101
+ }
102
+ await switchSession(existingSession.sessionId);
103
+ updateSessions(allDeviceSessions.filter(session => session.sessionId !== sessionResponse.sessionId), {
104
+ merge: false
105
+ });
106
+ onAuthStateChange?.(fullUser);
107
+ return fullUser;
108
+ }
109
+ setActiveSessionId(sessionResponse.sessionId);
110
+ await saveActiveSessionId(sessionResponse.sessionId);
111
+ updateSessions(allDeviceSessions, {
112
+ merge: true
113
+ });
114
+ onAuthStateChange?.(fullUser);
115
+ return fullUser;
116
+ }, [applyLanguagePreference, logger, loginSuccess, onAuthStateChange, oxyServices, saveActiveSessionId, setActiveSessionId, switchSession, updateSessions]);
117
+
118
+ /**
119
+ * Create a new identity with recovery phrase (offline-first)
120
+ * Identity is purely cryptographic - no username or email required
121
+ */
122
+ const createIdentity = (0, _react.useCallback)(async () => {
44
123
  if (!storage) throw new Error('Storage not initialized');
45
124
  setAuthState({
46
125
  isLoading: true,
47
126
  error: null
48
127
  });
49
128
  try {
50
- // Generate new identity with recovery phrase
129
+ // Generate new identity with recovery phrase (works offline)
51
130
  const {
52
131
  phrase,
53
132
  words,
54
133
  publicKey
55
134
  } = await _crypto.RecoveryPhraseService.generateIdentityWithRecovery();
56
135
 
57
- // Create registration signature
58
- const {
59
- signature,
60
- timestamp
61
- } = await _crypto.SignatureService.createRegistrationSignature(username, email);
136
+ // Mark as not synced
137
+ await storage.setItem('oxy_identity_synced', 'false');
138
+ setIdentitySynced(false);
62
139
 
63
- // Register with server
64
- const {
65
- user
66
- } = await oxyServices.register(publicKey, username, signature, timestamp, email);
140
+ // Try to sync with server (will succeed if online)
141
+ try {
142
+ const {
143
+ signature,
144
+ timestamp
145
+ } = await _crypto.SignatureService.createRegistrationSignature();
146
+ await oxyServices.register(publicKey, signature, timestamp);
67
147
 
68
- // Now sign in to create a session
69
- const fullUser = await performSignIn(publicKey);
70
- return {
71
- user: fullUser,
72
- recoveryPhrase: words
73
- };
148
+ // Mark as synced (Zustand store + storage)
149
+ await storage.setItem('oxy_identity_synced', 'true');
150
+ setIdentitySynced(true);
151
+ return {
152
+ recoveryPhrase: words,
153
+ synced: true
154
+ };
155
+ } catch (syncError) {
156
+ // Offline or server error - identity is created locally but not synced
157
+ if (__DEV__) {
158
+ console.log('[Auth] Identity created locally, will sync when online:', syncError);
159
+ }
160
+ return {
161
+ recoveryPhrase: words,
162
+ synced: false
163
+ };
164
+ }
74
165
  } catch (error) {
75
- // Clean up identity if registration failed
166
+ // Clean up identity if generation failed
76
167
  await _crypto.KeyManager.deleteIdentity().catch(() => {});
168
+ await storage.removeItem('oxy_identity_synced').catch(() => {});
169
+ setIdentitySynced(true);
77
170
  const message = (0, _errorHandlers.handleAuthError)(error, {
78
171
  defaultMessage: 'Failed to create identity',
79
172
  code: REGISTER_ERROR_CODE,
@@ -90,43 +183,65 @@ const useAuthOperations = ({
90
183
  isLoading: false
91
184
  });
92
185
  }
93
- }, [oxyServices, storage, setAuthState, loginFailure, onError, logger]);
186
+ }, [oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced]);
94
187
 
95
188
  /**
96
- * Import identity from recovery phrase
189
+ * Check if identity is synced with server (reads from storage for persistence)
97
190
  */
98
- const importIdentity = (0, _react.useCallback)(async (phrase, username, email) => {
191
+ const isIdentitySyncedFn = (0, _react.useCallback)(async () => {
192
+ if (!storage) return true;
193
+ const synced = await storage.getItem('oxy_identity_synced');
194
+ const isSynced = synced !== 'false';
195
+ setIdentitySynced(isSynced);
196
+ return isSynced;
197
+ }, [storage, setIdentitySynced]);
198
+
199
+ /**
200
+ * Sync local identity with server (call when online)
201
+ */
202
+ const syncIdentity = (0, _react.useCallback)(async () => {
99
203
  if (!storage) throw new Error('Storage not initialized');
100
204
  setAuthState({
101
205
  isLoading: true,
102
206
  error: null
103
207
  });
208
+ setSyncing(true);
104
209
  try {
105
- // Restore identity from phrase
106
- const publicKey = await _crypto.RecoveryPhraseService.restoreFromPhrase(phrase);
210
+ const publicKey = await _crypto.KeyManager.getPublicKey();
211
+ if (!publicKey) {
212
+ throw new Error('No identity found on this device');
213
+ }
107
214
 
108
- // Check if this identity is already registered
215
+ // Check if already synced
216
+ const alreadySynced = await storage.getItem('oxy_identity_synced');
217
+ if (alreadySynced === 'true') {
218
+ // Already synced, just sign in
219
+ setIdentitySynced(true);
220
+ return await performSignIn(publicKey);
221
+ }
222
+
223
+ // Check if already registered on server
109
224
  const {
110
225
  registered
111
226
  } = await oxyServices.checkPublicKeyRegistered(publicKey);
112
- if (registered) {
113
- // Identity exists, just sign in
114
- return await performSignIn(publicKey);
115
- } else {
116
- // Need to register this identity
117
- if (!username) {
118
- throw new Error('Username is required for new registration');
119
- }
227
+ if (!registered) {
228
+ // Register with server (identity is just the publicKey)
120
229
  const {
121
230
  signature,
122
231
  timestamp
123
- } = await _crypto.SignatureService.createRegistrationSignature(username, email);
124
- await oxyServices.register(publicKey, username, signature, timestamp, email);
125
- return await performSignIn(publicKey);
232
+ } = await _crypto.SignatureService.createRegistrationSignature();
233
+ await oxyServices.register(publicKey, signature, timestamp);
126
234
  }
235
+
236
+ // Mark as synced (Zustand store + storage)
237
+ await storage.setItem('oxy_identity_synced', 'true');
238
+ setIdentitySynced(true);
239
+
240
+ // Sign in
241
+ return await performSignIn(publicKey);
127
242
  } catch (error) {
128
243
  const message = (0, _errorHandlers.handleAuthError)(error, {
129
- defaultMessage: 'Failed to import identity',
244
+ defaultMessage: 'Failed to sync identity',
130
245
  code: REGISTER_ERROR_CODE,
131
246
  onError,
132
247
  setAuthError: msg => setAuthState({
@@ -140,80 +255,80 @@ const useAuthOperations = ({
140
255
  setAuthState({
141
256
  isLoading: false
142
257
  });
258
+ setSyncing(false);
143
259
  }
144
- }, [oxyServices, storage, setAuthState, loginFailure, onError, logger]);
260
+ }, [oxyServices, storage, setAuthState, performSignIn, loginFailure, onError, logger, setSyncing, setIdentitySynced]);
145
261
 
146
262
  /**
147
- * Internal function to perform challenge-response sign in
263
+ * Import identity from recovery phrase (offline-first)
148
264
  */
149
- const performSignIn = (0, _react.useCallback)(async publicKey => {
150
- const deviceFingerprintObj = _deviceManager.DeviceManager.getDeviceFingerprint();
151
- const deviceFingerprint = JSON.stringify(deviceFingerprintObj);
152
- const deviceInfo = await _deviceManager.DeviceManager.getDeviceInfo();
153
- const deviceName = deviceInfo.deviceName || _deviceManager.DeviceManager.getDefaultDeviceName();
154
-
155
- // Request challenge
156
- const {
157
- challenge
158
- } = await oxyServices.requestChallenge(publicKey);
159
-
160
- // Sign the challenge
161
- const {
162
- challenge: signature,
163
- timestamp
164
- } = await _crypto.SignatureService.signChallenge(challenge);
165
-
166
- // Verify and create session
167
- const sessionResponse = await oxyServices.verifyChallenge(publicKey, challenge, signature, timestamp, deviceName, deviceFingerprint);
168
-
169
- // Get token for the session
170
- await oxyServices.getTokenBySession(sessionResponse.sessionId);
171
-
172
- // Get full user data
173
- const fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
174
- await applyLanguagePreference(fullUser);
175
- loginSuccess(fullUser);
176
-
177
- // Fetch device sessions
178
- let allDeviceSessions = [];
265
+ const importIdentity = (0, _react.useCallback)(async phrase => {
266
+ if (!storage) throw new Error('Storage not initialized');
267
+ setAuthState({
268
+ isLoading: true,
269
+ error: null
270
+ });
179
271
  try {
180
- allDeviceSessions = await (0, _sessionHelpers.fetchSessionsWithFallback)(oxyServices, sessionResponse.sessionId, {
181
- fallbackDeviceId: sessionResponse.deviceId,
182
- fallbackUserId: fullUser.id,
183
- logger
184
- });
185
- } catch (error) {
186
- if (__DEV__) {
187
- console.warn('Failed to fetch device sessions after login:', error);
188
- }
189
- }
272
+ // Restore identity from phrase (works offline)
273
+ const publicKey = await _crypto.RecoveryPhraseService.restoreFromPhrase(phrase);
190
274
 
191
- // Check for existing session for same user
192
- const existingSession = allDeviceSessions.find(session => session.userId?.toString() === fullUser.id?.toString() && session.sessionId !== sessionResponse.sessionId);
193
- if (existingSession) {
194
- // Logout duplicate session
275
+ // Mark as not synced
276
+ await storage.setItem('oxy_identity_synced', 'false');
277
+ setIdentitySynced(false);
278
+
279
+ // Try to sync with server
195
280
  try {
196
- await oxyServices.logoutSession(sessionResponse.sessionId, sessionResponse.sessionId);
197
- } catch (logoutError) {
281
+ // Check if this identity is already registered
282
+ const {
283
+ registered
284
+ } = await oxyServices.checkPublicKeyRegistered(publicKey);
285
+ if (registered) {
286
+ // Identity exists, mark as synced
287
+ await storage.setItem('oxy_identity_synced', 'true');
288
+ setIdentitySynced(true);
289
+ return {
290
+ synced: true
291
+ };
292
+ } else {
293
+ // Need to register this identity (identity is just the publicKey)
294
+ const {
295
+ signature,
296
+ timestamp
297
+ } = await _crypto.SignatureService.createRegistrationSignature();
298
+ await oxyServices.register(publicKey, signature, timestamp);
299
+ await storage.setItem('oxy_identity_synced', 'true');
300
+ setIdentitySynced(true);
301
+ return {
302
+ synced: true
303
+ };
304
+ }
305
+ } catch (syncError) {
306
+ // Offline - identity restored locally but not synced
198
307
  if (__DEV__) {
199
- console.warn('Failed to logout duplicate session:', logoutError);
308
+ console.log('[Auth] Identity imported locally, will sync when online:', syncError);
200
309
  }
310
+ return {
311
+ synced: false
312
+ };
201
313
  }
202
- await switchSession(existingSession.sessionId);
203
- updateSessions(allDeviceSessions.filter(session => session.sessionId !== sessionResponse.sessionId), {
204
- merge: false
314
+ } catch (error) {
315
+ const message = (0, _errorHandlers.handleAuthError)(error, {
316
+ defaultMessage: 'Failed to import identity',
317
+ code: REGISTER_ERROR_CODE,
318
+ onError,
319
+ setAuthError: msg => setAuthState({
320
+ error: msg
321
+ }),
322
+ logger
323
+ });
324
+ loginFailure(message);
325
+ throw error;
326
+ } finally {
327
+ setAuthState({
328
+ isLoading: false
205
329
  });
206
- onAuthStateChange?.(fullUser);
207
- return fullUser;
208
330
  }
209
- setActiveSessionId(sessionResponse.sessionId);
210
- await saveActiveSessionId(sessionResponse.sessionId);
211
- updateSessions(allDeviceSessions, {
212
- merge: true
213
- });
214
- onAuthStateChange?.(fullUser);
215
- return fullUser;
216
- }, [applyLanguagePreference, logger, loginSuccess, onAuthStateChange, oxyServices, saveActiveSessionId, setActiveSessionId, switchSession, updateSessions]);
331
+ }, [oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced]);
217
332
 
218
333
  /**
219
334
  * Sign in with existing identity on device
@@ -342,7 +457,9 @@ const useAuthOperations = ({
342
457
  logout,
343
458
  logoutAll,
344
459
  hasIdentity,
345
- getPublicKey
460
+ getPublicKey,
461
+ isIdentitySynced: isIdentitySyncedFn,
462
+ syncIdentity
346
463
  };
347
464
  };
348
465
  exports.useAuthOperations = useAuthOperations;