@oxyhq/services 26.0.1 → 26.0.4
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 +32 -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,42 @@
|
|
|
1
|
+
import type { OxyServices } from '@oxyhq/core';
|
|
2
|
+
/** Whether this platform/app can hold a background credential at all. */
|
|
3
|
+
export declare function isBackgroundSessionSupported(): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Drop the stored credential. No-op where unsupported, and never throws.
|
|
6
|
+
*
|
|
7
|
+
* Called on sign-out and BEFORE an account switch's network work, so the window
|
|
8
|
+
* in which background code could still serve the previous account is as short as
|
|
9
|
+
* one local write.
|
|
10
|
+
*/
|
|
11
|
+
export declare function clearBackgroundSession(): Promise<void>;
|
|
12
|
+
export interface BackgroundSessionSyncInput {
|
|
13
|
+
oxyServices: OxyServices;
|
|
14
|
+
/** The signed-in account, or `null` when signed out. */
|
|
15
|
+
userId: string | null;
|
|
16
|
+
/** Whether a bearer is available yet — provisioning requires one. */
|
|
17
|
+
canUsePrivateApi: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Whether this run is still the current one. A run that loses its relevance
|
|
20
|
+
* mid-flight (unmount, or another identity change) must not write the
|
|
21
|
+
* credential it was about to write.
|
|
22
|
+
*/
|
|
23
|
+
isCurrent: () => boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Bring the native credential in line with the session JS currently holds.
|
|
27
|
+
*
|
|
28
|
+
* Ordering is the load-bearing part: a credential belonging to a DIFFERENT
|
|
29
|
+
* account is cleared before any network call, so a crash mid-provision leaves
|
|
30
|
+
* background code signed out rather than serving the previous account's data
|
|
31
|
+
* under the new account's name. The server enforces the same rule independently
|
|
32
|
+
* (a mint is re-authorized against the live device session, and against its ACTIVE
|
|
33
|
+
* account), so this is the fast local half of a belt-and-braces pair, not the only
|
|
34
|
+
* guard.
|
|
35
|
+
*
|
|
36
|
+
* Throws for exactly one thing — a `@oxyhq/core` too old to provision (see
|
|
37
|
+
* {@link assertProvisioningAvailable}). Every other failure is caught and logged:
|
|
38
|
+
* a background credential is an enhancement, and failing to provision one must
|
|
39
|
+
* not disturb the session that is working.
|
|
40
|
+
*/
|
|
41
|
+
export declare function syncBackgroundSession(input: BackgroundSessionSyncInput): Promise<void>;
|
|
42
|
+
//# sourceMappingURL=backgroundSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backgroundSession.d.ts","sourceRoot":"","sources":["../../../../../src/ui/session/backgroundSession.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAyG/C,yEAAyE;AACzE,wBAAgB,4BAA4B,IAAI,OAAO,CAEtD;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAa5D;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,wDAAwD;IACxD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,qEAAqE;IACrE,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B;AA8BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF5F"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
export { createSessionClient } from './createSessionClient.js';
|
|
14
14
|
export { createTokenTransport } from './tokenTransport.js';
|
|
15
15
|
export { createPlatformAuthStateStore } from './authStore.js';
|
|
16
|
+
export { useBackgroundSessionSync } from './useBackgroundSessionSync.js';
|
|
16
17
|
export { createIdentitySessionBinding, IdentityBoundSessionError } from './identityBinding.js';
|
|
17
18
|
export type { IdentitySessionBinding } from './identityBinding.js';
|
|
18
19
|
export { createSessionClientHost, accountIdsOf, activeSessionIdOf, activeUserOf, deviceStateToClientSessions, } from '@oxyhq/core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ui/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAkB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAa,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,MAAM,sBAAmB,CAAC;AAC5F,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAChE,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ui/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAkB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAa,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA4B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,MAAM,sBAAmB,CAAC;AAC5F,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAChE,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { OxyServices } from '@oxyhq/core';
|
|
2
|
+
export interface UseBackgroundSessionSyncInput {
|
|
3
|
+
/** `OxyProviderProps.backgroundSession`. */
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
oxyServices: OxyServices;
|
|
6
|
+
/** The signed-in account, or `null` when signed out. */
|
|
7
|
+
userId: string | null;
|
|
8
|
+
/** Whether a bearer is available yet — provisioning needs one. */
|
|
9
|
+
canUsePrivateApi: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* An effect is the right shape here, unusually for this codebase: the work is a
|
|
13
|
+
* side effect on native storage, and it has to react both to an identity change
|
|
14
|
+
* (a value) and to the app being foregrounded (a subscription). There is no
|
|
15
|
+
* derived-state or React Query formulation of "write a credential to the
|
|
16
|
+
* keystore when the user changes or the app comes back".
|
|
17
|
+
*
|
|
18
|
+
* Re-runs on identity change, which is what makes sign-out and account switching
|
|
19
|
+
* work: `syncBackgroundSession` clears a credential belonging to anyone other
|
|
20
|
+
* than `userId` before it does any network work.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useBackgroundSessionSync({ enabled, oxyServices, userId, canUsePrivateApi, }: UseBackgroundSessionSyncInput): void;
|
|
23
|
+
//# sourceMappingURL=useBackgroundSessionSync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBackgroundSessionSync.d.ts","sourceRoot":"","sources":["../../../../../src/ui/session/useBackgroundSessionSync.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO/C,MAAM,WAAW,6BAA6B;IAC5C,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,wDAAwD;IACxD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kEAAkE;IAClE,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,OAAO,EACP,WAAW,EACX,MAAM,EACN,gBAAgB,GACjB,EAAE,6BAA6B,GAAG,IAAI,CAgDtC"}
|
|
@@ -54,11 +54,11 @@ export interface OxyProviderProps {
|
|
|
54
54
|
authWebUrl?: string;
|
|
55
55
|
authRedirectUri?: string;
|
|
56
56
|
/**
|
|
57
|
-
* Authorize endpoint override for
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
57
|
+
* Authorize endpoint override for web "Sign in with Oxy". Defaults to the
|
|
58
|
+
* production Oxy IdP (`https://auth.oxy.so/authorize`) when unset. Set this
|
|
59
|
+
* from an env var (e.g. Vite `VITE_OXY_AUTHORIZE_URL`, Expo
|
|
60
|
+
* `EXPO_PUBLIC_OXY_AUTHORIZE_URL`) so a local/staging deployment targets its
|
|
61
|
+
* own IdP instead of production.
|
|
62
62
|
*/
|
|
63
63
|
authorizeBaseUrl?: string;
|
|
64
64
|
/**
|
|
@@ -78,9 +78,9 @@ export interface OxyProviderProps {
|
|
|
78
78
|
* rather than hidden in the UI: `accounts` stays empty and is never fetched,
|
|
79
79
|
* `switchToAccount` / `switchSession` reject with `IdentityBoundSessionError`,
|
|
80
80
|
* `accountDialogController` is `null` and `openAccountDialog()` does nothing,
|
|
81
|
-
* and the
|
|
82
|
-
*
|
|
83
|
-
*
|
|
81
|
+
* and the web OAuth cold-boot lane (the authorization-code return leg) is
|
|
82
|
+
* skipped — it commits whichever account the IdP resolves, which is not
|
|
83
|
+
* necessarily the local key's owner.
|
|
84
84
|
*
|
|
85
85
|
* Read once at mount, like `baseURL` / `oxyServices`: changing it on a
|
|
86
86
|
* mounted provider does not re-bind the session.
|
|
@@ -90,22 +90,23 @@ export interface OxyProviderProps {
|
|
|
90
90
|
/**
|
|
91
91
|
* How a WEB third-party "Sign in with Oxy" hands the user to the IdP.
|
|
92
92
|
*
|
|
93
|
-
* - `'
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
93
|
+
* - `'popup'` (default) — a small `auth.oxy.so` window opened from the
|
|
94
|
+
* user's click. The app stays MOUNTED and becomes authenticated without a
|
|
95
|
+
* reload; the IdP delivers only the authorization code + `state` back to
|
|
96
|
+
* the opener via `postMessage` (never a token, device secret, or PKCE
|
|
97
|
+
* verifier). A blocked popup falls back to the redirect automatically.
|
|
98
|
+
* - `'redirect'` — a full-page navigation to `auth.oxy.so`, which returns to
|
|
99
|
+
* the registered `redirect_uri` with `?code=`. The tab unmounts and
|
|
100
|
+
* remounts, so route and unsaved state are lost.
|
|
101
|
+
*
|
|
102
|
+
* Either way the navigation only ever happens from a real user gesture: the
|
|
103
|
+
* SDK never bounces the top-level window on its own (#691 phase 7b).
|
|
101
104
|
*
|
|
102
105
|
* Native is unaffected — it always uses an in-app auth session.
|
|
103
|
-
* @default '
|
|
106
|
+
* @default 'popup'
|
|
104
107
|
*/
|
|
105
108
|
webAuthMode?: WebAuthMode;
|
|
106
109
|
queryClient?: QueryClient;
|
|
107
|
-
/** Sync device credentials to auth.oxy.so after interactive sign-in. @default true */
|
|
108
|
-
hubSync?: boolean;
|
|
109
110
|
/**
|
|
110
111
|
* Convenience: wrap the whole app subtree in `<RequireOxyAuth prompt=...>`.
|
|
111
112
|
* `off` (default) renders children unconditionally; `soft` adds a dismissible
|
|
@@ -115,5 +116,12 @@ export interface OxyProviderProps {
|
|
|
115
116
|
* @default 'off'
|
|
116
117
|
*/
|
|
117
118
|
requireAuth?: 'off' | 'soft' | 'hard';
|
|
119
|
+
/**
|
|
120
|
+
* When true, provisions a non-rotating background credential for native code
|
|
121
|
+
* (Android widgets) that runs without a JS runtime. Android-only today; inert
|
|
122
|
+
* on web and iOS.
|
|
123
|
+
* @default false
|
|
124
|
+
*/
|
|
125
|
+
backgroundSession?: boolean;
|
|
118
126
|
}
|
|
119
127
|
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../../src/ui/types/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAgB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAE5B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACxE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAGrC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAGlC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACrD,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAGjE,aAAa,CAAC,EAAE,SAAS,CAAC;IAG1B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAGnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IAMtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../../src/ui/types/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAgB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAE5B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACxE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAGrC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAGlC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACrD,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAGjE,aAAa,CAAC,EAAE,SAAS,CAAC;IAG1B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAGnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IAMtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type Ionicons from
|
|
2
|
-
import type { AssetUploadInput, RNFileDescriptor } from
|
|
3
|
-
import type { ComponentProps } from
|
|
1
|
+
import type Ionicons from "@expo/vector-icons/Ionicons";
|
|
2
|
+
import type { AssetUploadInput, RNFileDescriptor } from "@oxyhq/core";
|
|
3
|
+
import type { ComponentProps } from "react";
|
|
4
4
|
/**
|
|
5
5
|
* Extended File interface that includes a `uri` property for mobile preview support.
|
|
6
6
|
* React Native file pickers return URI-based references that need to be preserved
|
|
@@ -33,7 +33,7 @@ export declare function formatFileSize(bytes: number): string;
|
|
|
33
33
|
/**
|
|
34
34
|
* Get icon name for file based on content type
|
|
35
35
|
*/
|
|
36
|
-
export declare function getFileIcon(contentType: string): ComponentProps<typeof Ionicons>[
|
|
36
|
+
export declare function getFileIcon(contentType: string): ComponentProps<typeof Ionicons>["name"];
|
|
37
37
|
/**
|
|
38
38
|
* Convert a document/image picker asset into a value that
|
|
39
39
|
* `OxyServices.assetUpload` can accept.
|
|
@@ -50,6 +50,6 @@ export declare function convertDocumentPickerAssetToFile(doc: PickerAsset, index
|
|
|
50
50
|
/**
|
|
51
51
|
* Upload file raw - helper function for file uploads
|
|
52
52
|
*/
|
|
53
|
-
export declare function uploadFileRaw(file: AssetUploadInput, userId: string, oxyServices: any, visibility?:
|
|
53
|
+
export declare function uploadFileRaw(file: AssetUploadInput, userId: string, oxyServices: any, visibility?: "private" | "public" | "unlisted"): Promise<any>;
|
|
54
54
|
export {};
|
|
55
55
|
//# sourceMappingURL=fileManagement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileManagement.d.ts","sourceRoot":"","sources":["../../../../../src/ui/utils/fileManagement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,6BAA6B,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C;;;;GAIG;AACH,UAAU,WAAY,SAAQ,IAAI;
|
|
1
|
+
{"version":3,"file":"fileManagement.d.ts","sourceRoot":"","sources":["../../../../../src/ui/utils/fileManagement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,6BAA6B,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C;;;;GAIG;AACH,UAAU,WAAY,SAAQ,IAAI;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC3B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAO5E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAC1B,WAAW,EAAE,MAAM,GACjB,cAAc,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAYzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gCAAgC,CACrD,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,GAAG,gBAAgB,GAAG,IAAI,CAAC,CAuEhD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EAEd,WAAW,EAAE,GAAG,EAChB,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,gBAG9C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface NetInfoLikeState {
|
|
2
|
+
isConnected: boolean | null;
|
|
3
|
+
isInternetReachable?: boolean | null;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Mirrors Bloom `ConnectionStatusToasts` reachability semantics: a link that
|
|
7
|
+
* reports connected but explicitly unreachable (captive portal, no route) counts
|
|
8
|
+
* as offline.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isNetConnectivityOnline(state: NetInfoLikeState): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Conservative offline verdict for boot-path probes. Unknown / probing states
|
|
13
|
+
* (`null`, timed-out fetch) resolve to "not offline" so a flaky probe never
|
|
14
|
+
* skips a real sign-in.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isNetConnectivityExplicitlyOffline(state: NetInfoLikeState | null | undefined): boolean;
|
|
17
|
+
//# sourceMappingURL=netConnectivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netConnectivity.d.ts","sourceRoot":"","sources":["../../../../../src/ui/utils/netConnectivity.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAExE;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GACzC,OAAO,CAKT"}
|
|
@@ -4,12 +4,21 @@ import type { OAuthSessionCommitInput } from '../oauth/types.js';
|
|
|
4
4
|
* When the RP lands with `?code=` after signing in at auth.oxy.so, exchange the
|
|
5
5
|
* code for a device-first session before cold boot runs.
|
|
6
6
|
*
|
|
7
|
-
* This is the REDIRECT transport's return leg.
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
7
|
+
* This is the REDIRECT transport's return leg. The SDK never starts a full-page
|
|
8
|
+
* authorize navigation on its own any more (#691 phase 7b), but this lane is
|
|
9
|
+
* still load-bearing: a browser-BLOCKED sign-in popup falls back to a full-page
|
|
10
|
+
* redirect (`startWebOAuthSignIn`), and that redirect comes back here.
|
|
11
|
+
*
|
|
12
|
+
* It owns only what is specific to a full-page round trip — reading the code off
|
|
13
|
+
* the URL, recovering the handshake `sessionStorage` carried across the
|
|
14
|
+
* navigation, and cleaning both up afterwards — and delegates state validation,
|
|
15
|
+
* the PKCE exchange, and the session commit to `completeOAuthCode`, the same
|
|
16
|
+
* function the popup transport runs.
|
|
17
|
+
*
|
|
18
|
+
* It is also the SINGLE cleanup path for an OAuth `error` landing on the URL:
|
|
19
|
+
* any `?error=…` (including an `error=login_required` left over from the
|
|
20
|
+
* now-deleted silent restore) is stripped along with `state` /
|
|
21
|
+
* `error_description`, and the stale PKCE handshake is cleared.
|
|
13
22
|
*/
|
|
14
23
|
export declare function tryCompleteOAuthReturn(opts: {
|
|
15
24
|
oxyServices: OxyServices;
|
|
@@ -36,10 +45,4 @@ export declare function tryCompleteOAuthReturn(opts: {
|
|
|
36
45
|
* not push a spurious event at every listener on the page.
|
|
37
46
|
*/
|
|
38
47
|
export declare function replaceUrlAfterOAuthReturn(fallbackUrl: string): void;
|
|
39
|
-
/**
|
|
40
|
-
* When auth.oxy.so hub-sync redeem fails, the IdP redirects back with
|
|
41
|
-
* `?hub_sync=failed`. Strip the param and log so cold boot can continue
|
|
42
|
-
* without leaving a stale query string.
|
|
43
|
-
*/
|
|
44
|
-
export declare function consumeHubSyncFailure(): boolean;
|
|
45
48
|
//# sourceMappingURL=oauthReturn.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthReturn.d.ts","sourceRoot":"","sources":["../../../../../src/ui/utils/oauthReturn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAgB,CAAC;AAG9D
|
|
1
|
+
{"version":3,"file":"oauthReturn.d.ts","sourceRoot":"","sources":["../../../../../src/ui/utils/oauthReturn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAgB,CAAC;AAG9D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE,GAAG,OAAO,CAAC,OAAO,CAAC,CA6CnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAuBpE"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* User display name and date formatting utilities.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Display-name helpers follow the API contract: prefer `name.displayName` when
|
|
5
|
+
* present, otherwise fall back to the normalized handle via
|
|
6
|
+
* `getNormalizedUserHandle`.
|
|
7
7
|
*/
|
|
8
8
|
import { type DisplayNameUserShape } from '@oxyhq/core';
|
|
9
9
|
/**
|
|
@@ -13,18 +13,11 @@ export declare const formatDate: (dateString: string | undefined | null | Date)
|
|
|
13
13
|
/**
|
|
14
14
|
* Gets a display name from user data.
|
|
15
15
|
*
|
|
16
|
-
* Prefers
|
|
17
|
-
* (derived from publicKey) → translated "Unnamed".
|
|
18
|
-
*
|
|
19
|
-
* @param user - User-like object with optional name/username/publicKey
|
|
20
|
-
* @param locale - Optional locale for the final fallback label
|
|
16
|
+
* Prefers API `name.displayName`, then the normalized handle.
|
|
21
17
|
*/
|
|
22
|
-
export declare const getDisplayName: (user: DisplayNameUserShape | null | undefined
|
|
18
|
+
export declare const getDisplayName: (user: DisplayNameUserShape | null | undefined) => string;
|
|
23
19
|
/**
|
|
24
|
-
* Gets a short display name (first
|
|
25
|
-
*
|
|
26
|
-
* Used for compact UI (e.g. greetings). Falls back to the full display name
|
|
27
|
-
* helper, which also handles publicKey-only accounts.
|
|
20
|
+
* Gets a short display name (first token) for compact UI.
|
|
28
21
|
*/
|
|
29
|
-
export declare const getShortDisplayName: (user: DisplayNameUserShape | null | undefined
|
|
22
|
+
export declare const getShortDisplayName: (user: DisplayNameUserShape | null | undefined) => string;
|
|
30
23
|
//# sourceMappingURL=userUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userUtils.d.ts","sourceRoot":"","sources":["../../../../../src/ui/utils/userUtils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"userUtils.d.ts","sourceRoot":"","sources":["../../../../../src/ui/utils/userUtils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAA2B,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,YAAY,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,KAAG,MAezE,CAAC;AAQF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,oBAAoB,GAAG,IAAI,GAAG,SAAS,KAC5C,MAIF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,oBAAoB,GAAG,IAAI,GAAG,SAAS,KAC5C,MAcF,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
declare module 'expo-image-picker' {
|
|
2
|
+
export interface ImagePickerAsset {
|
|
3
|
+
uri: string;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface ImagePickerSuccessResult {
|
|
9
|
+
canceled: false;
|
|
10
|
+
assets: ImagePickerAsset[];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface ImagePickerCanceledResult {
|
|
14
|
+
canceled: true;
|
|
15
|
+
assets: null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type ImagePickerResult = ImagePickerSuccessResult | ImagePickerCanceledResult;
|
|
19
|
+
|
|
20
|
+
export interface ImagePickerPermission {
|
|
21
|
+
granted: boolean;
|
|
22
|
+
canAskAgain: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface ImagePickerOptions {
|
|
26
|
+
mediaTypes?: 'images'[];
|
|
27
|
+
allowsMultipleSelection?: boolean;
|
|
28
|
+
quality?: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function launchImageLibraryAsync(options?: ImagePickerOptions): Promise<ImagePickerResult>;
|
|
32
|
+
export function launchCameraAsync(options?: ImagePickerOptions): Promise<ImagePickerResult>;
|
|
33
|
+
export function requestMediaLibraryPermissionsAsync(): Promise<ImagePickerPermission>;
|
|
34
|
+
export function requestCameraPermissionsAsync(): Promise<ImagePickerPermission>;
|
|
35
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/services",
|
|
3
|
-
"version": "26.0.
|
|
3
|
+
"version": "26.0.4",
|
|
4
4
|
"description": "OxyHQ Expo/React Native SDK — UI components, screens, and native features",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -60,6 +60,18 @@
|
|
|
60
60
|
},
|
|
61
61
|
"default": "./lib/module/ui/server.js"
|
|
62
62
|
},
|
|
63
|
+
"./notifications": {
|
|
64
|
+
"react-native": "./src/notifications/deviceNotifications.ts",
|
|
65
|
+
"import": {
|
|
66
|
+
"types": "./lib/typescript/module/notifications/deviceNotifications.d.ts",
|
|
67
|
+
"default": "./lib/module/notifications/deviceNotifications.js"
|
|
68
|
+
},
|
|
69
|
+
"require": {
|
|
70
|
+
"types": "./lib/typescript/commonjs/notifications/deviceNotifications.d.ts",
|
|
71
|
+
"default": "./lib/commonjs/notifications/deviceNotifications.js"
|
|
72
|
+
},
|
|
73
|
+
"default": "./lib/module/notifications/deviceNotifications.js"
|
|
74
|
+
},
|
|
63
75
|
"./plugins/*": "./plugins/*.js",
|
|
64
76
|
"./expo-module.config.json": "./expo-module.config.json",
|
|
65
77
|
"./package.json": "./package.json"
|
|
@@ -126,17 +138,16 @@
|
|
|
126
138
|
}
|
|
127
139
|
},
|
|
128
140
|
"dependencies": {
|
|
129
|
-
"@oxyhq/contracts": "0.
|
|
130
|
-
"@oxyhq/core": "^12.10.6",
|
|
141
|
+
"@oxyhq/contracts": "0.21.0",
|
|
131
142
|
"@simplewebauthn/browser": "^13.3.0",
|
|
132
143
|
"color": "^4.2.3"
|
|
133
144
|
},
|
|
134
145
|
"devDependencies": {
|
|
135
146
|
"@biomejs/biome": "^1.9.4",
|
|
136
|
-
"@commitlint/cli": "^
|
|
137
|
-
"@commitlint/config-conventional": "^
|
|
147
|
+
"@commitlint/cli": "^21.2.1",
|
|
148
|
+
"@commitlint/config-conventional": "^21.2.0",
|
|
138
149
|
"@expo/vector-icons": "^15.0.3",
|
|
139
|
-
"@oxyhq/core": "
|
|
150
|
+
"@oxyhq/core": "17.0.2",
|
|
140
151
|
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
141
152
|
"@react-native-community/netinfo": "^11.4.1",
|
|
142
153
|
"@react-native/babel-preset": "^0.86.0",
|
|
@@ -157,12 +168,13 @@
|
|
|
157
168
|
"expo-image": "~57.0.1",
|
|
158
169
|
"expo-linear-gradient": "~57.0.1",
|
|
159
170
|
"expo-notifications": "~57.0.5",
|
|
171
|
+
"expo-web-browser": "~57.0.1",
|
|
160
172
|
"husky": "^4.3.8",
|
|
161
173
|
"jest": "~29.7.0",
|
|
162
174
|
"lint-staged": "^15.2.4",
|
|
163
175
|
"nativewind": "5.0.0-preview.3",
|
|
164
176
|
"react-native-builder-bob": "^0.43.0",
|
|
165
|
-
"react-native-css": "^3.0.
|
|
177
|
+
"react-native-css": "^3.0.6",
|
|
166
178
|
"react-native-gesture-handler": "~2.32.0",
|
|
167
179
|
"react-native-keyboard-controller": "1.21.13",
|
|
168
180
|
"react-native-qrcode-svg": "^6.3.0",
|
|
@@ -178,9 +190,9 @@
|
|
|
178
190
|
"peerDependencies": {
|
|
179
191
|
"@expo/vector-icons": "^15.0.3",
|
|
180
192
|
"@oxyhq/bloom": ">=0.59.0",
|
|
181
|
-
"@oxyhq/core": "^
|
|
193
|
+
"@oxyhq/core": "^17.0.2",
|
|
182
194
|
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
183
|
-
"@react-native-community/netinfo": "
|
|
195
|
+
"@react-native-community/netinfo": ">=11.4.1",
|
|
184
196
|
"@tanstack/query-async-storage-persister": "^5.101",
|
|
185
197
|
"@tanstack/query-sync-storage-persister": "^5.101",
|
|
186
198
|
"@tanstack/react-query": "^5.101",
|
|
@@ -196,16 +208,18 @@
|
|
|
196
208
|
"expo-image-manipulator": ">=56.0.0",
|
|
197
209
|
"expo-image-picker": ">=56.0.0",
|
|
198
210
|
"expo-linear-gradient": ">=56.0.0",
|
|
199
|
-
"expo-notifications": ">=56.0.0",
|
|
200
211
|
"expo-modules-core": "*",
|
|
212
|
+
"expo-notifications": ">=56.0.0",
|
|
213
|
+
"expo-web-browser": ">=56.0.0",
|
|
201
214
|
"nativewind": ">=5.0.0",
|
|
215
|
+
"react-native-css": "^3.0.6",
|
|
202
216
|
"react": ">=18.0.0",
|
|
203
217
|
"react-native": ">=0.85.0",
|
|
204
|
-
"react-native-gesture-handler": "
|
|
218
|
+
"react-native-gesture-handler": ">=2.31.1",
|
|
205
219
|
"react-native-keyboard-controller": ">=1.21.0",
|
|
206
220
|
"react-native-qrcode-svg": "^6.3.0",
|
|
207
221
|
"react-native-reanimated": ">=4.3.0",
|
|
208
|
-
"react-native-safe-area-context": "
|
|
222
|
+
"react-native-safe-area-context": ">=5.7.0",
|
|
209
223
|
"react-native-svg": ">=15.15.0",
|
|
210
224
|
"socket.io-client": "^4.8.0",
|
|
211
225
|
"zustand": "^5.0.0"
|
|
@@ -214,6 +228,9 @@
|
|
|
214
228
|
"nativewind": {
|
|
215
229
|
"optional": true
|
|
216
230
|
},
|
|
231
|
+
"react-native-css": {
|
|
232
|
+
"optional": true
|
|
233
|
+
},
|
|
217
234
|
"expo-modules-core": {
|
|
218
235
|
"optional": true
|
|
219
236
|
},
|
|
@@ -252,6 +269,9 @@
|
|
|
252
269
|
},
|
|
253
270
|
"expo-image-picker": {
|
|
254
271
|
"optional": true
|
|
272
|
+
},
|
|
273
|
+
"expo-web-browser": {
|
|
274
|
+
"optional": true
|
|
255
275
|
}
|
|
256
276
|
},
|
|
257
277
|
"react-native-builder-bob": {
|
package/src/index.ts
CHANGED
|
@@ -201,23 +201,25 @@ export { useFileFiltering } from './ui/hooks/useFileFiltering';
|
|
|
201
201
|
export type { ViewMode, SortBy, SortOrder } from './ui/hooks/useFileFiltering';
|
|
202
202
|
|
|
203
203
|
// ---------------------------------------------------------------------------
|
|
204
|
-
// Device notifications
|
|
204
|
+
// Device notifications — DELIBERATELY NOT EXPORTED HERE
|
|
205
205
|
// ---------------------------------------------------------------------------
|
|
206
|
-
// The
|
|
207
|
-
//
|
|
208
|
-
//
|
|
209
|
-
//
|
|
210
|
-
//
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
206
|
+
// The `expo-notifications` adapter lives behind its own entry point:
|
|
207
|
+
//
|
|
208
|
+
// import { getExpoPushToken } from '@oxyhq/services/notifications';
|
|
209
|
+
//
|
|
210
|
+
// It is the one module in this package whose dependencies (`expo-notifications`
|
|
211
|
+
// and `expo-constants`) are optional peers that an app which does not use push
|
|
212
|
+
// genuinely never installs. Re-exporting it from THIS barrel is what made that
|
|
213
|
+
// optionality a lie: a barrel export puts the module in the import graph of
|
|
214
|
+
// every consumer, and `tsc` must resolve the specifier of an `import()` even
|
|
215
|
+
// when the call is lazy and wrapped in try/catch — so every consumer without
|
|
216
|
+
// `expo-notifications` failed with TS2307 (plus TS7006 cascades) whether or not
|
|
217
|
+
// it had ever heard of push. Behind a subpath the module is only ever pulled in
|
|
218
|
+
// by an app that asked for it, which is what "optional peer" is supposed to
|
|
219
|
+
// mean.
|
|
220
|
+
//
|
|
221
|
+
// Do NOT re-add these exports here. `__tests__/notifications/barrelIsolation.test.ts`
|
|
222
|
+
// fails if you do.
|
|
221
223
|
|
|
222
224
|
// ---------------------------------------------------------------------------
|
|
223
225
|
// UI components
|
|
@@ -273,6 +275,7 @@ export { LogoText } from './ui/components/logo/LogoText';
|
|
|
273
275
|
// `useOxy().openAccountDialog`.
|
|
274
276
|
export { default as ProfileButton } from './ui/components/ProfileButton';
|
|
275
277
|
export type { ProfileButtonProps } from './ui/components/ProfileButton';
|
|
278
|
+
export type { AccountDialogMenuItem } from './ui/navigation/accountDialogManager';
|
|
276
279
|
|
|
277
280
|
// The account switcher/sign-in/sign-up chooser WITHOUT dialog chrome — the
|
|
278
281
|
// surface stack presents `OxyAccountDialogScreen` (which renders this) into
|
|
@@ -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
|
|
@@ -297,6 +316,69 @@ export type ForegroundPresentation = 'show' | 'suppress';
|
|
|
297
316
|
*/
|
|
298
317
|
let foregroundHandlerAttempted = false;
|
|
299
318
|
|
|
319
|
+
/** How prominently Android surfaces a channel's notifications. */
|
|
320
|
+
export type NotificationChannelImportance = 'default' | 'high';
|
|
321
|
+
|
|
322
|
+
/** An Android notification channel this app delivers on. */
|
|
323
|
+
export interface NotificationChannelSpec {
|
|
324
|
+
/**
|
|
325
|
+
* The channel id. It MUST match the id the sender attaches: Android 8+ drops
|
|
326
|
+
* a notification whose channel the app has not created, silently and with no
|
|
327
|
+
* error on either side, which is the hardest push symptom there is to
|
|
328
|
+
* diagnose. Ids that cross the wire belong in `@oxyhq/contracts`, not in a
|
|
329
|
+
* string typed on both sides.
|
|
330
|
+
*/
|
|
331
|
+
id: string;
|
|
332
|
+
/** User-visible channel name — app copy, so the caller localizes it. */
|
|
333
|
+
name: string;
|
|
334
|
+
/** User-visible description shown in Android's notification settings. */
|
|
335
|
+
description?: string;
|
|
336
|
+
importance?: NotificationChannelImportance;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Create (or update) an Android notification channel.
|
|
341
|
+
*
|
|
342
|
+
* A no-op everywhere but Android: iOS has no channels, and web never loads the
|
|
343
|
+
* native module. Call it BEFORE registering a push token, so the very first
|
|
344
|
+
* notification the server sends already has a channel to land on.
|
|
345
|
+
*
|
|
346
|
+
* Failure is non-fatal and logged: a missing channel costs visibility, and
|
|
347
|
+
* refusing to register a token over it would cost the feature entirely.
|
|
348
|
+
*
|
|
349
|
+
* @returns Whether the channel was actually created (`false` off Android, or
|
|
350
|
+
* when the native module is unavailable, or when creation failed).
|
|
351
|
+
*/
|
|
352
|
+
export async function ensureNotificationChannel(
|
|
353
|
+
spec: NotificationChannelSpec,
|
|
354
|
+
): Promise<boolean> {
|
|
355
|
+
if (Platform.OS !== 'android') {
|
|
356
|
+
return false;
|
|
357
|
+
}
|
|
358
|
+
const notifications = await loadNotifications();
|
|
359
|
+
if (!notifications) {
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
try {
|
|
363
|
+
await notifications.setNotificationChannelAsync(spec.id, {
|
|
364
|
+
name: spec.name,
|
|
365
|
+
importance:
|
|
366
|
+
spec.importance === 'high'
|
|
367
|
+
? notifications.AndroidImportance.HIGH
|
|
368
|
+
: notifications.AndroidImportance.DEFAULT,
|
|
369
|
+
...(spec.description ? { description: spec.description } : {}),
|
|
370
|
+
});
|
|
371
|
+
return true;
|
|
372
|
+
} catch (error) {
|
|
373
|
+
log.warn(
|
|
374
|
+
'could not create the notification channel',
|
|
375
|
+
{ method: 'ensureNotificationChannel', channelId: spec.id },
|
|
376
|
+
error,
|
|
377
|
+
);
|
|
378
|
+
return false;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
300
382
|
/**
|
|
301
383
|
* Install the ONE process-wide handler that decides whether an incoming
|
|
302
384
|
* notification is shown while the app is in the FOREGROUND.
|