@oxyhq/services 26.0.1 → 26.0.3
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/README.md +2 -2
- package/android/src/main/java/so/oxy/identity/OxyIdentityStore.kt +21 -127
- package/android/src/main/java/so/oxy/session/OxyBackgroundSession.kt +184 -0
- package/android/src/main/java/so/oxy/session/OxyBackgroundSessionApi.kt +162 -0
- package/android/src/main/java/so/oxy/session/OxyBackgroundSessionModule.kt +116 -0
- package/android/src/main/java/so/oxy/session/OxyBackgroundSessionStore.kt +179 -0
- package/android/src/main/java/so/oxy/session/OxyBackgroundToken.kt +61 -0
- package/android/src/main/java/so/oxy/storage/OxyEncryptedPrefs.kt +241 -0
- package/expo-module.config.json +4 -1
- package/lib/commonjs/index.js +18 -49
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/notifications/deviceNotifications.js +63 -0
- package/lib/commonjs/notifications/deviceNotifications.js.map +1 -1
- package/lib/commonjs/ui/boot/runProviderColdBoot.js +20 -64
- package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
- package/lib/commonjs/ui/components/AvatarCameraBadge.js +2 -2
- package/lib/commonjs/ui/components/AvatarCameraBadge.js.map +1 -1
- package/lib/commonjs/ui/components/FollowButton.js +4 -4
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAccountDialogScreen.js +13 -1
- package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAuthChooser.js +29 -24
- package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +8 -7
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileButton.js +20 -26
- package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +68 -58
- package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/useUsernameAvailability.js +2 -2
- package/lib/commonjs/ui/components/authChooser/useUsernameAvailability.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +2 -2
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/commonjs/ui/components/internal/PinInput.js +3 -1
- package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -1
- package/lib/commonjs/ui/components/logo/LogoText.js +4 -4
- package/lib/commonjs/ui/components/logo/LogoText.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +2 -2
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +2 -2
- package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/commonjs/ui/components/styles/shadow.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +32 -46
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/commitSessionFlow.js +3 -43
- package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +15 -2
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/context/useOxyAccountGraph.js +3 -4
- package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +5 -5
- package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +11 -11
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +9 -9
- package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js +3 -2
- package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/userCache.js +17 -17
- package/lib/commonjs/ui/hooks/queries/userCache.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAssets.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAsyncAction.js +7 -7
- package/lib/commonjs/ui/hooks/useAsyncAction.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js +8 -4
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAvatarPicker.js +5 -5
- package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/commonjs/ui/hooks/useOnlineStatus.js +3 -2
- package/lib/commonjs/ui/hooks/useOnlineStatus.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionManagement.js +0 -2
- package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSettingToggle.js +4 -4
- package/lib/commonjs/ui/hooks/useSettingToggle.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSurfaceHeader.js +68 -11
- package/lib/commonjs/ui/hooks/useSurfaceHeader.js.map +1 -1
- package/lib/commonjs/ui/navigation/accountDialogManager.js +2 -0
- package/lib/commonjs/ui/navigation/accountDialogManager.js.map +1 -1
- package/lib/commonjs/ui/oauth/browserAuthTransport.js +66 -64
- package/lib/commonjs/ui/oauth/browserAuthTransport.js.map +1 -1
- package/lib/commonjs/ui/oauth/oauthPopup.js +47 -0
- package/lib/commonjs/ui/oauth/oauthPopup.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountMembersScreen.js +10 -10
- package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +41 -19
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js +4 -4
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AppInfoScreen.js +9 -9
- package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AvatarCropScreen.js +3 -3
- package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ChangeAvatarScreen.js +6 -7
- package/lib/commonjs/ui/screens/ChangeAvatarScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +4 -4
- package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/CreateAccountScreen.js +46 -14
- package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +5 -5
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileScreen.js +2 -3
- package/lib/commonjs/ui/screens/EditProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FAQScreen.js +2 -2
- package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +90 -89
- package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +20 -20
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FollowersListScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FollowingListScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HelpSupportScreen.js +7 -7
- package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HistoryViewScreen.js +9 -34
- package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +3 -3
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +3 -3
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ManageAccountScreen.js +15 -15
- package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +19 -19
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +15 -15
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +17 -7
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +2 -2
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserListScreen.js +13 -7
- package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +5 -6
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +1 -4
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js +34 -24
- package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
- package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +1 -1
- package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +3 -4
- package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +1 -1
- package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
- package/lib/commonjs/ui/session/backgroundSession.js +258 -0
- package/lib/commonjs/ui/session/backgroundSession.js.map +1 -0
- package/lib/commonjs/ui/session/index.js +7 -0
- package/lib/commonjs/ui/session/index.js.map +1 -1
- package/lib/commonjs/ui/session/useBackgroundSessionSync.js +81 -0
- package/lib/commonjs/ui/session/useBackgroundSessionSync.js.map +1 -0
- package/lib/commonjs/ui/utils/fileManagement.js +24 -24
- package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
- package/lib/commonjs/ui/utils/netConnectivity.js +28 -0
- package/lib/commonjs/ui/utils/netConnectivity.js.map +1 -0
- package/lib/commonjs/ui/utils/oauthReturn.js +19 -30
- package/lib/commonjs/ui/utils/oauthReturn.js.map +1 -1
- package/lib/commonjs/ui/utils/userUtils.js +27 -28
- package/lib/commonjs/ui/utils/userUtils.js.map +1 -1
- package/lib/module/index.js +20 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/notifications/deviceNotifications.js +62 -0
- package/lib/module/notifications/deviceNotifications.js.map +1 -1
- package/lib/module/ui/boot/runProviderColdBoot.js +21 -65
- package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
- package/lib/module/ui/components/AvatarCameraBadge.js +1 -1
- package/lib/module/ui/components/AvatarCameraBadge.js.map +1 -1
- package/lib/module/ui/components/FollowButton.js +1 -1
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/components/OxyAccountDialogScreen.js +13 -1
- package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -1
- package/lib/module/ui/components/OxyAuthChooser.js +25 -20
- package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +7 -6
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/ProfileButton.js +12 -18
- package/lib/module/ui/components/ProfileButton.js.map +1 -1
- package/lib/module/ui/components/authChooser/AccountsMenuView.js +68 -58
- package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
- package/lib/module/ui/components/authChooser/types.js.map +1 -1
- package/lib/module/ui/components/authChooser/useUsernameAvailability.js +1 -1
- package/lib/module/ui/components/authChooser/useUsernameAvailability.js.map +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/module/ui/components/internal/PinInput.js +3 -1
- package/lib/module/ui/components/internal/PinInput.js.map +1 -1
- package/lib/module/ui/components/logo/LogoText.js +4 -4
- package/lib/module/ui/components/logo/LogoText.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentDetailsStep.js +1 -1
- package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentSummaryStep.js +2 -2
- package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/module/ui/components/styles/shadow.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +35 -49
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/commitSessionFlow.js +3 -42
- package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +15 -2
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/context/useOxyAccountGraph.js +3 -4
- package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/module/ui/hooks/mutations/mutationFactory.js +1 -1
- package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useServicesMutations.js +1 -1
- package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
- package/lib/module/ui/hooks/queries/usePaymentQueries.js +3 -2
- package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
- package/lib/module/ui/hooks/queries/userCache.js +17 -17
- package/lib/module/ui/hooks/queries/userCache.js.map +1 -1
- package/lib/module/ui/hooks/useAssets.js.map +1 -1
- package/lib/module/ui/hooks/useAsyncAction.js +1 -1
- package/lib/module/ui/hooks/useAsyncAction.js.map +1 -1
- package/lib/module/ui/hooks/useAuth.js +8 -4
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/hooks/useAvatarPicker.js +1 -1
- package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/module/ui/hooks/useOnlineStatus.js +3 -2
- package/lib/module/ui/hooks/useOnlineStatus.js.map +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js +0 -2
- package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/module/ui/hooks/useSettingToggle.js +1 -1
- package/lib/module/ui/hooks/useSettingToggle.js.map +1 -1
- package/lib/module/ui/hooks/useSurfaceHeader.js +68 -11
- package/lib/module/ui/hooks/useSurfaceHeader.js.map +1 -1
- package/lib/module/ui/navigation/accountDialogManager.js +2 -0
- package/lib/module/ui/navigation/accountDialogManager.js.map +1 -1
- package/lib/module/ui/oauth/browserAuthTransport.js +66 -64
- package/lib/module/ui/oauth/browserAuthTransport.js.map +1 -1
- package/lib/module/ui/oauth/oauthPopup.js +48 -1
- package/lib/module/ui/oauth/oauthPopup.js.map +1 -1
- package/lib/module/ui/screens/AccountMembersScreen.js +1 -1
- package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +37 -15
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/module/ui/screens/AvatarCropScreen.js +1 -1
- package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
- package/lib/module/ui/screens/ChangeAvatarScreen.js +4 -5
- package/lib/module/ui/screens/ChangeAvatarScreen.js.map +1 -1
- package/lib/module/ui/screens/ConnectedAppsScreen.js +2 -2
- package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
- package/lib/module/ui/screens/CreateAccountScreen.js +45 -13
- package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js +4 -4
- package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileScreen.js +3 -4
- package/lib/module/ui/screens/EditProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/FAQScreen.js +1 -1
- package/lib/module/ui/screens/FAQScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +94 -91
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/FollowersListScreen.js.map +1 -1
- package/lib/module/ui/screens/FollowingListScreen.js.map +1 -1
- package/lib/module/ui/screens/HelpSupportScreen.js +1 -1
- package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js +5 -30
- package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/module/ui/screens/ManageAccountScreen.js +3 -3
- package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +4 -4
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +11 -11
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +18 -8
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/module/ui/screens/UserListScreen.js +14 -8
- package/lib/module/ui/screens/UserListScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +5 -6
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +1 -4
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js +15 -5
- package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
- package/lib/module/ui/screens/trust/TrustCenterScreen.js +1 -1
- package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +4 -5
- package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
- package/lib/module/ui/screens/trust/TrustRewardsScreen.js +1 -1
- package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
- package/lib/module/ui/session/backgroundSession.js +252 -0
- package/lib/module/ui/session/backgroundSession.js.map +1 -0
- package/lib/module/ui/session/index.js +1 -0
- package/lib/module/ui/session/index.js.map +1 -1
- package/lib/module/ui/session/useBackgroundSessionSync.js +76 -0
- package/lib/module/ui/session/useBackgroundSessionSync.js.map +1 -0
- package/lib/module/ui/utils/fileManagement.js +25 -25
- package/lib/module/ui/utils/fileManagement.js.map +1 -1
- package/lib/module/ui/utils/netConnectivity.js +23 -0
- package/lib/module/ui/utils/netConnectivity.js.map +1 -0
- package/lib/module/ui/utils/oauthReturn.js +20 -30
- package/lib/module/ui/utils/oauthReturn.js.map +1 -1
- package/lib/module/ui/utils/userUtils.js +27 -28
- package/lib/module/ui/utils/userUtils.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +1 -2
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts +51 -0
- package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts +11 -30
- package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/AvatarCameraBadge.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +7 -0
- package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts +2 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts +3 -0
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts +6 -0
- package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/internal/PinInput.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/types.d.ts +6 -6
- package/lib/typescript/commonjs/ui/components/payment/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts +0 -40
- package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +11 -2
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +26 -7
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +0 -1
- package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/paymentTypes.d.ts +3 -2
- package/lib/typescript/commonjs/ui/hooks/queries/paymentTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/usePaymentQueries.d.ts +3 -2
- package/lib/typescript/commonjs/ui/hooks/queries/usePaymentQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts +2 -2
- package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts +2 -2
- package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +10 -6
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts +3 -2
- package/lib/typescript/commonjs/ui/hooks/useOnlineStatus.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts +7 -2
- package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts +8 -0
- package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/oauth/browserAuthTransport.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/oauth/oauthPopup.d.ts +6 -0
- package/lib/typescript/commonjs/ui/oauth/oauthPopup.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/CreateAccountScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/EditProfileScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts +2 -2
- package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts +3 -0
- package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts +3 -0
- package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts +7 -0
- package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/trust/trustTier.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts +42 -0
- package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/session/index.d.ts +1 -0
- package/lib/typescript/commonjs/ui/session/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/useBackgroundSessionSync.d.ts +23 -0
- package/lib/typescript/commonjs/ui/session/useBackgroundSessionSync.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/types/navigation.d.ts +27 -19
- package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +5 -5
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts +17 -0
- package/lib/typescript/commonjs/ui/utils/netConnectivity.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts +15 -12
- package/lib/typescript/commonjs/ui/utils/oauthReturn.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/userUtils.d.ts +7 -14
- package/lib/typescript/commonjs/ui/utils/userUtils.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +1 -2
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/notifications/deviceNotifications.d.ts +51 -0
- package/lib/typescript/module/notifications/deviceNotifications.d.ts.map +1 -1
- package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts +11 -30
- package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/AvatarCameraBadge.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +7 -0
- package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts +2 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileButton.d.ts +3 -0
- package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/authChooser/types.d.ts +6 -0
- package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts +1 -1
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/internal/PinInput.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/types.d.ts +6 -6
- package/lib/typescript/module/ui/components/payment/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/commitSessionFlow.d.ts +0 -40
- package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +11 -2
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +26 -7
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +0 -1
- package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/paymentTypes.d.ts +3 -2
- package/lib/typescript/module/ui/hooks/queries/paymentTypes.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/usePaymentQueries.d.ts +3 -2
- package/lib/typescript/module/ui/hooks/queries/usePaymentQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/userCache.d.ts +2 -2
- package/lib/typescript/module/ui/hooks/queries/userCache.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAssets.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useAssets.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts +2 -2
- package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts +10 -6
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts +3 -2
- package/lib/typescript/module/ui/hooks/useOnlineStatus.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts +7 -2
- package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts +8 -0
- package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts.map +1 -1
- package/lib/typescript/module/ui/oauth/browserAuthTransport.d.ts.map +1 -1
- package/lib/typescript/module/ui/oauth/oauthPopup.d.ts +6 -0
- package/lib/typescript/module/ui/oauth/oauthPopup.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/CreateAccountScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/EditProfileScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts +2 -2
- package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts +3 -0
- package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts +3 -0
- package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/UserListScreen.d.ts +7 -0
- package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/trust/trustTier.d.ts +1 -1
- package/lib/typescript/module/ui/screens/trust/trustTier.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/backgroundSession.d.ts +42 -0
- package/lib/typescript/module/ui/session/backgroundSession.d.ts.map +1 -0
- package/lib/typescript/module/ui/session/index.d.ts +1 -0
- package/lib/typescript/module/ui/session/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/useBackgroundSessionSync.d.ts +23 -0
- package/lib/typescript/module/ui/session/useBackgroundSessionSync.d.ts.map +1 -0
- package/lib/typescript/module/ui/types/navigation.d.ts +27 -19
- package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/fileManagement.d.ts +5 -5
- package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/netConnectivity.d.ts +17 -0
- package/lib/typescript/module/ui/utils/netConnectivity.d.ts.map +1 -0
- package/lib/typescript/module/ui/utils/oauthReturn.d.ts +15 -12
- package/lib/typescript/module/ui/utils/oauthReturn.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/userUtils.d.ts +7 -14
- package/lib/typescript/module/ui/utils/userUtils.d.ts.map +1 -1
- package/lib/typescript/types/expo-image-picker.d.ts +35 -0
- package/package.json +33 -12
- package/src/index.ts +19 -16
- package/src/notifications/deviceNotifications.ts +82 -0
- package/src/types/expo-image-picker.d.ts +35 -0
- package/src/ui/boot/__tests__/coldBootNoIdpRedirect.test.ts +215 -0
- package/src/ui/boot/runProviderColdBoot.ts +24 -101
- package/src/ui/components/AvatarCameraBadge.tsx +2 -1
- package/src/ui/components/FollowButton.tsx +1 -1
- package/src/ui/components/OxyAccountDialogScreen.tsx +13 -1
- package/src/ui/components/OxyAuthChooser.tsx +31 -20
- package/src/ui/components/OxyProvider.tsx +8 -7
- package/src/ui/components/OxySignInButton.tsx +2 -1
- package/src/ui/components/ProfileButton.tsx +15 -20
- package/src/ui/components/authChooser/AccountsMenuView.tsx +66 -57
- package/src/ui/components/authChooser/types.ts +6 -0
- package/src/ui/components/authChooser/useUsernameAvailability.ts +1 -1
- package/src/ui/components/fileManagement/UploadPreview.tsx +1 -1
- package/src/ui/components/internal/PinInput.tsx +1 -0
- package/src/ui/components/logo/LogoText.tsx +4 -4
- package/src/ui/components/payment/PaymentDetailsStep.tsx +1 -1
- package/src/ui/components/payment/PaymentSummaryStep.tsx +2 -2
- package/src/ui/components/payment/types.ts +24 -24
- package/src/ui/components/styles/shadow.tsx +2 -2
- package/src/ui/context/OxyContext.tsx +35 -46
- package/src/ui/context/__tests__/commitSessionFlow.test.ts +13 -89
- package/src/ui/context/commitSessionFlow.ts +3 -61
- package/src/ui/context/hooks/useAuthOperations.ts +26 -1
- package/src/ui/context/oxyContextTypes.ts +26 -7
- package/src/ui/context/useOxyAccountGraph.ts +4 -4
- package/src/ui/hooks/mutations/mutationFactory.ts +1 -1
- package/src/ui/hooks/mutations/useAccountMutations.ts +1 -1
- package/src/ui/hooks/mutations/useServicesMutations.ts +1 -1
- package/src/ui/hooks/queries/paymentTypes.ts +3 -2
- package/src/ui/hooks/queries/usePaymentQueries.ts +3 -2
- package/src/ui/hooks/queries/userCache.ts +169 -148
- package/src/ui/hooks/useAssets.ts +1 -1
- package/src/ui/hooks/useAsyncAction.ts +3 -3
- package/src/ui/hooks/useAuth.ts +12 -6
- package/src/ui/hooks/useAvatarPicker.ts +1 -1
- package/src/ui/hooks/useOnlineStatus.ts +3 -2
- package/src/ui/hooks/useSessionManagement.ts +0 -2
- package/src/ui/hooks/useSettingToggle.ts +1 -1
- package/src/ui/hooks/useSurfaceHeader.ts +90 -15
- package/src/ui/navigation/accountDialogManager.ts +9 -0
- package/src/ui/oauth/__tests__/oauthPopup.test.ts +26 -0
- package/src/ui/oauth/browserAuthTransport.ts +55 -49
- package/src/ui/oauth/oauthPopup.ts +61 -3
- package/src/ui/screens/AccountMembersScreen.tsx +1 -1
- package/src/ui/screens/AccountSettingsScreen.tsx +45 -17
- package/src/ui/screens/AccountVerificationScreen.tsx +1 -1
- package/src/ui/screens/AppInfoScreen.tsx +1 -1
- package/src/ui/screens/AvatarCropScreen.tsx +1 -1
- package/src/ui/screens/ChangeAvatarScreen.tsx +7 -4
- package/src/ui/screens/ConnectedAppsScreen.tsx +2 -2
- package/src/ui/screens/CreateAccountScreen.tsx +55 -15
- package/src/ui/screens/EditProfileFieldScreen.tsx +4 -4
- package/src/ui/screens/EditProfileScreen.tsx +6 -3
- package/src/ui/screens/FAQScreen.tsx +1 -1
- package/src/ui/screens/FeedbackScreen.tsx +741 -575
- package/src/ui/screens/FileManagementScreen.tsx +1 -1
- package/src/ui/screens/FollowersListScreen.tsx +3 -0
- package/src/ui/screens/FollowingListScreen.tsx +3 -0
- package/src/ui/screens/HelpSupportScreen.tsx +1 -1
- package/src/ui/screens/HistoryViewScreen.tsx +5 -20
- package/src/ui/screens/LanguageSelectorScreen.tsx +1 -1
- package/src/ui/screens/LegalDocumentsScreen.tsx +1 -1
- package/src/ui/screens/ManageAccountScreen.tsx +9 -2
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +4 -4
- package/src/ui/screens/PrivacySettingsScreen.tsx +15 -12
- package/src/ui/screens/ProfileScreen.tsx +24 -6
- package/src/ui/screens/SavesCollectionsScreen.tsx +1 -1
- package/src/ui/screens/UserListScreen.tsx +18 -8
- package/src/ui/screens/WelcomeNewUserScreen.tsx +6 -6
- package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +1 -1
- package/src/ui/screens/fileManagement/hooks/useFileUploadState.ts +14 -5
- package/src/ui/screens/trust/TrustCenterScreen.tsx +2 -2
- package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +6 -5
- package/src/ui/screens/trust/TrustRewardsScreen.tsx +1 -1
- package/src/ui/screens/trust/TrustRulesScreen.tsx +1 -1
- package/src/ui/screens/trust/trustTier.ts +1 -1
- package/src/ui/session/__tests__/backgroundSession.test.ts +392 -0
- package/src/ui/session/backgroundSession.ts +313 -0
- package/src/ui/session/index.ts +1 -0
- package/src/ui/session/useBackgroundSessionSync.ts +92 -0
- package/src/ui/types/navigation.ts +27 -19
- package/src/ui/utils/fileManagement.ts +108 -92
- package/src/ui/utils/netConnectivity.ts +27 -0
- package/src/ui/utils/oauthReturn.ts +23 -33
- package/src/ui/utils/userUtils.ts +27 -32
- package/lib/commonjs/ui/oauth/legacyRedirectLanes.js +0 -48
- package/lib/commonjs/ui/oauth/legacyRedirectLanes.js.map +0 -1
- package/lib/commonjs/ui/utils/crossOriginRestore.js +0 -140
- package/lib/commonjs/ui/utils/crossOriginRestore.js.map +0 -1
- package/lib/module/ui/oauth/legacyRedirectLanes.js +0 -44
- package/lib/module/ui/oauth/legacyRedirectLanes.js.map +0 -1
- package/lib/module/ui/utils/crossOriginRestore.js +0 -131
- package/lib/module/ui/utils/crossOriginRestore.js.map +0 -1
- package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts +0 -40
- package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts +0 -43
- package/lib/typescript/commonjs/ui/utils/crossOriginRestore.d.ts.map +0 -1
- package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts +0 -40
- package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts.map +0 -1
- package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts +0 -43
- package/lib/typescript/module/ui/utils/crossOriginRestore.d.ts.map +0 -1
- package/src/ui/boot/__tests__/coldBootWebAuthMode.test.ts +0 -281
- package/src/ui/oauth/legacyRedirectLanes.ts +0 -43
- package/src/ui/utils/__tests__/crossOriginRestore.test.ts +0 -143
- package/src/ui/utils/crossOriginRestore.ts +0 -169
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Keeps the native background credential in step with the session, so an app
|
|
5
|
+
* enables background authentication with one prop and writes no session code of
|
|
6
|
+
* its own.
|
|
7
|
+
*
|
|
8
|
+
* See `./backgroundSession` for what the credential is and why it is separate
|
|
9
|
+
* from the rotating device secret.
|
|
10
|
+
*/
|
|
11
|
+
import { useEffect } from 'react';
|
|
12
|
+
import { AppState } from 'react-native';
|
|
13
|
+
import { clearBackgroundSession, isBackgroundSessionSupported, syncBackgroundSession } from "./backgroundSession.js";
|
|
14
|
+
/**
|
|
15
|
+
* An effect is the right shape here, unusually for this codebase: the work is a
|
|
16
|
+
* side effect on native storage, and it has to react both to an identity change
|
|
17
|
+
* (a value) and to the app being foregrounded (a subscription). There is no
|
|
18
|
+
* derived-state or React Query formulation of "write a credential to the
|
|
19
|
+
* keystore when the user changes or the app comes back".
|
|
20
|
+
*
|
|
21
|
+
* Re-runs on identity change, which is what makes sign-out and account switching
|
|
22
|
+
* work: `syncBackgroundSession` clears a credential belonging to anyone other
|
|
23
|
+
* than `userId` before it does any network work.
|
|
24
|
+
*/
|
|
25
|
+
export function useBackgroundSessionSync({
|
|
26
|
+
enabled,
|
|
27
|
+
oxyServices,
|
|
28
|
+
userId,
|
|
29
|
+
canUsePrivateApi
|
|
30
|
+
}) {
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!isBackgroundSessionSupported()) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (!enabled) {
|
|
36
|
+
// An app that leaves the feature off must not keep a credential THIS app
|
|
37
|
+
// provisioned earlier. The store is package-scoped (see
|
|
38
|
+
// OxyBackgroundSessionStore), so this cannot revoke a sibling Oxy app's
|
|
39
|
+
// credential under the shared UID.
|
|
40
|
+
void clearBackgroundSession();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// A run that is superseded (unmount, or another identity change) must not
|
|
45
|
+
// write the credential it was about to write.
|
|
46
|
+
let current = true;
|
|
47
|
+
// Deliberately NOT caught. `syncBackgroundSession` already handles every
|
|
48
|
+
// runtime failure internally and throws for exactly one thing: an installed
|
|
49
|
+
// `@oxyhq/core` too old to provision. That is a dependency mistake which must
|
|
50
|
+
// surface, so it is allowed to reject — adding a `.catch()` here would put it
|
|
51
|
+
// back behind the silence it was moved out of.
|
|
52
|
+
const run = () => {
|
|
53
|
+
void syncBackgroundSession({
|
|
54
|
+
oxyServices,
|
|
55
|
+
userId,
|
|
56
|
+
canUsePrivateApi,
|
|
57
|
+
isCurrent: () => current
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
run();
|
|
61
|
+
const subscription = AppState.addEventListener('change', state => {
|
|
62
|
+
if (state === 'active') {
|
|
63
|
+
run();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return () => {
|
|
67
|
+
current = false;
|
|
68
|
+
subscription.remove();
|
|
69
|
+
// Deliberately NOT clearing here. Unmount is the app closing, which is
|
|
70
|
+
// precisely when the credential has to survive — clearing on teardown
|
|
71
|
+
// would defeat the entire feature. Revocation happens on sign-out (via a
|
|
72
|
+
// `userId` of null), on the server, or when the credential expires.
|
|
73
|
+
};
|
|
74
|
+
}, [enabled, oxyServices, userId, canUsePrivateApi]);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=useBackgroundSessionSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","AppState","clearBackgroundSession","isBackgroundSessionSupported","syncBackgroundSession","useBackgroundSessionSync","enabled","oxyServices","userId","canUsePrivateApi","current","run","isCurrent","subscription","addEventListener","state","remove"],"sourceRoot":"../../../../src","sources":["ui/session/useBackgroundSessionSync.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SACEC,sBAAsB,EACtBC,4BAA4B,EAC5BC,qBAAqB,QAChB,wBAAqB;AAY5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAAC;EACvCC,OAAO;EACPC,WAAW;EACXC,MAAM;EACNC;AAC6B,CAAC,EAAQ;EACtCT,SAAS,CAAC,MAAM;IACd,IAAI,CAACG,4BAA4B,CAAC,CAAC,EAAE;MACnC;IACF;IAEA,IAAI,CAACG,OAAO,EAAE;MACZ;MACA;MACA;MACA;MACA,KAAKJ,sBAAsB,CAAC,CAAC;MAC7B;IACF;;IAEA;IACA;IACA,IAAIQ,OAAO,GAAG,IAAI;IAClB;IACA;IACA;IACA;IACA;IACA,MAAMC,GAAG,GAAGA,CAAA,KAAM;MAChB,KAAKP,qBAAqB,CAAC;QACzBG,WAAW;QACXC,MAAM;QACNC,gBAAgB;QAChBG,SAAS,EAAEA,CAAA,KAAMF;MACnB,CAAC,CAAC;IACJ,CAAC;IAEDC,GAAG,CAAC,CAAC;IACL,MAAME,YAAY,GAAGZ,QAAQ,CAACa,gBAAgB,CAAC,QAAQ,EAAGC,KAAK,IAAK;MAClE,IAAIA,KAAK,KAAK,QAAQ,EAAE;QACtBJ,GAAG,CAAC,CAAC;MACP;IACF,CAAC,CAAC;IAEF,OAAO,MAAM;MACXD,OAAO,GAAG,KAAK;MACfG,YAAY,CAACG,MAAM,CAAC,CAAC;MACrB;MACA;MACA;MACA;IACF,CAAC;EACH,CAAC,EAAE,CAACV,OAAO,EAAEC,WAAW,EAAEC,MAAM,EAAEC,gBAAgB,CAAC,CAAC;AACtD","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { Platform } from
|
|
3
|
+
import { Platform } from "react-native";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Extended File interface that includes a `uri` property for mobile preview support.
|
|
@@ -19,11 +19,11 @@ import { Platform } from 'react-native';
|
|
|
19
19
|
* (carries a URI but is not a real DOM `File` / `Blob` instance).
|
|
20
20
|
*/
|
|
21
21
|
export function isRNFileDescriptor(input) {
|
|
22
|
-
if (!input || typeof input !==
|
|
22
|
+
if (!input || typeof input !== "object") return false;
|
|
23
23
|
const obj = input;
|
|
24
|
-
if (typeof obj.uri !==
|
|
25
|
-
if (typeof File !==
|
|
26
|
-
if (typeof Blob !==
|
|
24
|
+
if (typeof obj.uri !== "string") return false;
|
|
25
|
+
if (typeof File !== "undefined" && input instanceof File) return false;
|
|
26
|
+
if (typeof Blob !== "undefined" && input instanceof Blob) return false;
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -31,9 +31,9 @@ export function isRNFileDescriptor(input) {
|
|
|
31
31
|
* Format file size in bytes to human-readable string
|
|
32
32
|
*/
|
|
33
33
|
export function formatFileSize(bytes) {
|
|
34
|
-
if (bytes === 0) return
|
|
34
|
+
if (bytes === 0) return "0 Bytes";
|
|
35
35
|
const k = 1024;
|
|
36
|
-
const sizes = [
|
|
36
|
+
const sizes = ["Bytes", "KB", "MB", "GB"];
|
|
37
37
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
38
38
|
return `${Number.parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`;
|
|
39
39
|
}
|
|
@@ -42,14 +42,14 @@ export function formatFileSize(bytes) {
|
|
|
42
42
|
* Get icon name for file based on content type
|
|
43
43
|
*/
|
|
44
44
|
export function getFileIcon(contentType) {
|
|
45
|
-
if (contentType.startsWith(
|
|
46
|
-
if (contentType.startsWith(
|
|
47
|
-
if (contentType.startsWith(
|
|
48
|
-
if (contentType.includes(
|
|
49
|
-
if (contentType.includes(
|
|
50
|
-
if (contentType.includes(
|
|
51
|
-
if (contentType.includes(
|
|
52
|
-
return
|
|
45
|
+
if (contentType.startsWith("image/")) return "image";
|
|
46
|
+
if (contentType.startsWith("video/")) return "videocam";
|
|
47
|
+
if (contentType.startsWith("audio/")) return "musical-notes";
|
|
48
|
+
if (contentType.includes("pdf")) return "document-text";
|
|
49
|
+
if (contentType.includes("word") || contentType.includes("doc")) return "document";
|
|
50
|
+
if (contentType.includes("excel") || contentType.includes("sheet")) return "grid";
|
|
51
|
+
if (contentType.includes("zip") || contentType.includes("archive")) return "archive";
|
|
52
|
+
return "document-outline";
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
/**
|
|
@@ -66,18 +66,18 @@ export function getFileIcon(contentType) {
|
|
|
66
66
|
*/
|
|
67
67
|
export async function convertDocumentPickerAssetToFile(doc, index) {
|
|
68
68
|
const fileName = doc.name || `file-${index + 1}`;
|
|
69
|
-
const fileType = doc.mimeType ||
|
|
69
|
+
const fileType = doc.mimeType || "application/octet-stream";
|
|
70
70
|
|
|
71
71
|
// React Native path — return the descriptor as-is. FormData handles it.
|
|
72
|
-
if (Platform.OS !==
|
|
72
|
+
if (Platform.OS !== "web") {
|
|
73
73
|
if (!doc.uri) {
|
|
74
|
-
throw new Error(
|
|
74
|
+
throw new Error("Missing file data (no uri property)");
|
|
75
75
|
}
|
|
76
76
|
return {
|
|
77
77
|
uri: doc.uri,
|
|
78
78
|
type: fileType,
|
|
79
79
|
name: fileName,
|
|
80
|
-
size: typeof doc.size ===
|
|
80
|
+
size: typeof doc.size === "number" ? doc.size : undefined
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
try {
|
|
@@ -85,7 +85,7 @@ export async function convertDocumentPickerAssetToFile(doc, index) {
|
|
|
85
85
|
|
|
86
86
|
// Priority 1: Use doc.file if available (web native File API).
|
|
87
87
|
// This is the most efficient path as it doesn't require fetching.
|
|
88
|
-
if (doc.file && typeof globalThis.File !==
|
|
88
|
+
if (doc.file && typeof globalThis.File !== "undefined" && doc.file instanceof globalThis.File) {
|
|
89
89
|
file = doc.file;
|
|
90
90
|
// Ensure file has required properties
|
|
91
91
|
if (!file.name && doc.name) {
|
|
@@ -109,22 +109,22 @@ export async function convertDocumentPickerAssetToFile(doc, index) {
|
|
|
109
109
|
throw new Error(`Failed to fetch file: ${response.statusText}`);
|
|
110
110
|
}
|
|
111
111
|
const blob = await response.blob();
|
|
112
|
-
const resolvedType = doc.mimeType || blob.type ||
|
|
112
|
+
const resolvedType = doc.mimeType || blob.type || "application/octet-stream";
|
|
113
113
|
file = new globalThis.File([blob], fileName, {
|
|
114
114
|
type: resolvedType
|
|
115
115
|
});
|
|
116
116
|
file.uri = doc.uri;
|
|
117
117
|
return file;
|
|
118
118
|
} catch (error) {
|
|
119
|
-
console.error(
|
|
120
|
-
throw new Error(`Failed to load file: ${(error instanceof Error ? error.message : null) ||
|
|
119
|
+
console.error("Failed to read file from URI:", error);
|
|
120
|
+
throw new Error(`Failed to load file: ${(error instanceof Error ? error.message : null) || "Unknown error"}`);
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
// No file or URI available - this shouldn't happen with Expo 54
|
|
125
|
-
throw new Error(
|
|
125
|
+
throw new Error("Missing file data (no file or uri property)");
|
|
126
126
|
} catch (error) {
|
|
127
|
-
console.error(
|
|
127
|
+
console.error("Error converting document to file:", error);
|
|
128
128
|
throw error;
|
|
129
129
|
}
|
|
130
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","isRNFileDescriptor","input","obj","uri","File","Blob","formatFileSize","bytes","k","sizes","i","Math","floor","log","Number","parseFloat","toFixed","getFileIcon","contentType","startsWith","includes","convertDocumentPickerAssetToFile","doc","index","fileName","name","fileType","mimeType","OS","Error","type","size","undefined","file","globalThis","response","fetch","ok","statusText","blob","resolvedType","error","console","message","uploadFileRaw","userId","oxyServices","visibility","uploadRawFile"],"sourceRoot":"../../../../src","sources":["ui/utils/fileManagement.ts"],"mappings":";;AAGA,SAASA,QAAQ,QAAQ,cAAc;;AAEvC;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACC,KAAc,EAA6B;
|
|
1
|
+
{"version":3,"names":["Platform","isRNFileDescriptor","input","obj","uri","File","Blob","formatFileSize","bytes","k","sizes","i","Math","floor","log","Number","parseFloat","toFixed","getFileIcon","contentType","startsWith","includes","convertDocumentPickerAssetToFile","doc","index","fileName","name","fileType","mimeType","OS","Error","type","size","undefined","file","globalThis","response","fetch","ok","statusText","blob","resolvedType","error","console","message","uploadFileRaw","userId","oxyServices","visibility","uploadRawFile"],"sourceRoot":"../../../../src","sources":["ui/utils/fileManagement.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Mirrors Bloom `ConnectionStatusToasts` reachability semantics: a link that
|
|
5
|
+
* reports connected but explicitly unreachable (captive portal, no route) counts
|
|
6
|
+
* as offline.
|
|
7
|
+
*/
|
|
8
|
+
export function isNetConnectivityOnline(state) {
|
|
9
|
+
return Boolean(state.isConnected && state.isInternetReachable !== false);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Conservative offline verdict for boot-path probes. Unknown / probing states
|
|
14
|
+
* (`null`, timed-out fetch) resolve to "not offline" so a flaky probe never
|
|
15
|
+
* skips a real sign-in.
|
|
16
|
+
*/
|
|
17
|
+
export function isNetConnectivityExplicitlyOffline(state) {
|
|
18
|
+
if (!state) return false;
|
|
19
|
+
if (state.isConnected === false) return true;
|
|
20
|
+
if (state.isConnected === true && state.isInternetReachable === false) return true;
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=netConnectivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isNetConnectivityOnline","state","Boolean","isConnected","isInternetReachable","isNetConnectivityExplicitlyOffline"],"sourceRoot":"../../../../src","sources":["ui/utils/netConnectivity.ts"],"mappings":";;AAKA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,uBAAuBA,CAACC,KAAuB,EAAW;EACxE,OAAOC,OAAO,CAACD,KAAK,CAACE,WAAW,IAAIF,KAAK,CAACG,mBAAmB,KAAK,KAAK,CAAC;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kCAAkCA,CAChDJ,KAA0C,EACjC;EACT,IAAI,CAACA,KAAK,EAAE,OAAO,KAAK;EACxB,IAAIA,KAAK,CAACE,WAAW,KAAK,KAAK,EAAE,OAAO,IAAI;EAC5C,IAAIF,KAAK,CAACE,WAAW,KAAK,IAAI,IAAIF,KAAK,CAACG,mBAAmB,KAAK,KAAK,EAAE,OAAO,IAAI;EAClF,OAAO,KAAK;AACd","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { clearOAuthHandshake, consumeOAuthReturnPath, logger,
|
|
3
|
+
import { clearOAuthHandshake, consumeOAuthReturnPath, logger, canonicalizeOAuthRedirectUri, readOAuthHandshake } from '@oxyhq/core';
|
|
4
4
|
import { completeOAuthCode } from "../oauth/completeOAuthCode.js";
|
|
5
5
|
import { isWebBrowser } from "./isWebBrowser.js";
|
|
6
6
|
|
|
@@ -8,12 +8,21 @@ import { isWebBrowser } from "./isWebBrowser.js";
|
|
|
8
8
|
* When the RP lands with `?code=` after signing in at auth.oxy.so, exchange the
|
|
9
9
|
* code for a device-first session before cold boot runs.
|
|
10
10
|
*
|
|
11
|
-
* This is the REDIRECT transport's return leg.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
11
|
+
* This is the REDIRECT transport's return leg. The SDK never starts a full-page
|
|
12
|
+
* authorize navigation on its own any more (#691 phase 7b), but this lane is
|
|
13
|
+
* still load-bearing: a browser-BLOCKED sign-in popup falls back to a full-page
|
|
14
|
+
* redirect (`startWebOAuthSignIn`), and that redirect comes back here.
|
|
15
|
+
*
|
|
16
|
+
* It owns only what is specific to a full-page round trip — reading the code off
|
|
17
|
+
* the URL, recovering the handshake `sessionStorage` carried across the
|
|
18
|
+
* navigation, and cleaning both up afterwards — and delegates state validation,
|
|
19
|
+
* the PKCE exchange, and the session commit to `completeOAuthCode`, the same
|
|
20
|
+
* function the popup transport runs.
|
|
21
|
+
*
|
|
22
|
+
* It is also the SINGLE cleanup path for an OAuth `error` landing on the URL:
|
|
23
|
+
* any `?error=…` (including an `error=login_required` left over from the
|
|
24
|
+
* now-deleted silent restore) is stripped along with `state` /
|
|
25
|
+
* `error_description`, and the stale PKCE handshake is cleared.
|
|
17
26
|
*/
|
|
18
27
|
export async function tryCompleteOAuthReturn(opts) {
|
|
19
28
|
if (!isWebBrowser()) return false;
|
|
@@ -37,13 +46,15 @@ export async function tryCompleteOAuthReturn(opts) {
|
|
|
37
46
|
clearOAuthHandshake();
|
|
38
47
|
return false;
|
|
39
48
|
}
|
|
49
|
+
const handshake = readOAuthHandshake();
|
|
50
|
+
const redirectUri = canonicalizeOAuthRedirectUri(handshake?.redirectUri ?? opts.authRedirectUri ?? location.origin);
|
|
40
51
|
const result = await completeOAuthCode({
|
|
41
52
|
oxyServices: opts.oxyServices,
|
|
42
53
|
clientId,
|
|
43
54
|
code,
|
|
44
55
|
returnedState: params.get('state'),
|
|
45
|
-
handshake
|
|
46
|
-
redirectUri
|
|
56
|
+
handshake,
|
|
57
|
+
redirectUri,
|
|
47
58
|
commitSession: opts.commitSession,
|
|
48
59
|
// Strip the params before the commit so a stale `?code=` cannot re-enter the
|
|
49
60
|
// exchange loop, and read the return path FIRST — clearOAuthHandshake drops
|
|
@@ -106,27 +117,6 @@ function stripOAuthParamsFromUrl() {
|
|
|
106
117
|
url.searchParams.delete('state');
|
|
107
118
|
url.searchParams.delete('error');
|
|
108
119
|
url.searchParams.delete('error_description');
|
|
109
|
-
url.searchParams.delete('hub_sync');
|
|
110
|
-
replaceUrlAfterOAuthReturn(`${url.pathname}${url.search}${url.hash}`);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* When auth.oxy.so hub-sync redeem fails, the IdP redirects back with
|
|
115
|
-
* `?hub_sync=failed`. Strip the param and log so cold boot can continue
|
|
116
|
-
* without leaving a stale query string.
|
|
117
|
-
*/
|
|
118
|
-
export function consumeHubSyncFailure() {
|
|
119
|
-
if (!isWebBrowser()) return false;
|
|
120
|
-
const location = globalThis.location;
|
|
121
|
-
if (!location) return false;
|
|
122
|
-
const params = new URLSearchParams(location.search);
|
|
123
|
-
if (params.get('hub_sync') !== 'failed') return false;
|
|
124
|
-
logger.warn('Hub sync failed — IdP device session may be out of sync', {
|
|
125
|
-
component: 'hubSync'
|
|
126
|
-
});
|
|
127
|
-
const url = new URL(location.href);
|
|
128
|
-
url.searchParams.delete('hub_sync');
|
|
129
120
|
replaceUrlAfterOAuthReturn(`${url.pathname}${url.search}${url.hash}`);
|
|
130
|
-
return true;
|
|
131
121
|
}
|
|
132
122
|
//# sourceMappingURL=oauthReturn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clearOAuthHandshake","consumeOAuthReturnPath","logger","
|
|
1
|
+
{"version":3,"names":["clearOAuthHandshake","consumeOAuthReturnPath","logger","canonicalizeOAuthRedirectUri","readOAuthHandshake","completeOAuthCode","isWebBrowser","tryCompleteOAuthReturn","opts","location","globalThis","params","URLSearchParams","search","code","get","oauthError","stripOAuthParamsFromUrl","clientId","warn","component","handshake","redirectUri","authRedirectUri","origin","result","oxyServices","returnedState","commitSession","cleanup","ok","replaceUrlAfterOAuthReturn","fallbackUrl","history","replaceState","current","pathname","hash","target","state","dispatch","dispatchEvent","event","PopStateEvent","Event","call","error","url","URL","href","searchParams","delete"],"sourceRoot":"../../../../src","sources":["ui/utils/oauthReturn.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* User display name and date formatting utilities.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Display-name helpers follow the API contract: prefer `name.displayName` when
|
|
7
|
+
* present, otherwise fall back to the normalized handle via
|
|
8
|
+
* `getNormalizedUserHandle`.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { getNormalizedUserHandle } from '@oxyhq/core';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Formats a date string to a readable format (e.g., "Feb 21, 2025")
|
|
@@ -27,38 +27,37 @@ export const formatDate = dateString => {
|
|
|
27
27
|
return '';
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
|
+
function readDisplayName(user) {
|
|
31
|
+
const name = user?.name;
|
|
32
|
+
if (!name || typeof name !== 'object') return '';
|
|
33
|
+
return typeof name.displayName === 'string' ? name.displayName.trim() : '';
|
|
34
|
+
}
|
|
30
35
|
|
|
31
36
|
/**
|
|
32
37
|
* Gets a display name from user data.
|
|
33
38
|
*
|
|
34
|
-
* Prefers
|
|
35
|
-
* (derived from publicKey) → translated "Unnamed".
|
|
36
|
-
*
|
|
37
|
-
* @param user - User-like object with optional name/username/publicKey
|
|
38
|
-
* @param locale - Optional locale for the final fallback label
|
|
39
|
+
* Prefers API `name.displayName`, then the normalized handle.
|
|
39
40
|
*/
|
|
40
|
-
export const getDisplayName =
|
|
41
|
+
export const getDisplayName = user => {
|
|
42
|
+
const displayName = readDisplayName(user);
|
|
43
|
+
if (displayName) return displayName;
|
|
44
|
+
return getNormalizedUserHandle(user) ?? '';
|
|
45
|
+
};
|
|
41
46
|
|
|
42
47
|
/**
|
|
43
|
-
* Gets a short display name (first
|
|
44
|
-
*
|
|
45
|
-
* Used for compact UI (e.g. greetings). Falls back to the full display name
|
|
46
|
-
* helper, which also handles publicKey-only accounts.
|
|
48
|
+
* Gets a short display name (first token) for compact UI.
|
|
47
49
|
*/
|
|
48
|
-
export const getShortDisplayName =
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (first) return first;
|
|
54
|
-
const full = typeof name.full === 'string' ? name.full.trim() : '';
|
|
55
|
-
if (full) return full.split(' ')[0];
|
|
56
|
-
} else if (typeof name === 'string' && name.trim()) {
|
|
57
|
-
return name.trim().split(' ')[0];
|
|
50
|
+
export const getShortDisplayName = user => {
|
|
51
|
+
const displayName = readDisplayName(user);
|
|
52
|
+
if (displayName) {
|
|
53
|
+
const firstToken = displayName.split(/\s+/).find(Boolean);
|
|
54
|
+
if (firstToken) return firstToken;
|
|
58
55
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
const handle = getNormalizedUserHandle(user);
|
|
57
|
+
if (handle) {
|
|
58
|
+
const firstToken = handle.split(/\s+/).find(Boolean);
|
|
59
|
+
return firstToken ?? handle;
|
|
60
|
+
}
|
|
61
|
+
return '';
|
|
63
62
|
};
|
|
64
63
|
//# sourceMappingURL=userUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["getNormalizedUserHandle","formatDate","dateString","date","Date","Number","isNaN","getTime","toLocaleDateString","month","day","year","readDisplayName","user","name","displayName","trim","getDisplayName","getShortDisplayName","firstToken","split","find","Boolean","handle"],"sourceRoot":"../../../../src","sources":["ui/utils/userUtils.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,uBAAuB,QAAmC,aAAa;;AAEhF;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,UAA4C,IAAa;EAClF,IAAI,CAACA,UAAU,EAAE,OAAO,EAAE;EAE1B,IAAI;IACF,MAAMC,IAAI,GAAGD,UAAU,YAAYE,IAAI,GAAGF,UAAU,GAAG,IAAIE,IAAI,CAACF,UAAU,CAAC;IAC3E,IAAIG,MAAM,CAACC,KAAK,CAACH,IAAI,CAACI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE;IAE3C,OAAOJ,IAAI,CAACK,kBAAkB,CAAC,OAAO,EAAE;MACtCC,KAAK,EAAE,OAAO;MACdC,GAAG,EAAE,SAAS;MACdC,IAAI,EAAE;IACR,CAAC,CAAC;EACJ,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC;AAED,SAASC,eAAeA,CAACC,IAA6C,EAAU;EAC9E,MAAMC,IAAI,GAAGD,IAAI,EAAEC,IAAI;EACvB,IAAI,CAACA,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE,OAAO,EAAE;EAChD,OAAO,OAAOA,IAAI,CAACC,WAAW,KAAK,QAAQ,GAAGD,IAAI,CAACC,WAAW,CAACC,IAAI,CAAC,CAAC,GAAG,EAAE;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GACzBJ,IAA6C,IAClC;EACX,MAAME,WAAW,GAAGH,eAAe,CAACC,IAAI,CAAC;EACzC,IAAIE,WAAW,EAAE,OAAOA,WAAW;EACnC,OAAOf,uBAAuB,CAACa,IAAI,CAAC,IAAI,EAAE;AAC5C,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMK,mBAAmB,GAC9BL,IAA6C,IAClC;EACX,MAAME,WAAW,GAAGH,eAAe,CAACC,IAAI,CAAC;EACzC,IAAIE,WAAW,EAAE;IACf,MAAMI,UAAU,GAAGJ,WAAW,CAACK,KAAK,CAAC,KAAK,CAAC,CAACC,IAAI,CAACC,OAAO,CAAC;IACzD,IAAIH,UAAU,EAAE,OAAOA,UAAU;EACnC;EAEA,MAAMI,MAAM,GAAGvB,uBAAuB,CAACa,IAAI,CAAC;EAC5C,IAAIU,MAAM,EAAE;IACV,MAAMJ,UAAU,GAAGI,MAAM,CAACH,KAAK,CAAC,KAAK,CAAC,CAACC,IAAI,CAACC,OAAO,CAAC;IACpD,OAAOH,UAAU,IAAII,MAAM;EAC7B;EAEA,OAAO,EAAE;AACX,CAAC","ignoreList":[]}
|
|
@@ -56,8 +56,6 @@ export { handleAuthError, isInvalidSessionError, isTimeoutOrNetworkError, extrac
|
|
|
56
56
|
export type { HandleAuthErrorOptions } from './ui/utils/errorHandlers';
|
|
57
57
|
export { useFileFiltering } from './ui/hooks/useFileFiltering';
|
|
58
58
|
export type { ViewMode, SortBy, SortOrder } from './ui/hooks/useFileFiltering';
|
|
59
|
-
export { pushTokenPlatform, hasNotificationPermission, requestNotificationPermission, getExpoPushToken, takeLaunchNotificationData, installForegroundNotificationHandler, subscribeToNotificationResponses, } from './notifications/deviceNotifications';
|
|
60
|
-
export type { ForegroundPresentation } from './notifications/deviceNotifications';
|
|
61
59
|
export { OXY_OAUTH_STATE_STORAGE_KEY, OXY_OAUTH_CODE_VERIFIER_STORAGE_KEY, } from '@oxyhq/core';
|
|
62
60
|
export { default as OxySignInButton } from './ui/components/OxySignInButton';
|
|
63
61
|
export type { OxySignInButtonProps, OxyOAuthResult } from './ui/components/OxySignInButton';
|
|
@@ -79,6 +77,7 @@ export { LogoIcon } from './ui/components/logo/LogoIcon';
|
|
|
79
77
|
export { LogoText } from './ui/components/logo/LogoText';
|
|
80
78
|
export { default as ProfileButton } from './ui/components/ProfileButton';
|
|
81
79
|
export type { ProfileButtonProps } from './ui/components/ProfileButton';
|
|
80
|
+
export type { AccountDialogMenuItem } from './ui/navigation/accountDialogManager';
|
|
82
81
|
export { default as OxyAuthChooser } from './ui/components/OxyAuthChooser';
|
|
83
82
|
export type { OxyAuthChooserProps } from './ui/components/OxyAuthChooser';
|
|
84
83
|
export { OxySignInRequestSurface } from './ui/components/OxySignInRequestSurface';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,25 @@
|
|
|
8
8
|
* already lives in `@oxyhq/core`; core may never import an `expo-*` module, and
|
|
9
9
|
* this adapter is the Expo-side half that closes that gap.
|
|
10
10
|
*
|
|
11
|
+
* ## Reached through its OWN entry point, never the root barrel
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { getExpoPushToken } from '@oxyhq/services/notifications';
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* This is the only module in the package that depends on peers an app which
|
|
18
|
+
* does not use push genuinely never installs, and a barrel export would put it
|
|
19
|
+
* in EVERY consumer's import graph. `tsc` resolves the specifier of an
|
|
20
|
+
* `import()` even when the call is lazy and inside a try/catch, so a barrel
|
|
21
|
+
* export turned "optional peer" into a hard requirement: consumers with no
|
|
22
|
+
* interest in push failed to type-check with TS2307. The subpath is what keeps
|
|
23
|
+
* the optionality honest — see the note in `src/index.ts`.
|
|
24
|
+
*
|
|
25
|
+
* Metro is the resolver that behaves differently here, and in the useful
|
|
26
|
+
* direction: an unresolvable DYNAMIC `import()` bundles fine (the `catch` below
|
|
27
|
+
* takes over at runtime), where a static import fails the build outright. That
|
|
28
|
+
* is why the runtime shape below must stay dynamic-and-guarded.
|
|
29
|
+
*
|
|
11
30
|
* ## Native-only by construction
|
|
12
31
|
*
|
|
13
32
|
* Every entry point resolves its null/no-op result from `Platform.OS` BEFORE the
|
|
@@ -103,6 +122,38 @@ export declare function takeLaunchNotificationData(): Promise<unknown>;
|
|
|
103
122
|
* recognises leaves every other notification exactly as it behaves today.
|
|
104
123
|
*/
|
|
105
124
|
export type ForegroundPresentation = 'show' | 'suppress';
|
|
125
|
+
/** How prominently Android surfaces a channel's notifications. */
|
|
126
|
+
export type NotificationChannelImportance = 'default' | 'high';
|
|
127
|
+
/** An Android notification channel this app delivers on. */
|
|
128
|
+
export interface NotificationChannelSpec {
|
|
129
|
+
/**
|
|
130
|
+
* The channel id. It MUST match the id the sender attaches: Android 8+ drops
|
|
131
|
+
* a notification whose channel the app has not created, silently and with no
|
|
132
|
+
* error on either side, which is the hardest push symptom there is to
|
|
133
|
+
* diagnose. Ids that cross the wire belong in `@oxyhq/contracts`, not in a
|
|
134
|
+
* string typed on both sides.
|
|
135
|
+
*/
|
|
136
|
+
id: string;
|
|
137
|
+
/** User-visible channel name — app copy, so the caller localizes it. */
|
|
138
|
+
name: string;
|
|
139
|
+
/** User-visible description shown in Android's notification settings. */
|
|
140
|
+
description?: string;
|
|
141
|
+
importance?: NotificationChannelImportance;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Create (or update) an Android notification channel.
|
|
145
|
+
*
|
|
146
|
+
* A no-op everywhere but Android: iOS has no channels, and web never loads the
|
|
147
|
+
* native module. Call it BEFORE registering a push token, so the very first
|
|
148
|
+
* notification the server sends already has a channel to land on.
|
|
149
|
+
*
|
|
150
|
+
* Failure is non-fatal and logged: a missing channel costs visibility, and
|
|
151
|
+
* refusing to register a token over it would cost the feature entirely.
|
|
152
|
+
*
|
|
153
|
+
* @returns Whether the channel was actually created (`false` off Android, or
|
|
154
|
+
* when the native module is unavailable, or when creation failed).
|
|
155
|
+
*/
|
|
156
|
+
export declare function ensureNotificationChannel(spec: NotificationChannelSpec): Promise<boolean>;
|
|
106
157
|
/**
|
|
107
158
|
* Install the ONE process-wide handler that decides whether an incoming
|
|
108
159
|
* notification is shown while the app is in the FOREGROUND.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deviceNotifications.d.ts","sourceRoot":"","sources":["../../../../src/notifications/deviceNotifications.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"deviceNotifications.d.ts","sourceRoot":"","sources":["../../../../src/notifications/deviceNotifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA4ErD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,GAAG,IAAI,CAE5D;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAgBlE;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,OAAO,CAAC,CAuBtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0B/D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,OAAO,CAAC,CA6BnE;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,UAAU,CAAC;AAiBzD,kEAAkE;AAClE,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/D,4DAA4D;AAC5D,MAAM,WAAW,uBAAuB;IACtC;;;;;;OAMG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,6BAA6B,CAAC;CAC5C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,sBAAsB,GAChD,OAAO,CAAC,OAAO,CAAC,CAsClB;AAED;;;;;;;GAOG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAChC,OAAO,CAAC,MAAM,IAAI,CAAC,CAkBrB"}
|