@oxyhq/services 6.9.44 → 6.9.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/ui/components/OxyPayButton.js +4 -2
- package/lib/commonjs/ui/components/OxyPayButton.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +6 -5
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +83 -82
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/SignInModal.js +271 -102
- package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +76 -121
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js +24 -15
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +32 -18
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/commonjs/ui/components/icon/OxyIcon.js +5 -4
- package/lib/commonjs/ui/components/icon/OxyIcon.js.map +1 -1
- package/lib/commonjs/ui/components/index.js +0 -35
- package/lib/commonjs/ui/components/index.js.map +1 -1
- package/lib/commonjs/ui/components/internal/PinInput.js +3 -2
- package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -1
- package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +83 -219
- package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +26 -13
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentMethodStep.js +50 -28
- package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +83 -48
- package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +11 -10
- package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +38 -23
- package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/commonjs/ui/constants/theme.js +2 -2
- package/lib/commonjs/ui/constants/theme.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +4 -3
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +13 -13
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +117 -142
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +112 -78
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +213 -144
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js +26 -14
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +57 -51
- package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +108 -86
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HistoryViewScreen.js +109 -130
- package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +15 -8
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +60 -54
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +12 -9
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +66 -93
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +159 -190
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +20 -22
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SearchSettingsScreen.js +16 -17
- package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SessionManagementScreen.js +127 -70
- package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserLinksScreen.js +13 -29
- package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +110 -52
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +3 -5
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/commonjs/ui/utils/fileManagement.js +0 -21
- package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
- package/lib/module/ui/components/OxyPayButton.js +4 -2
- package/lib/module/ui/components/OxyPayButton.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +6 -5
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +84 -83
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/SignInModal.js +271 -100
- package/lib/module/ui/components/SignInModal.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js +76 -122
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileViewer.js +24 -15
- package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js +32 -19
- package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/module/ui/components/icon/OxyIcon.js +5 -4
- package/lib/module/ui/components/icon/OxyIcon.js.map +1 -1
- package/lib/module/ui/components/index.js +0 -5
- package/lib/module/ui/components/index.js.map +1 -1
- package/lib/module/ui/components/internal/PinInput.js +3 -2
- package/lib/module/ui/components/internal/PinInput.js.map +1 -1
- package/lib/module/ui/components/modals/DeleteAccountModal.js +83 -220
- package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentDetailsStep.js +26 -13
- package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentMethodStep.js +49 -26
- package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentReviewStep.js +84 -48
- package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentSuccessStep.js +11 -9
- package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentSummaryStep.js +38 -22
- package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/module/ui/constants/theme.js +2 -2
- package/lib/module/ui/constants/theme.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +4 -3
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +12 -13
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +117 -142
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +112 -78
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +213 -145
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js +28 -16
- package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +48 -42
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +110 -88
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js +110 -131
- package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +16 -9
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LegalDocumentsScreen.js +61 -55
- package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/module/ui/screens/PaymentGatewayScreen.js +12 -9
- package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +66 -94
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +161 -192
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js +21 -23
- package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/module/ui/screens/SearchSettingsScreen.js +17 -18
- package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js +128 -72
- package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/UserLinksScreen.js +15 -31
- package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +110 -52
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js +4 -6
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/module/ui/utils/fileManagement.js +0 -20
- package/lib/module/ui/utils/fileManagement.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyPayButton.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 +0 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts +3 -4
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts +2 -3
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/icon/OxyIcon.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/index.d.ts +0 -5
- package/lib/typescript/commonjs/ui/components/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/internal/PinInput.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/SessionManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/karma/KarmaFAQScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +0 -4
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyPayButton.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 +0 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts +3 -4
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts +2 -3
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/icon/OxyIcon.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/index.d.ts +0 -5
- package/lib/typescript/module/ui/components/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/internal/PinInput.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts +2 -2
- package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/SessionManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/karma/KarmaFAQScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/fileManagement.d.ts +0 -4
- package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/ui/components/OxyPayButton.tsx +5 -3
- package/src/ui/components/OxyProvider.tsx +6 -5
- package/src/ui/components/OxySignInButton.tsx +82 -81
- package/src/ui/components/SignInModal.tsx +186 -42
- package/src/ui/components/fileManagement/FileDetailsModal.tsx +69 -99
- package/src/ui/components/fileManagement/FileViewer.tsx +25 -15
- package/src/ui/components/fileManagement/UploadPreview.tsx +58 -46
- package/src/ui/components/icon/OxyIcon.tsx +5 -4
- package/src/ui/components/index.ts +0 -5
- package/src/ui/components/internal/PinInput.tsx +4 -3
- package/src/ui/components/modals/DeleteAccountModal.tsx +79 -221
- package/src/ui/components/payment/PaymentDetailsStep.tsx +16 -19
- package/src/ui/components/payment/PaymentMethodStep.tsx +33 -35
- package/src/ui/components/payment/PaymentReviewStep.tsx +63 -67
- package/src/ui/components/payment/PaymentSuccessStep.tsx +4 -12
- package/src/ui/components/payment/PaymentSummaryStep.tsx +26 -33
- package/src/ui/constants/theme.ts +2 -2
- package/src/ui/context/hooks/useAuthOperations.ts +4 -3
- package/src/ui/screens/AccountCenterScreen.tsx +36 -139
- package/src/ui/screens/AccountOverviewScreen.tsx +107 -163
- package/src/ui/screens/AccountSettingsScreen.tsx +142 -156
- package/src/ui/screens/AccountSwitcherScreen.tsx +226 -199
- package/src/ui/screens/AccountVerificationScreen.tsx +34 -25
- package/src/ui/screens/FeedbackScreen.tsx +50 -38
- package/src/ui/screens/FileManagementScreen.tsx +88 -88
- package/src/ui/screens/HistoryViewScreen.tsx +79 -207
- package/src/ui/screens/LanguageSelectorScreen.tsx +19 -7
- package/src/ui/screens/LegalDocumentsScreen.tsx +46 -63
- package/src/ui/screens/PaymentGatewayScreen.tsx +11 -12
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +73 -93
- package/src/ui/screens/PrivacySettingsScreen.tsx +81 -193
- package/src/ui/screens/SavesCollectionsScreen.tsx +23 -23
- package/src/ui/screens/SearchSettingsScreen.tsx +11 -19
- package/src/ui/screens/SessionManagementScreen.tsx +130 -76
- package/src/ui/screens/UserLinksScreen.tsx +15 -32
- package/src/ui/screens/WelcomeNewUserScreen.tsx +46 -20
- package/src/ui/screens/karma/KarmaFAQScreen.tsx +4 -6
- package/src/ui/utils/fileManagement.ts +0 -30
- package/lib/commonjs/ui/components/GroupedItem.js +0 -138
- package/lib/commonjs/ui/components/GroupedItem.js.map +0 -1
- package/lib/commonjs/ui/components/GroupedSection.js +0 -41
- package/lib/commonjs/ui/components/GroupedSection.js.map +0 -1
- package/lib/commonjs/ui/components/Section.js +0 -39
- package/lib/commonjs/ui/components/Section.js.map +0 -1
- package/lib/commonjs/ui/components/SectionTitle.js +0 -29
- package/lib/commonjs/ui/components/SectionTitle.js.map +0 -1
- package/lib/commonjs/ui/components/SettingRow.js +0 -90
- package/lib/commonjs/ui/components/SettingRow.js.map +0 -1
- package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +0 -206
- package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +0 -1
- package/lib/commonjs/ui/utils/confirmAction.js +0 -28
- package/lib/commonjs/ui/utils/confirmAction.js.map +0 -1
- package/lib/module/ui/components/GroupedItem.js +0 -135
- package/lib/module/ui/components/GroupedItem.js.map +0 -1
- package/lib/module/ui/components/GroupedSection.js +0 -37
- package/lib/module/ui/components/GroupedSection.js.map +0 -1
- package/lib/module/ui/components/Section.js +0 -34
- package/lib/module/ui/components/Section.js.map +0 -1
- package/lib/module/ui/components/SectionTitle.js +0 -25
- package/lib/module/ui/components/SectionTitle.js.map +0 -1
- package/lib/module/ui/components/SettingRow.js +0 -85
- package/lib/module/ui/components/SettingRow.js.map +0 -1
- package/lib/module/ui/components/internal/GroupedPillButtons.js +0 -202
- package/lib/module/ui/components/internal/GroupedPillButtons.js.map +0 -1
- package/lib/module/ui/utils/confirmAction.js +0 -25
- package/lib/module/ui/utils/confirmAction.js.map +0 -1
- package/lib/typescript/commonjs/ui/components/GroupedItem.d.ts +0 -24
- package/lib/typescript/commonjs/ui/components/GroupedItem.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/GroupedSection.d.ts +0 -30
- package/lib/typescript/commonjs/ui/components/GroupedSection.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/Section.d.ts +0 -12
- package/lib/typescript/commonjs/ui/components/Section.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SectionTitle.d.ts +0 -10
- package/lib/typescript/commonjs/ui/components/SectionTitle.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SettingRow.d.ts +0 -20
- package/lib/typescript/commonjs/ui/components/SettingRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/internal/GroupedPillButtons.d.ts +0 -24
- package/lib/typescript/commonjs/ui/components/internal/GroupedPillButtons.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/utils/confirmAction.d.ts +0 -7
- package/lib/typescript/commonjs/ui/utils/confirmAction.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/GroupedItem.d.ts +0 -24
- package/lib/typescript/module/ui/components/GroupedItem.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/GroupedSection.d.ts +0 -30
- package/lib/typescript/module/ui/components/GroupedSection.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/Section.d.ts +0 -12
- package/lib/typescript/module/ui/components/Section.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SectionTitle.d.ts +0 -10
- package/lib/typescript/module/ui/components/SectionTitle.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SettingRow.d.ts +0 -20
- package/lib/typescript/module/ui/components/SettingRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/internal/GroupedPillButtons.d.ts +0 -24
- package/lib/typescript/module/ui/components/internal/GroupedPillButtons.d.ts.map +0 -1
- package/lib/typescript/module/ui/utils/confirmAction.d.ts +0 -7
- package/lib/typescript/module/ui/utils/confirmAction.d.ts.map +0 -1
- package/src/ui/components/GroupedItem.tsx +0 -161
- package/src/ui/components/GroupedSection.tsx +0 -60
- package/src/ui/components/Section.tsx +0 -42
- package/src/ui/components/SectionTitle.tsx +0 -27
- package/src/ui/components/SettingRow.tsx +0 -98
- package/src/ui/components/internal/GroupedPillButtons.tsx +0 -250
- package/src/ui/utils/confirmAction.ts +0 -23
|
@@ -7,11 +7,13 @@ import {
|
|
|
7
7
|
TextInput,
|
|
8
8
|
TouchableOpacity,
|
|
9
9
|
ActivityIndicator,
|
|
10
|
-
Alert,
|
|
11
10
|
} from 'react-native';
|
|
12
11
|
import type { BaseScreenProps } from '../types/navigation';
|
|
13
12
|
import { toast } from '../../lib/sonner';
|
|
14
|
-
import
|
|
13
|
+
import * as Prompt from '@oxyhq/bloom/prompt';
|
|
14
|
+
import { usePromptControl } from '@oxyhq/bloom/prompt';
|
|
15
|
+
import { Header } from '../components';
|
|
16
|
+
import { SettingsListGroup } from '@oxyhq/bloom/settings-list';
|
|
15
17
|
import { useI18n } from '../hooks/useI18n';
|
|
16
18
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
17
19
|
import { useOxy } from '../context/OxyContext';
|
|
@@ -27,9 +29,19 @@ const AccountVerificationScreen: React.FC<BaseScreenProps> = ({
|
|
|
27
29
|
const [reason, setReason] = useState('');
|
|
28
30
|
const [evidence, setEvidence] = useState('');
|
|
29
31
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
32
|
+
const [successMessage, setSuccessMessage] = useState('');
|
|
30
33
|
|
|
31
34
|
const bloomTheme = useTheme();
|
|
32
35
|
|
|
36
|
+
// Prompt controls
|
|
37
|
+
const successPrompt = usePromptControl();
|
|
38
|
+
|
|
39
|
+
const handleSuccessAcknowledged = useCallback(() => {
|
|
40
|
+
setReason('');
|
|
41
|
+
setEvidence('');
|
|
42
|
+
goBack?.();
|
|
43
|
+
}, [goBack]);
|
|
44
|
+
|
|
33
45
|
const handleSubmit = useCallback(async () => {
|
|
34
46
|
if (!reason.trim()) {
|
|
35
47
|
toast.error(t('accountVerification.reasonRequired') || 'Please provide a reason for verification');
|
|
@@ -48,20 +60,10 @@ const AccountVerificationScreen: React.FC<BaseScreenProps> = ({
|
|
|
48
60
|
evidence.trim() || undefined
|
|
49
61
|
);
|
|
50
62
|
|
|
51
|
-
|
|
52
|
-
t('accountVerification.
|
|
53
|
-
t('accountVerification.successMessage') || `Your verification request has been submitted. Request ID: ${result.requestId}`,
|
|
54
|
-
[
|
|
55
|
-
{
|
|
56
|
-
text: t('accountVerification.ok') || 'OK',
|
|
57
|
-
onPress: () => {
|
|
58
|
-
setReason('');
|
|
59
|
-
setEvidence('');
|
|
60
|
-
goBack?.();
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
]
|
|
63
|
+
setSuccessMessage(
|
|
64
|
+
t('accountVerification.successMessage') || `Your verification request has been submitted. Request ID: ${result.requestId}`
|
|
64
65
|
);
|
|
66
|
+
successPrompt.open();
|
|
65
67
|
} catch (error: unknown) {
|
|
66
68
|
if (__DEV__) {
|
|
67
69
|
console.error('Failed to submit verification request:', error);
|
|
@@ -72,7 +74,7 @@ const AccountVerificationScreen: React.FC<BaseScreenProps> = ({
|
|
|
72
74
|
} finally {
|
|
73
75
|
setIsSubmitting(false);
|
|
74
76
|
}
|
|
75
|
-
}, [reason, evidence, oxyServices, t,
|
|
77
|
+
}, [reason, evidence, oxyServices, t, successPrompt]);
|
|
76
78
|
|
|
77
79
|
return (
|
|
78
80
|
<View style={[styles.container, { backgroundColor: bloomTheme.colors.background }]}>
|
|
@@ -85,13 +87,13 @@ const AccountVerificationScreen: React.FC<BaseScreenProps> = ({
|
|
|
85
87
|
/>
|
|
86
88
|
|
|
87
89
|
<ScrollView style={styles.content}>
|
|
88
|
-
<
|
|
90
|
+
<SettingsListGroup>
|
|
89
91
|
<Text style={styles.description} className="text-muted-foreground">
|
|
90
92
|
{t('accountVerification.description') || 'Request a verified badge for your account. Verified accounts help establish authenticity and credibility.'}
|
|
91
93
|
</Text>
|
|
92
|
-
</
|
|
94
|
+
</SettingsListGroup>
|
|
93
95
|
|
|
94
|
-
<
|
|
96
|
+
<SettingsListGroup title={t('accountVerification.sections.request') || 'VERIFICATION REQUEST'}>
|
|
95
97
|
<View style={styles.inputGroup}>
|
|
96
98
|
<Text style={styles.label} className="text-foreground">
|
|
97
99
|
{t('accountVerification.reasonLabel') || 'Reason for Verification *'}
|
|
@@ -133,9 +135,9 @@ const AccountVerificationScreen: React.FC<BaseScreenProps> = ({
|
|
|
133
135
|
editable={!isSubmitting}
|
|
134
136
|
/>
|
|
135
137
|
</View>
|
|
136
|
-
</
|
|
138
|
+
</SettingsListGroup>
|
|
137
139
|
|
|
138
|
-
<
|
|
140
|
+
<SettingsListGroup>
|
|
139
141
|
<TouchableOpacity
|
|
140
142
|
style={styles.submitButton}
|
|
141
143
|
className={isSubmitting ? 'bg-muted-foreground' : 'bg-primary'}
|
|
@@ -150,14 +152,22 @@ const AccountVerificationScreen: React.FC<BaseScreenProps> = ({
|
|
|
150
152
|
</Text>
|
|
151
153
|
)}
|
|
152
154
|
</TouchableOpacity>
|
|
153
|
-
</
|
|
155
|
+
</SettingsListGroup>
|
|
154
156
|
|
|
155
|
-
<
|
|
157
|
+
<SettingsListGroup>
|
|
156
158
|
<Text style={styles.note} className="text-muted-foreground">
|
|
157
159
|
{t('accountVerification.note') || 'Note: Verification requests are reviewed manually and may take several days. We will notify you once your request has been reviewed.'}
|
|
158
160
|
</Text>
|
|
159
|
-
</
|
|
161
|
+
</SettingsListGroup>
|
|
160
162
|
</ScrollView>
|
|
163
|
+
<Prompt.Basic
|
|
164
|
+
control={successPrompt}
|
|
165
|
+
title={t('accountVerification.successTitle') || 'Request Submitted'}
|
|
166
|
+
description={successMessage}
|
|
167
|
+
onConfirm={handleSuccessAcknowledged}
|
|
168
|
+
confirmButtonCta={t('accountVerification.ok') || 'OK'}
|
|
169
|
+
showCancel={false}
|
|
170
|
+
/>
|
|
161
171
|
</View>
|
|
162
172
|
);
|
|
163
173
|
};
|
|
@@ -214,4 +224,3 @@ const styles = StyleSheet.create({
|
|
|
214
224
|
});
|
|
215
225
|
|
|
216
226
|
export default React.memo(AccountVerificationScreen);
|
|
217
|
-
|
|
@@ -17,7 +17,8 @@ import { normalizeTheme } from '../utils/themeUtils';
|
|
|
17
17
|
import { Ionicons } from '@expo/vector-icons';
|
|
18
18
|
import { toast } from '../../lib/sonner';
|
|
19
19
|
import { packageInfo } from '@oxyhq/core';
|
|
20
|
-
import {
|
|
20
|
+
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
21
|
+
import { SettingsIcon } from '../components/SettingsIcon';
|
|
21
22
|
import { useI18n } from '../hooks/useI18n';
|
|
22
23
|
import { useOxy } from '../context/OxyContext';
|
|
23
24
|
|
|
@@ -143,40 +144,20 @@ const FeedbackScreen: React.FC<BaseScreenProps> = ({
|
|
|
143
144
|
}
|
|
144
145
|
}, [feedbackData, user, isTypeStepValid, isDetailsStepValid, isContactStepValid, resetForm, setFeedbackState, t]);
|
|
145
146
|
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
id: cat,
|
|
161
|
-
icon: feedbackData.category === cat ? 'check-circle' : 'ellipse-outline',
|
|
162
|
-
iconColor: feedbackData.category === cat ? colors.primary : colors.secondaryText,
|
|
163
|
-
title: cat,
|
|
164
|
-
onPress: () => updateField('category', cat),
|
|
165
|
-
selected: feedbackData.category === cat,
|
|
166
|
-
showChevron: false,
|
|
167
|
-
dense: true,
|
|
168
|
-
})) : []), [feedbackData.type, feedbackData.category, colors.primary, colors.secondaryText, updateField]);
|
|
169
|
-
|
|
170
|
-
const priorityItems = useMemo(() => PRIORITY_LEVELS.map(p => ({
|
|
171
|
-
id: p.id,
|
|
172
|
-
icon: p.icon,
|
|
173
|
-
iconColor: p.color,
|
|
174
|
-
title: p.label,
|
|
175
|
-
onPress: () => updateField('priority', p.id),
|
|
176
|
-
selected: feedbackData.priority === p.id,
|
|
177
|
-
showChevron: false,
|
|
178
|
-
dense: true,
|
|
179
|
-
})), [feedbackData.priority, updateField]);
|
|
147
|
+
const feedbackTypeData = useMemo(() => FEEDBACK_TYPES.map(type => ({
|
|
148
|
+
...type,
|
|
149
|
+
isSelected: feedbackData.type === type.id,
|
|
150
|
+
})), [feedbackData.type]);
|
|
151
|
+
|
|
152
|
+
const categoryData = useMemo(() => (feedbackData.type ? (CATEGORIES[feedbackData.type] || []).map(cat => ({
|
|
153
|
+
name: cat,
|
|
154
|
+
isSelected: feedbackData.category === cat,
|
|
155
|
+
})) : []), [feedbackData.type, feedbackData.category]);
|
|
156
|
+
|
|
157
|
+
const priorityData = useMemo(() => PRIORITY_LEVELS.map(p => ({
|
|
158
|
+
...p,
|
|
159
|
+
isSelected: feedbackData.priority === p.id,
|
|
160
|
+
})), [feedbackData.priority]);
|
|
180
161
|
|
|
181
162
|
const renderTypeStep = () => (
|
|
182
163
|
<Animated.View style={[styles.stepContainer, { opacity: fadeAnim, transform: [{ translateX: slideAnim }] }]}>
|
|
@@ -189,7 +170,18 @@ const FeedbackScreen: React.FC<BaseScreenProps> = ({
|
|
|
189
170
|
</Text>
|
|
190
171
|
</View>
|
|
191
172
|
<View style={styles.fullBleed}>
|
|
192
|
-
<
|
|
173
|
+
<SettingsListGroup>
|
|
174
|
+
{feedbackTypeData.map(type => (
|
|
175
|
+
<SettingsListItem
|
|
176
|
+
key={type.id}
|
|
177
|
+
icon={<SettingsIcon name={type.icon} color={type.color} />}
|
|
178
|
+
title={type.label}
|
|
179
|
+
description={type.description}
|
|
180
|
+
onPress={() => { updateField('type', type.id); updateField('category', ''); }}
|
|
181
|
+
showChevron={false}
|
|
182
|
+
/>
|
|
183
|
+
))}
|
|
184
|
+
</SettingsListGroup>
|
|
193
185
|
</View>
|
|
194
186
|
|
|
195
187
|
{feedbackData.type && (
|
|
@@ -198,7 +190,17 @@ const FeedbackScreen: React.FC<BaseScreenProps> = ({
|
|
|
198
190
|
{t('feedback.category.label') || 'Category'}
|
|
199
191
|
</Text>
|
|
200
192
|
<View style={styles.fullBleed}>
|
|
201
|
-
<
|
|
193
|
+
<SettingsListGroup>
|
|
194
|
+
{categoryData.map(cat => (
|
|
195
|
+
<SettingsListItem
|
|
196
|
+
key={cat.name}
|
|
197
|
+
icon={<SettingsIcon name={cat.isSelected ? 'check-circle' : 'ellipse-outline'} color={cat.isSelected ? colors.primary : colors.secondaryText} />}
|
|
198
|
+
title={cat.name}
|
|
199
|
+
onPress={() => updateField('category', cat.name)}
|
|
200
|
+
showChevron={false}
|
|
201
|
+
/>
|
|
202
|
+
))}
|
|
203
|
+
</SettingsListGroup>
|
|
202
204
|
</View>
|
|
203
205
|
</View>
|
|
204
206
|
)}
|
|
@@ -274,7 +276,17 @@ const FeedbackScreen: React.FC<BaseScreenProps> = ({
|
|
|
274
276
|
{t('feedback.priority.label') || 'Priority Level'}
|
|
275
277
|
</Text>
|
|
276
278
|
<View style={styles.fullBleed}>
|
|
277
|
-
<
|
|
279
|
+
<SettingsListGroup>
|
|
280
|
+
{priorityData.map(p => (
|
|
281
|
+
<SettingsListItem
|
|
282
|
+
key={p.id}
|
|
283
|
+
icon={<SettingsIcon name={p.icon} color={p.color} />}
|
|
284
|
+
title={p.label}
|
|
285
|
+
onPress={() => updateField('priority', p.id)}
|
|
286
|
+
showChevron={false}
|
|
287
|
+
/>
|
|
288
|
+
))}
|
|
289
|
+
</SettingsListGroup>
|
|
278
290
|
</View>
|
|
279
291
|
</View>
|
|
280
292
|
|
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
Image,
|
|
12
12
|
Animated,
|
|
13
13
|
Easing,
|
|
14
|
-
Alert,
|
|
15
14
|
} from 'react-native';
|
|
16
15
|
import { Image as ExpoImage } from 'expo-image';
|
|
17
16
|
import type { FileManagementScreenProps } from '../types/fileManagement';
|
|
@@ -29,6 +28,8 @@ const loadDocumentPicker = async () => {
|
|
|
29
28
|
}
|
|
30
29
|
};
|
|
31
30
|
import { toast } from '../../lib/sonner';
|
|
31
|
+
import * as Prompt from '@oxyhq/bloom/prompt';
|
|
32
|
+
import { usePromptControl } from '@oxyhq/bloom/prompt';
|
|
32
33
|
import { Ionicons } from '@expo/vector-icons';
|
|
33
34
|
// @ts-ignore - MaterialCommunityIcons is available at runtime
|
|
34
35
|
import { MaterialCommunityIcons } from '@expo/vector-icons';
|
|
@@ -36,13 +37,12 @@ import type { FileMetadata } from '@oxyhq/core';
|
|
|
36
37
|
import { useFileStore, useFiles, useUploading as useUploadingStore, useUploadAggregateProgress, useDeleting as useDeletingStore } from '../stores/fileStore';
|
|
37
38
|
import Header from '../components/Header';
|
|
38
39
|
import JustifiedPhotoGrid from '../components/photogrid/JustifiedPhotoGrid';
|
|
39
|
-
import {
|
|
40
|
+
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
40
41
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
41
42
|
import { useOxy } from '../context/OxyContext';
|
|
42
43
|
import { useI18n } from '../hooks/useI18n';
|
|
43
44
|
import { useUploadFile } from '../hooks/mutations/useAccountMutations';
|
|
44
45
|
import {
|
|
45
|
-
confirmAction,
|
|
46
46
|
convertDocumentPickerAssetToFile,
|
|
47
47
|
formatFileSize,
|
|
48
48
|
getFileIcon,
|
|
@@ -51,6 +51,7 @@ import {
|
|
|
51
51
|
import { FileViewer } from '../components/fileManagement/FileViewer';
|
|
52
52
|
import { FileDetailsModal } from '../components/fileManagement/FileDetailsModal';
|
|
53
53
|
import { UploadPreview } from '../components/fileManagement/UploadPreview';
|
|
54
|
+
import { useDialogControl } from '@oxyhq/bloom/dialog';
|
|
54
55
|
import { fileManagementStyles } from '../components/fileManagement/styles';
|
|
55
56
|
import type { OnConfirmFileSelection } from '../types/fileManagement';
|
|
56
57
|
|
|
@@ -133,6 +134,11 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
133
134
|
const { user, oxyServices } = useOxy();
|
|
134
135
|
const { t } = useI18n();
|
|
135
136
|
const uploadFileMutation = useUploadFile();
|
|
137
|
+
// Prompt controls
|
|
138
|
+
const fileDeletePrompt = usePromptControl();
|
|
139
|
+
const bulkDeletePrompt = usePromptControl();
|
|
140
|
+
const visibilityChangePrompt = usePromptControl();
|
|
141
|
+
const [pendingDeleteFile, setPendingDeleteFile] = useState<{ id: string; name: string } | null>(null);
|
|
136
142
|
const files = useFiles();
|
|
137
143
|
// Ensure containerWidth is a number (TypeScript guard)
|
|
138
144
|
const safeContainerWidth: number = typeof containerWidth === 'number' ? containerWidth : 400;
|
|
@@ -143,7 +149,7 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
143
149
|
const [refreshing, setRefreshing] = useState(false);
|
|
144
150
|
const [paging, setPaging] = useState({ offset: 0, limit: 40, total: 0, hasMore: true, loadingMore: false });
|
|
145
151
|
const [selectedFile, setSelectedFile] = useState<FileMetadata | null>(null);
|
|
146
|
-
const
|
|
152
|
+
const fileDetailsControl = useDialogControl();
|
|
147
153
|
// In selectMode we never open the detailed viewer
|
|
148
154
|
const [openedFile, setOpenedFile] = useState<FileMetadata | null>(null);
|
|
149
155
|
const [fileContent, setFileContent] = useState<string | null>(null);
|
|
@@ -889,18 +895,14 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
889
895
|
}
|
|
890
896
|
};
|
|
891
897
|
|
|
892
|
-
const
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
t('fileManagement.deleteFile'),
|
|
897
|
-
t('fileManagement.confirm'),
|
|
898
|
-
t('common.cancel')
|
|
899
|
-
);
|
|
898
|
+
const confirmFileDelete = useCallback((fileId: string, filename: string) => {
|
|
899
|
+
setPendingDeleteFile({ id: fileId, name: filename });
|
|
900
|
+
fileDeletePrompt.open();
|
|
901
|
+
}, [fileDeletePrompt]);
|
|
900
902
|
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
}
|
|
903
|
+
const handleFileDelete = useCallback(async () => {
|
|
904
|
+
if (!pendingDeleteFile) return;
|
|
905
|
+
const { id: fileId } = pendingDeleteFile;
|
|
904
906
|
|
|
905
907
|
try {
|
|
906
908
|
storeSetDeleting(fileId);
|
|
@@ -927,24 +929,17 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
927
929
|
}
|
|
928
930
|
} finally {
|
|
929
931
|
storeSetDeleting(null);
|
|
932
|
+
setPendingDeleteFile(null);
|
|
930
933
|
}
|
|
931
|
-
};
|
|
934
|
+
}, [pendingDeleteFile, storeSetDeleting, oxyServices, loadFiles, t]);
|
|
932
935
|
|
|
933
|
-
const
|
|
936
|
+
const confirmBulkDelete = useCallback(() => {
|
|
934
937
|
if (selectedIds.size === 0) return;
|
|
938
|
+
bulkDeletePrompt.open();
|
|
939
|
+
}, [selectedIds.size, bulkDeletePrompt]);
|
|
935
940
|
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
const selectedFiles = Array.from(selectedIds).map(id => fileMap[id]).filter(Boolean);
|
|
939
|
-
|
|
940
|
-
const confirmed = await confirmAction(
|
|
941
|
-
t('fileManagement.confirms.deleteFiles', { count: selectedFiles.length }),
|
|
942
|
-
t('fileManagement.deleteFiles'),
|
|
943
|
-
t('fileManagement.confirm'),
|
|
944
|
-
t('common.cancel')
|
|
945
|
-
);
|
|
946
|
-
|
|
947
|
-
if (!confirmed) return;
|
|
941
|
+
const handleBulkDelete = useCallback(async () => {
|
|
942
|
+
if (selectedIds.size === 0) return;
|
|
948
943
|
|
|
949
944
|
try {
|
|
950
945
|
const deletePromises = Array.from(selectedIds).map(async (fileId) => {
|
|
@@ -1119,7 +1114,7 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1119
1114
|
|
|
1120
1115
|
const showFileDetailsModal = (file: FileMetadata) => {
|
|
1121
1116
|
setSelectedFile(file);
|
|
1122
|
-
|
|
1117
|
+
fileDetailsControl.open();
|
|
1123
1118
|
};
|
|
1124
1119
|
|
|
1125
1120
|
const renderSimplePhotoItem = useCallback((photo: FileMetadata, index: number) => {
|
|
@@ -1350,9 +1345,7 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1350
1345
|
{/* Always show delete button for debugging */}
|
|
1351
1346
|
<TouchableOpacity
|
|
1352
1347
|
style={[fileManagementStyles.actionButton, { backgroundColor: bloomTheme.isDark ? '#400000' : '#FFEBEE' }]}
|
|
1353
|
-
onPress={() =>
|
|
1354
|
-
handleFileDelete(file.id, file.filename);
|
|
1355
|
-
}}
|
|
1348
|
+
onPress={() => confirmFileDelete(file.id, file.filename)}
|
|
1356
1349
|
disabled={deleting === file.id}
|
|
1357
1350
|
>
|
|
1358
1351
|
{deleting === file.id ? (
|
|
@@ -1367,8 +1360,8 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1367
1360
|
);
|
|
1368
1361
|
};
|
|
1369
1362
|
|
|
1370
|
-
//
|
|
1371
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
1363
|
+
// SettingsListItem-based file items (for 'all' view)
|
|
1364
|
+
// biome-ignore lint/suspicious/noExplicitAny: file items have dynamic props
|
|
1372
1365
|
const groupedFileItems: any[] = useMemo(() => {
|
|
1373
1366
|
// filteredFiles is already sorted, so just use it directly
|
|
1374
1367
|
const sortedFiles = filteredFiles;
|
|
@@ -1385,11 +1378,11 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1385
1378
|
const hasPreview = isImage || isPDF || isVideo;
|
|
1386
1379
|
const isSelected = selectedIds.has(file.id);
|
|
1387
1380
|
|
|
1388
|
-
// Create
|
|
1389
|
-
let
|
|
1381
|
+
// Create icon for preview thumbnails (36x36)
|
|
1382
|
+
let fileIcon: React.ReactNode | undefined;
|
|
1390
1383
|
if (hasPreview) {
|
|
1391
1384
|
if (isImage) {
|
|
1392
|
-
|
|
1385
|
+
fileIcon = (
|
|
1393
1386
|
<View style={{ width: 36, height: 36, borderRadius: 18, overflow: 'hidden' }}>
|
|
1394
1387
|
<ExpoImage
|
|
1395
1388
|
source={{ uri: getSafeDownloadUrlCallback(file, 'thumb') }}
|
|
@@ -1405,7 +1398,7 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1405
1398
|
</View>
|
|
1406
1399
|
);
|
|
1407
1400
|
} else if (isVideo) {
|
|
1408
|
-
|
|
1401
|
+
fileIcon = (
|
|
1409
1402
|
<View style={{ width: 36, height: 36, borderRadius: 18, overflow: 'hidden', backgroundColor: '#000000', position: 'relative' }}>
|
|
1410
1403
|
<ExpoImage
|
|
1411
1404
|
source={{ uri: getSafeDownloadUrlCallback(file, 'thumb') }}
|
|
@@ -1424,7 +1417,7 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1424
1417
|
</View>
|
|
1425
1418
|
);
|
|
1426
1419
|
} else if (isPDF) {
|
|
1427
|
-
|
|
1420
|
+
fileIcon = (
|
|
1428
1421
|
<View style={{ width: 36, height: 36, borderRadius: 18, alignItems: 'center', justifyContent: 'center', backgroundColor: '#FF6B6B20' }}>
|
|
1429
1422
|
<Ionicons name="document" size={20} color={colors.primary} />
|
|
1430
1423
|
</View>
|
|
@@ -1434,12 +1427,9 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1434
1427
|
|
|
1435
1428
|
return {
|
|
1436
1429
|
id: file.id,
|
|
1437
|
-
|
|
1438
|
-
icon: !hasPreview ? getFileIcon(file.contentType) : undefined,
|
|
1439
|
-
iconColor: colors.primary,
|
|
1430
|
+
icon: fileIcon ?? (!hasPreview ? <Ionicons name={getFileIcon(file.contentType)} size={20} color={colors.primary} /> : undefined),
|
|
1440
1431
|
title: file.filename,
|
|
1441
|
-
|
|
1442
|
-
theme: theme as 'light' | 'dark',
|
|
1432
|
+
description: `${formatFileSize(file.length)} • ${new Date(file.uploadDate).toLocaleDateString()}`,
|
|
1443
1433
|
onPress: () => {
|
|
1444
1434
|
// Support selection in regular mode with long press or if already selecting
|
|
1445
1435
|
if (!selectMode && selectedIds.size > 0) {
|
|
@@ -1449,20 +1439,8 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1449
1439
|
handleFileOpen(file);
|
|
1450
1440
|
}
|
|
1451
1441
|
},
|
|
1452
|
-
onLongPress: !selectMode ? () => {
|
|
1453
|
-
// Enable selection mode on long press
|
|
1454
|
-
if (selectedIds.size === 0) {
|
|
1455
|
-
setSelectedIds(new Set([file.id]));
|
|
1456
|
-
} else {
|
|
1457
|
-
toggleSelect(file);
|
|
1458
|
-
}
|
|
1459
|
-
} : undefined,
|
|
1460
|
-
showChevron: false,
|
|
1461
|
-
dense: true,
|
|
1462
|
-
multiRow: !!file.metadata?.description,
|
|
1463
|
-
selected: (selectMode || selectedIds.size > 0) && isSelected,
|
|
1464
1442
|
// Hide action buttons when selecting (in selectMode or bulk operations mode)
|
|
1465
|
-
|
|
1443
|
+
rightElement: (!selectMode && selectedIds.size === 0) ? (
|
|
1466
1444
|
<View style={fileManagementStyles.groupedActions}>
|
|
1467
1445
|
{(isImage || isVideo || file.contentType.includes('pdf')) && (
|
|
1468
1446
|
<TouchableOpacity
|
|
@@ -1480,7 +1458,7 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1480
1458
|
</TouchableOpacity>
|
|
1481
1459
|
<TouchableOpacity
|
|
1482
1460
|
style={[fileManagementStyles.groupedActionBtn, { backgroundColor: bloomTheme.isDark ? '#400000' : '#FFEBEE' }]}
|
|
1483
|
-
onPress={() =>
|
|
1461
|
+
onPress={() => confirmFileDelete(file.id, file.filename)}
|
|
1484
1462
|
disabled={deleting === file.id}
|
|
1485
1463
|
>
|
|
1486
1464
|
{deleting === file.id ? (
|
|
@@ -1491,14 +1469,9 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1491
1469
|
</TouchableOpacity>
|
|
1492
1470
|
</View>
|
|
1493
1471
|
) : undefined,
|
|
1494
|
-
customContentBelow: file.metadata?.description ? (
|
|
1495
|
-
<Text style={[fileManagementStyles.groupedDescription, { color: bloomTheme.isDark ? '#AAAAAA' : '#666666' }]} numberOfLines={2}>
|
|
1496
|
-
{file.metadata.description}
|
|
1497
|
-
</Text>
|
|
1498
|
-
) : undefined,
|
|
1499
1472
|
};
|
|
1500
1473
|
});
|
|
1501
|
-
}, [filteredFiles, theme, deleting, handleFileDownload,
|
|
1474
|
+
}, [filteredFiles, theme, deleting, handleFileDownload, confirmFileDelete, handleFileOpen, getSafeDownloadUrlCallback, selectMode, selectedIds]);
|
|
1502
1475
|
|
|
1503
1476
|
// Scroll to selected file after selection
|
|
1504
1477
|
useEffect(() => {
|
|
@@ -1843,7 +1816,7 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1843
1816
|
);
|
|
1844
1817
|
};
|
|
1845
1818
|
|
|
1846
|
-
// Skeleton file item matching
|
|
1819
|
+
// Skeleton file item matching SettingsListItem structure
|
|
1847
1820
|
const SkeletonFileItem = ({ index }: { index: number }) => (
|
|
1848
1821
|
<View
|
|
1849
1822
|
style={[
|
|
@@ -1915,7 +1888,7 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1915
1888
|
))}
|
|
1916
1889
|
</View>
|
|
1917
1890
|
|
|
1918
|
-
{/* File List Skeleton - Matching
|
|
1891
|
+
{/* File List Skeleton - Matching SettingsListItem */}
|
|
1919
1892
|
<ScrollView
|
|
1920
1893
|
style={fileManagementStyles.scrollView}
|
|
1921
1894
|
contentContainerStyle={fileManagementStyles.scrollContainer}
|
|
@@ -1952,15 +1925,14 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1952
1925
|
onToggleDetails={() => setShowFileDetailsInViewer(!showFileDetailsInViewer)}
|
|
1953
1926
|
onClose={handleCloseFile}
|
|
1954
1927
|
onDownload={handleFileDownload}
|
|
1955
|
-
onDelete={
|
|
1928
|
+
onDelete={confirmFileDelete}
|
|
1956
1929
|
isOwner={user?.id === targetUserId}
|
|
1957
1930
|
/>
|
|
1958
1931
|
<FileDetailsModal
|
|
1959
|
-
|
|
1932
|
+
control={fileDetailsControl}
|
|
1960
1933
|
file={selectedFile}
|
|
1961
|
-
onClose={() => setShowFileDetails(false)}
|
|
1962
1934
|
onDownload={handleFileDownload}
|
|
1963
|
-
onDelete={
|
|
1935
|
+
onDelete={confirmFileDelete}
|
|
1964
1936
|
isOwner={user?.id === targetUserId}
|
|
1965
1937
|
/>
|
|
1966
1938
|
</>
|
|
@@ -1981,7 +1953,6 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
1981
1953
|
titleAlignment="left"
|
|
1982
1954
|
/>
|
|
1983
1955
|
<UploadPreview
|
|
1984
|
-
visible={true}
|
|
1985
1956
|
pendingFiles={pendingFiles}
|
|
1986
1957
|
onConfirm={handleConfirmUpload}
|
|
1987
1958
|
onCancel={handleCancelUpload}
|
|
@@ -2019,24 +1990,14 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
2019
1990
|
{
|
|
2020
1991
|
key: 'delete',
|
|
2021
1992
|
text: t('fileManagement.delete', { count: selectedIds.size }),
|
|
2022
|
-
onPress:
|
|
1993
|
+
onPress: confirmBulkDelete,
|
|
2023
1994
|
icon: 'delete',
|
|
2024
1995
|
},
|
|
2025
1996
|
{
|
|
2026
1997
|
key: 'visibility',
|
|
2027
1998
|
text: t('fileManagement.visibility'),
|
|
2028
1999
|
onPress: () => {
|
|
2029
|
-
|
|
2030
|
-
Alert.alert(
|
|
2031
|
-
t('fileManagement.changeVisibility'),
|
|
2032
|
-
t('fileManagement.changeVisibilityConfirm', { count: selectedIds.size }),
|
|
2033
|
-
[
|
|
2034
|
-
{ text: t('common.cancel'), style: 'cancel' },
|
|
2035
|
-
{ text: t('fileManagement.private'), onPress: () => handleBulkVisibilityChange('private') },
|
|
2036
|
-
{ text: t('fileManagement.public'), onPress: () => handleBulkVisibilityChange('public') },
|
|
2037
|
-
{ text: t('fileManagement.unlisted'), onPress: () => handleBulkVisibilityChange('unlisted') },
|
|
2038
|
-
]
|
|
2039
|
-
);
|
|
2000
|
+
visibilityChangePrompt.open();
|
|
2040
2001
|
},
|
|
2041
2002
|
icon: 'eye',
|
|
2042
2003
|
}
|
|
@@ -2259,7 +2220,19 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
2259
2220
|
</View>
|
|
2260
2221
|
) : filteredFiles.length === 0 ? renderEmptyState() : (
|
|
2261
2222
|
<>
|
|
2262
|
-
<
|
|
2223
|
+
<SettingsListGroup>
|
|
2224
|
+
{groupedFileItems.map(item => (
|
|
2225
|
+
<SettingsListItem
|
|
2226
|
+
key={item.id}
|
|
2227
|
+
icon={item.icon}
|
|
2228
|
+
title={item.title}
|
|
2229
|
+
description={item.description}
|
|
2230
|
+
onPress={item.onPress}
|
|
2231
|
+
showChevron={false}
|
|
2232
|
+
rightElement={item.rightElement}
|
|
2233
|
+
/>
|
|
2234
|
+
))}
|
|
2235
|
+
</SettingsListGroup>
|
|
2263
2236
|
{paging.loadingMore && (
|
|
2264
2237
|
<View style={fileManagementStyles.loadingMoreBar}>
|
|
2265
2238
|
<ActivityIndicator size="small" color={colors.primary} />
|
|
@@ -2273,11 +2246,10 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
2273
2246
|
|
|
2274
2247
|
{!selectMode && (
|
|
2275
2248
|
<FileDetailsModal
|
|
2276
|
-
|
|
2249
|
+
control={fileDetailsControl}
|
|
2277
2250
|
file={selectedFile}
|
|
2278
|
-
onClose={() => setShowFileDetails(false)}
|
|
2279
2251
|
onDownload={handleFileDownload}
|
|
2280
|
-
onDelete={
|
|
2252
|
+
onDelete={confirmFileDelete}
|
|
2281
2253
|
isOwner={user?.id === targetUserId}
|
|
2282
2254
|
/>
|
|
2283
2255
|
)}
|
|
@@ -2312,6 +2284,34 @@ const FileManagementScreen: React.FC<FileManagementScreenProps> = ({
|
|
|
2312
2284
|
|
|
2313
2285
|
{/* Selection bar removed; actions are now in header */}
|
|
2314
2286
|
{/* Global loadingMore bar removed; now inline in scroll areas */}
|
|
2287
|
+
<Prompt.Basic
|
|
2288
|
+
control={fileDeletePrompt}
|
|
2289
|
+
title={t('fileManagement.deleteFile') || 'Delete File'}
|
|
2290
|
+
description={pendingDeleteFile ? t('fileManagement.confirms.deleteFile', { filename: pendingDeleteFile.name }) : ''}
|
|
2291
|
+
onConfirm={handleFileDelete}
|
|
2292
|
+
confirmButtonCta={t('fileManagement.confirm') || 'Delete'}
|
|
2293
|
+
confirmButtonColor='negative'
|
|
2294
|
+
/>
|
|
2295
|
+
<Prompt.Basic
|
|
2296
|
+
control={bulkDeletePrompt}
|
|
2297
|
+
title={t('fileManagement.deleteFiles') || 'Delete Files'}
|
|
2298
|
+
description={t('fileManagement.confirms.deleteFiles', { count: selectedIds.size })}
|
|
2299
|
+
onConfirm={handleBulkDelete}
|
|
2300
|
+
confirmButtonCta={t('fileManagement.confirm') || 'Delete'}
|
|
2301
|
+
confirmButtonColor='negative'
|
|
2302
|
+
/>
|
|
2303
|
+
<Prompt.Outer control={visibilityChangePrompt}>
|
|
2304
|
+
<Prompt.Content>
|
|
2305
|
+
<Prompt.TitleText>{t('fileManagement.changeVisibility') || 'Change Visibility'}</Prompt.TitleText>
|
|
2306
|
+
<Prompt.DescriptionText>{t('fileManagement.changeVisibilityConfirm', { count: selectedIds.size })}</Prompt.DescriptionText>
|
|
2307
|
+
</Prompt.Content>
|
|
2308
|
+
<Prompt.Actions>
|
|
2309
|
+
<Prompt.Action cta={t('fileManagement.private') || 'Private'} onPress={() => handleBulkVisibilityChange('private')} color='primary' />
|
|
2310
|
+
<Prompt.Action cta={t('fileManagement.public') || 'Public'} onPress={() => handleBulkVisibilityChange('public')} color='primary_subtle' />
|
|
2311
|
+
<Prompt.Action cta={t('fileManagement.unlisted') || 'Unlisted'} onPress={() => handleBulkVisibilityChange('unlisted')} color='primary_subtle' />
|
|
2312
|
+
<Prompt.Cancel cta={t('common.cancel') || 'Cancel'} />
|
|
2313
|
+
</Prompt.Actions>
|
|
2314
|
+
</Prompt.Outer>
|
|
2315
2315
|
</View>
|
|
2316
2316
|
);
|
|
2317
2317
|
};
|