@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,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.3",
|
|
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,17 @@
|
|
|
126
138
|
}
|
|
127
139
|
},
|
|
128
140
|
"dependencies": {
|
|
129
|
-
"@oxyhq/contracts": "0.
|
|
130
|
-
"@oxyhq/core": "^
|
|
141
|
+
"@oxyhq/contracts": "0.21.0",
|
|
142
|
+
"@oxyhq/core": "^17.0.2",
|
|
131
143
|
"@simplewebauthn/browser": "^13.3.0",
|
|
132
144
|
"color": "^4.2.3"
|
|
133
145
|
},
|
|
134
146
|
"devDependencies": {
|
|
135
147
|
"@biomejs/biome": "^1.9.4",
|
|
136
|
-
"@commitlint/cli": "^
|
|
137
|
-
"@commitlint/config-conventional": "^
|
|
148
|
+
"@commitlint/cli": "^21.2.1",
|
|
149
|
+
"@commitlint/config-conventional": "^21.2.0",
|
|
138
150
|
"@expo/vector-icons": "^15.0.3",
|
|
139
|
-
"@oxyhq/core": "
|
|
151
|
+
"@oxyhq/core": "17.0.2",
|
|
140
152
|
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
141
153
|
"@react-native-community/netinfo": "^11.4.1",
|
|
142
154
|
"@react-native/babel-preset": "^0.86.0",
|
|
@@ -157,12 +169,13 @@
|
|
|
157
169
|
"expo-image": "~57.0.1",
|
|
158
170
|
"expo-linear-gradient": "~57.0.1",
|
|
159
171
|
"expo-notifications": "~57.0.5",
|
|
172
|
+
"expo-web-browser": "~57.0.1",
|
|
160
173
|
"husky": "^4.3.8",
|
|
161
174
|
"jest": "~29.7.0",
|
|
162
175
|
"lint-staged": "^15.2.4",
|
|
163
176
|
"nativewind": "5.0.0-preview.3",
|
|
164
177
|
"react-native-builder-bob": "^0.43.0",
|
|
165
|
-
"react-native-css": "^3.0.
|
|
178
|
+
"react-native-css": "^3.0.6",
|
|
166
179
|
"react-native-gesture-handler": "~2.32.0",
|
|
167
180
|
"react-native-keyboard-controller": "1.21.13",
|
|
168
181
|
"react-native-qrcode-svg": "^6.3.0",
|
|
@@ -178,9 +191,9 @@
|
|
|
178
191
|
"peerDependencies": {
|
|
179
192
|
"@expo/vector-icons": "^15.0.3",
|
|
180
193
|
"@oxyhq/bloom": ">=0.59.0",
|
|
181
|
-
"@oxyhq/core": "^
|
|
194
|
+
"@oxyhq/core": "^17.0.2",
|
|
182
195
|
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
183
|
-
"@react-native-community/netinfo": "
|
|
196
|
+
"@react-native-community/netinfo": ">=11.4.1",
|
|
184
197
|
"@tanstack/query-async-storage-persister": "^5.101",
|
|
185
198
|
"@tanstack/query-sync-storage-persister": "^5.101",
|
|
186
199
|
"@tanstack/react-query": "^5.101",
|
|
@@ -196,16 +209,18 @@
|
|
|
196
209
|
"expo-image-manipulator": ">=56.0.0",
|
|
197
210
|
"expo-image-picker": ">=56.0.0",
|
|
198
211
|
"expo-linear-gradient": ">=56.0.0",
|
|
199
|
-
"expo-notifications": ">=56.0.0",
|
|
200
212
|
"expo-modules-core": "*",
|
|
213
|
+
"expo-notifications": ">=56.0.0",
|
|
214
|
+
"expo-web-browser": ">=56.0.0",
|
|
201
215
|
"nativewind": ">=5.0.0",
|
|
216
|
+
"react-native-css": "^3.0.6",
|
|
202
217
|
"react": ">=18.0.0",
|
|
203
218
|
"react-native": ">=0.85.0",
|
|
204
|
-
"react-native-gesture-handler": "
|
|
219
|
+
"react-native-gesture-handler": ">=2.31.1",
|
|
205
220
|
"react-native-keyboard-controller": ">=1.21.0",
|
|
206
221
|
"react-native-qrcode-svg": "^6.3.0",
|
|
207
222
|
"react-native-reanimated": ">=4.3.0",
|
|
208
|
-
"react-native-safe-area-context": "
|
|
223
|
+
"react-native-safe-area-context": ">=5.7.0",
|
|
209
224
|
"react-native-svg": ">=15.15.0",
|
|
210
225
|
"socket.io-client": "^4.8.0",
|
|
211
226
|
"zustand": "^5.0.0"
|
|
@@ -214,6 +229,9 @@
|
|
|
214
229
|
"nativewind": {
|
|
215
230
|
"optional": true
|
|
216
231
|
},
|
|
232
|
+
"react-native-css": {
|
|
233
|
+
"optional": true
|
|
234
|
+
},
|
|
217
235
|
"expo-modules-core": {
|
|
218
236
|
"optional": true
|
|
219
237
|
},
|
|
@@ -252,6 +270,9 @@
|
|
|
252
270
|
},
|
|
253
271
|
"expo-image-picker": {
|
|
254
272
|
"optional": true
|
|
273
|
+
},
|
|
274
|
+
"expo-web-browser": {
|
|
275
|
+
"optional": true
|
|
255
276
|
}
|
|
256
277
|
},
|
|
257
278
|
"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.
|