@oxyhq/services 22.10.0 → 22.11.0
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/AvatarCameraBadge.js +42 -0
- package/lib/commonjs/ui/components/AvatarCameraBadge.js.map +1 -0
- package/lib/commonjs/ui/components/OxyAccountDialogScreen.js +41 -19
- package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAuthChooser.js +640 -168
- package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileButton.js +14 -0
- package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileSummaryCard.js +3 -23
- package/lib/commonjs/ui/components/ProfileSummaryCard.js.map +1 -1
- package/lib/commonjs/ui/components/SurfaceScreen.js +41 -5
- package/lib/commonjs/ui/components/SurfaceScreen.js.map +1 -1
- package/lib/commonjs/ui/components/oxyAuthChooserStyles.js +78 -26
- package/lib/commonjs/ui/components/oxyAuthChooserStyles.js.map +1 -1
- package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js +83 -23
- package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +73 -37
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/queryKeys.js +18 -1
- package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useFileQueries.js +129 -0
- package/lib/commonjs/ui/hooks/queries/useFileQueries.js.map +1 -0
- package/lib/commonjs/ui/hooks/useAvatarPicker.js +36 -48
- package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/commonjs/ui/hooks/useReduceMotion.js +57 -0
- package/lib/commonjs/ui/hooks/useReduceMotion.js.map +1 -0
- package/lib/commonjs/ui/hooks/useSurfaceHeader.js +1 -1
- package/lib/commonjs/ui/hooks/useSurfaceHeader.js.map +1 -1
- package/lib/commonjs/ui/navigation/accountDialogManager.js +22 -0
- package/lib/commonjs/ui/navigation/accountDialogManager.js.map +1 -1
- package/lib/commonjs/ui/navigation/bottomSheetManager.js +5 -6
- package/lib/commonjs/ui/navigation/bottomSheetManager.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +1 -0
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/navigation/surfaceNavStack.js +62 -15
- package/lib/commonjs/ui/navigation/surfaceNavStack.js.map +1 -1
- package/lib/commonjs/ui/navigation/surfaceRegistry.js +38 -17
- package/lib/commonjs/ui/navigation/surfaceRegistry.js.map +1 -1
- package/lib/commonjs/ui/navigation/surfaces.js +98 -21
- package/lib/commonjs/ui/navigation/surfaces.js.map +1 -1
- package/lib/commonjs/ui/screens/AvatarCropScreen.js +281 -279
- package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ChangeAvatarScreen.js +301 -0
- package/lib/commonjs/ui/screens/ChangeAvatarScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/FileManagementScreen.js +194 -431
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +16 -48
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js +63 -0
- package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js.map +1 -0
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +54 -41
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js +44 -81
- package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
- package/lib/commonjs/ui/stores/resetSessionScopedStores.js +8 -3
- package/lib/commonjs/ui/stores/resetSessionScopedStores.js.map +1 -1
- package/lib/commonjs/ui/utils/avatarUtils.js +11 -2
- package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
- package/lib/commonjs/ui/utils/fileManagement.js +0 -79
- package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
- package/lib/module/ui/components/AvatarCameraBadge.js +40 -0
- package/lib/module/ui/components/AvatarCameraBadge.js.map +1 -0
- package/lib/module/ui/components/OxyAccountDialogScreen.js +41 -19
- package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -1
- package/lib/module/ui/components/OxyAuthChooser.js +642 -171
- package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
- package/lib/module/ui/components/ProfileButton.js +15 -1
- package/lib/module/ui/components/ProfileButton.js.map +1 -1
- package/lib/module/ui/components/ProfileSummaryCard.js +2 -23
- package/lib/module/ui/components/ProfileSummaryCard.js.map +1 -1
- package/lib/module/ui/components/SurfaceScreen.js +43 -7
- package/lib/module/ui/components/SurfaceScreen.js.map +1 -1
- package/lib/module/ui/components/oxyAuthChooserStyles.js +78 -26
- package/lib/module/ui/components/oxyAuthChooserStyles.js.map +1 -1
- package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js +83 -25
- package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +74 -38
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/hooks/queries/queryKeys.js +16 -0
- package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/module/ui/hooks/queries/useFileQueries.js +120 -0
- package/lib/module/ui/hooks/queries/useFileQueries.js.map +1 -0
- package/lib/module/ui/hooks/useAvatarPicker.js +37 -49
- package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/module/ui/hooks/useReduceMotion.js +53 -0
- package/lib/module/ui/hooks/useReduceMotion.js.map +1 -0
- package/lib/module/ui/hooks/useSurfaceHeader.js +1 -1
- package/lib/module/ui/hooks/useSurfaceHeader.js.map +1 -1
- package/lib/module/ui/navigation/accountDialogManager.js +20 -0
- package/lib/module/ui/navigation/accountDialogManager.js.map +1 -1
- package/lib/module/ui/navigation/bottomSheetManager.js +6 -7
- package/lib/module/ui/navigation/bottomSheetManager.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +1 -0
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/navigation/surfaceNavStack.js +62 -15
- package/lib/module/ui/navigation/surfaceNavStack.js.map +1 -1
- package/lib/module/ui/navigation/surfaceRegistry.js +38 -17
- package/lib/module/ui/navigation/surfaceRegistry.js.map +1 -1
- package/lib/module/ui/navigation/surfaces.js +97 -22
- package/lib/module/ui/navigation/surfaces.js.map +1 -1
- package/lib/module/ui/screens/AvatarCropScreen.js +283 -281
- package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
- package/lib/module/ui/screens/ChangeAvatarScreen.js +298 -0
- package/lib/module/ui/screens/ChangeAvatarScreen.js.map +1 -0
- package/lib/module/ui/screens/FileManagementScreen.js +196 -433
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +17 -49
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/FileLibraryError.js +59 -0
- package/lib/module/ui/screens/fileManagement/FileLibraryError.js.map +1 -0
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +54 -42
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js +45 -81
- package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
- package/lib/module/ui/stores/resetSessionScopedStores.js +8 -3
- package/lib/module/ui/stores/resetSessionScopedStores.js.map +1 -1
- package/lib/module/ui/utils/avatarUtils.js +11 -2
- package/lib/module/ui/utils/avatarUtils.js.map +1 -1
- package/lib/module/ui/utils/fileManagement.js +0 -78
- package/lib/module/ui/utils/fileManagement.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/AvatarCameraBadge.d.ts +4 -0
- package/lib/typescript/commonjs/ui/components/AvatarCameraBadge.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts +2 -1
- package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileSummaryCard.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts +1 -4
- package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/oxyAuthChooserStyles.d.ts +71 -19
- package/lib/typescript/commonjs/ui/components/oxyAuthChooserStyles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/photogrid/JustifiedPhotoGrid.d.ts +10 -8
- package/lib/typescript/commonjs/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +9 -0
- package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts +50 -0
- package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts +15 -10
- package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useReduceMotion.d.ts +14 -0
- package/lib/typescript/commonjs/ui/hooks/useReduceMotion.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts +13 -0
- package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts +4 -5
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/surfaceNavStack.d.ts +21 -0
- package/lib/typescript/commonjs/ui/navigation/surfaceNavStack.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts +73 -13
- package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/surfaces.d.ts +42 -11
- package/lib/typescript/commonjs/ui/navigation/surfaces.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts +18 -5
- package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ChangeAvatarScreen.d.ts +34 -0
- package/lib/typescript/commonjs/ui/screens/ChangeAvatarScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileLibraryError.d.ts +23 -0
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileLibraryError.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts +4 -0
- package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts +10 -2
- package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/stores/resetSessionScopedStores.d.ts +8 -1
- package/lib/typescript/commonjs/ui/stores/resetSessionScopedStores.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/types/navigation.d.ts +2 -0
- package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/avatarUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +0 -48
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/AvatarCameraBadge.d.ts +4 -0
- package/lib/typescript/module/ui/components/AvatarCameraBadge.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts +2 -1
- package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileSummaryCard.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SurfaceScreen.d.ts +1 -4
- package/lib/typescript/module/ui/components/SurfaceScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/oxyAuthChooserStyles.d.ts +71 -19
- package/lib/typescript/module/ui/components/oxyAuthChooserStyles.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/photogrid/JustifiedPhotoGrid.d.ts +10 -8
- package/lib/typescript/module/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +9 -0
- package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts +50 -0
- package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts +15 -10
- package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useReduceMotion.d.ts +14 -0
- package/lib/typescript/module/ui/hooks/useReduceMotion.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts +13 -0
- package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts +4 -5
- package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/surfaceNavStack.d.ts +21 -0
- package/lib/typescript/module/ui/navigation/surfaceNavStack.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts +73 -13
- package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/surfaces.d.ts +42 -11
- package/lib/typescript/module/ui/navigation/surfaces.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts +18 -5
- package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ChangeAvatarScreen.d.ts +34 -0
- package/lib/typescript/module/ui/screens/ChangeAvatarScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/FileLibraryError.d.ts +23 -0
- package/lib/typescript/module/ui/screens/fileManagement/FileLibraryError.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts +4 -0
- package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts +10 -2
- package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/module/ui/stores/resetSessionScopedStores.d.ts +8 -1
- package/lib/typescript/module/ui/stores/resetSessionScopedStores.d.ts.map +1 -1
- package/lib/typescript/module/ui/types/navigation.d.ts +2 -0
- package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/avatarUtils.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/fileManagement.d.ts +0 -48
- package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
- package/package.json +8 -4
- package/src/ui/components/AvatarCameraBadge.tsx +35 -0
- package/src/ui/components/OxyAccountDialogScreen.tsx +38 -15
- package/src/ui/components/OxyAuthChooser.tsx +722 -185
- package/src/ui/components/ProfileButton.tsx +16 -1
- package/src/ui/components/ProfileSummaryCard.tsx +2 -25
- package/src/ui/components/SurfaceScreen.tsx +48 -14
- package/src/ui/components/oxyAuthChooserStyles.ts +75 -23
- package/src/ui/components/photogrid/JustifiedPhotoGrid.tsx +158 -84
- package/src/ui/components/photogrid/__tests__/chunkPhotos.test.ts +51 -0
- package/src/ui/context/OxyContext.tsx +74 -34
- package/src/ui/hooks/queries/queryKeys.ts +15 -0
- package/src/ui/hooks/queries/useFileQueries.ts +162 -0
- package/src/ui/hooks/useAvatarPicker.ts +38 -53
- package/src/ui/hooks/useReduceMotion.ts +58 -0
- package/src/ui/hooks/useSurfaceHeader.ts +2 -1
- package/src/ui/navigation/__tests__/getSurfaceConfig.test.ts +55 -7
- package/src/ui/navigation/__tests__/surfaceNavStack.test.ts +81 -0
- package/src/ui/navigation/accountDialogManager.ts +28 -0
- package/src/ui/navigation/bottomSheetManager.ts +6 -7
- package/src/ui/navigation/routes.ts +3 -1
- package/src/ui/navigation/surfaceNavStack.ts +72 -9
- package/src/ui/navigation/surfaceRegistry.ts +91 -17
- package/src/ui/navigation/surfaces.ts +108 -29
- package/src/ui/screens/AvatarCropScreen.tsx +336 -298
- package/src/ui/screens/ChangeAvatarScreen.tsx +359 -0
- package/src/ui/screens/FileManagementScreen.tsx +189 -432
- package/src/ui/screens/WelcomeNewUserScreen.tsx +18 -48
- package/src/ui/screens/fileManagement/FileLibraryError.tsx +56 -0
- package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +56 -46
- package/src/ui/screens/fileManagement/hooks/useFileUploadState.ts +55 -71
- package/src/ui/stores/resetSessionScopedStores.ts +8 -3
- package/src/ui/types/navigation.ts +2 -0
- package/src/ui/utils/avatarUtils.ts +11 -2
- package/src/ui/utils/fileManagement.ts +1 -101
- package/lib/commonjs/ui/stores/fileStore.js +0 -153
- package/lib/commonjs/ui/stores/fileStore.js.map +0 -1
- package/lib/module/ui/stores/fileStore.js +0 -145
- package/lib/module/ui/stores/fileStore.js.map +0 -1
- package/lib/typescript/commonjs/ui/stores/fileStore.d.ts +0 -31
- package/lib/typescript/commonjs/ui/stores/fileStore.d.ts.map +0 -1
- package/lib/typescript/module/ui/stores/fileStore.d.ts +0 -31
- package/lib/typescript/module/ui/stores/fileStore.d.ts.map +0 -1
- package/src/ui/stores/fileStore.ts +0 -118
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { useCallback,
|
|
3
|
+
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { View, Text, TouchableOpacity, ActivityIndicator, RefreshControl, FlatList, Platform, Animated, useWindowDimensions } from 'react-native';
|
|
5
5
|
import { Image as ExpoImage } from 'expo-image';
|
|
6
6
|
import { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';
|
|
7
|
-
import { BREAKPOINTS } from '@oxyhq/bloom/styles';
|
|
8
7
|
import * as Skeleton from '@oxyhq/bloom/skeleton';
|
|
9
8
|
import { computePhotoGridLayout } from "./photoGridLayout.js";
|
|
9
|
+
import FileLibraryError from "./FileLibraryError.js";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Haptic feedback wrapper. `expo-haptics` is an optional dependency — when not
|
|
@@ -145,38 +145,35 @@ const PhotoPickerCell = /*#__PURE__*/React.memo(function PhotoPickerCell(props)
|
|
|
145
145
|
} = props;
|
|
146
146
|
const delay = Math.min(enterIndex * STAGGER_PER_CELL_MS, MAX_TOTAL_STAGGER_MS);
|
|
147
147
|
|
|
148
|
-
// Entrance fade, staggered by the cell's grid index.
|
|
148
|
+
// Entrance fade, staggered by the cell's grid index. Started from the wrapper's
|
|
149
|
+
// ref callback (fires on mount) rather than an effect. Reduce-motion pins
|
|
149
150
|
// opacity at 1 and never animates.
|
|
150
151
|
const opacity = useRef(new Animated.Value(reduceMotion ? 1 : 0)).current;
|
|
151
|
-
|
|
152
|
+
const startEntrance = useCallback(node => {
|
|
153
|
+
if (!node) return; // unmount
|
|
152
154
|
if (reduceMotion) {
|
|
153
155
|
opacity.setValue(1);
|
|
154
156
|
return;
|
|
155
157
|
}
|
|
156
|
-
|
|
158
|
+
opacity.setValue(0);
|
|
159
|
+
Animated.timing(opacity, {
|
|
157
160
|
toValue: 1,
|
|
158
161
|
duration: ENTRANCE_DURATION_MS,
|
|
159
162
|
delay,
|
|
160
163
|
useNativeDriver: Platform.OS !== 'web'
|
|
161
|
-
});
|
|
162
|
-
entrance.start();
|
|
163
|
-
return () => entrance.stop();
|
|
164
|
+
}).start();
|
|
164
165
|
}, [opacity, delay, reduceMotion]);
|
|
165
166
|
|
|
166
|
-
// Selection-ring pulse: a quick scale bump
|
|
167
|
-
//
|
|
168
|
-
//
|
|
169
|
-
//
|
|
167
|
+
// Selection-ring pulse: a quick scale bump that springs back to rest. The ring
|
|
168
|
+
// renders ONLY while selected, so its own mount IS the "became selected"
|
|
169
|
+
// signal — driven from the ring's ref callback, not an effect. Reduce-motion
|
|
170
|
+
// holds the ring at rest scale.
|
|
170
171
|
const ringScale = useRef(new Animated.Value(1)).current;
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
ringScale.setValue(1);
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
const pulse = Animated.sequence([Animated.timing(ringScale, {
|
|
172
|
+
const startRingPulse = useCallback(node => {
|
|
173
|
+
if (!node) return; // ring unmounting (deselected)
|
|
174
|
+
ringScale.setValue(1);
|
|
175
|
+
if (reduceMotion) return;
|
|
176
|
+
Animated.sequence([Animated.timing(ringScale, {
|
|
180
177
|
toValue: RING_PULSE_PEAK,
|
|
181
178
|
duration: RING_PULSE_UP_MS,
|
|
182
179
|
useNativeDriver: Platform.OS !== 'web'
|
|
@@ -185,10 +182,8 @@ const PhotoPickerCell = /*#__PURE__*/React.memo(function PhotoPickerCell(props)
|
|
|
185
182
|
friction: RING_SPRING_FRICTION,
|
|
186
183
|
tension: RING_SPRING_TENSION,
|
|
187
184
|
useNativeDriver: Platform.OS !== 'web'
|
|
188
|
-
})]);
|
|
189
|
-
|
|
190
|
-
return () => pulse.stop();
|
|
191
|
-
}, [isSelected, ringScale, reduceMotion]);
|
|
185
|
+
})]).start();
|
|
186
|
+
}, [ringScale, reduceMotion]);
|
|
192
187
|
return (
|
|
193
188
|
/*#__PURE__*/
|
|
194
189
|
// The animated wrapper carries the entrance opacity + the layout box as
|
|
@@ -196,6 +191,7 @@ const PhotoPickerCell = /*#__PURE__*/React.memo(function PhotoPickerCell(props)
|
|
|
196
191
|
// size/margins are runtime pixels className cannot express. `className`
|
|
197
192
|
// drives the static chrome below (`flex-1` fills this fixed-size box).
|
|
198
193
|
_jsx(Animated.View, {
|
|
194
|
+
ref: startEntrance,
|
|
199
195
|
style: {
|
|
200
196
|
width: size,
|
|
201
197
|
height: size,
|
|
@@ -230,6 +226,7 @@ const PhotoPickerCell = /*#__PURE__*/React.memo(function PhotoPickerCell(props)
|
|
|
230
226
|
accessibilityLabel: photo.filename
|
|
231
227
|
})
|
|
232
228
|
}), isSelected && /*#__PURE__*/_jsx(Animated.View, {
|
|
229
|
+
ref: startRingPulse,
|
|
233
230
|
pointerEvents: "none",
|
|
234
231
|
style: {
|
|
235
232
|
position: 'absolute',
|
|
@@ -272,6 +269,8 @@ const PhotoPickerView = ({
|
|
|
272
269
|
hasMore,
|
|
273
270
|
loadingMore,
|
|
274
271
|
loading,
|
|
272
|
+
loadError,
|
|
273
|
+
onRetry,
|
|
275
274
|
reduceMotion,
|
|
276
275
|
getThumbUrl,
|
|
277
276
|
primaryColor,
|
|
@@ -305,21 +304,17 @@ const PhotoPickerView = ({
|
|
|
305
304
|
setGridWidth(prev => prev === w ? prev : w);
|
|
306
305
|
}, []);
|
|
307
306
|
|
|
308
|
-
// The
|
|
309
|
-
//
|
|
310
|
-
//
|
|
311
|
-
//
|
|
312
|
-
//
|
|
313
|
-
//
|
|
314
|
-
//
|
|
315
|
-
|
|
316
|
-
// better below full height); the bottom sheet may run taller. Keep this
|
|
317
|
-
// breakpoint in sync with `SHEET_PLACEMENT` in surfaces.ts.
|
|
318
|
-
const isCenteredPanel = windowWidth >= BREAKPOINTS.md;
|
|
319
|
-
const maxPanelHeight = useMemo(() => isCenteredPanel ? Math.min(Math.round(windowHeight * 0.85), 720) : Math.round(windowHeight * 0.9), [isCenteredPanel, windowHeight]);
|
|
307
|
+
// The picker FILLS its panel: the surface morphs the container UP to an
|
|
308
|
+
// explicit large target (`frameSize.heightRatio: 0.9` in `surfaceRegistry`),
|
|
309
|
+
// and this root takes that SAME 0.9-of-viewport height so the grid uses the
|
|
310
|
+
// whole grown card (a `flex: 1` root can't fill — no definite bound propagates
|
|
311
|
+
// through the sheet's flex chain, and the panel is pinned, not measured). The
|
|
312
|
+
// FlatList then scrolls within this fixed height. Keep the 0.9 ratio in sync
|
|
313
|
+
// with the picker's `frameSize` in `surfaceRegistry.ts`.
|
|
314
|
+
const panelHeight = useMemo(() => Math.round(windowHeight * 0.9), [windowHeight]);
|
|
320
315
|
const rootStyle = useMemo(() => ({
|
|
321
|
-
|
|
322
|
-
}), [
|
|
316
|
+
height: panelHeight
|
|
317
|
+
}), [panelHeight]);
|
|
323
318
|
const effectiveWidth = gridWidth > 0 ? gridWidth : windowWidth;
|
|
324
319
|
const {
|
|
325
320
|
columns,
|
|
@@ -334,10 +329,10 @@ const PhotoPickerView = ({
|
|
|
334
329
|
const skeletonTileCount = useMemo(() => {
|
|
335
330
|
const rowHeight = cellSize + gutter;
|
|
336
331
|
if (rowHeight <= 0) return columns * SKELETON_MIN_ROWS;
|
|
337
|
-
const available = Math.max(0,
|
|
332
|
+
const available = Math.max(0, panelHeight - GRID_CONTENT_PADDING_TOP);
|
|
338
333
|
const rows = Math.max(SKELETON_MIN_ROWS, Math.floor(available / rowHeight));
|
|
339
334
|
return rows * columns;
|
|
340
|
-
}, [cellSize, gutter, columns,
|
|
335
|
+
}, [cellSize, gutter, columns, panelHeight]);
|
|
341
336
|
|
|
342
337
|
// Map selectedIds → 1-based selection order for the badge. We freeze a
|
|
343
338
|
// stable order at the time of selection: the order is the insertion
|
|
@@ -442,7 +437,24 @@ const PhotoPickerView = ({
|
|
|
442
437
|
onLayout: onRootLayout,
|
|
443
438
|
children: /*#__PURE__*/_jsxs(View, {
|
|
444
439
|
className: "flex-1 min-h-0 bg-black",
|
|
445
|
-
children: [isEmpty &&
|
|
440
|
+
children: [isEmpty && loadError ?
|
|
441
|
+
/*#__PURE__*/
|
|
442
|
+
/* Terminal load failure — a DISTINCT error surface (not the
|
|
443
|
+
empty state), pushed below the translucent header so Cancel
|
|
444
|
+
stays reachable. Retry re-runs the list query. */
|
|
445
|
+
_jsx(View, {
|
|
446
|
+
className: "flex-1 items-center justify-center pt-[60px]",
|
|
447
|
+
children: /*#__PURE__*/_jsx(FileLibraryError, {
|
|
448
|
+
title: t('fileManagement.loadError.title'),
|
|
449
|
+
description: t('fileManagement.loadError.description'),
|
|
450
|
+
retryLabel: t('fileManagement.retry'),
|
|
451
|
+
onRetry: onRetry,
|
|
452
|
+
iconColor: "#FF6B6B",
|
|
453
|
+
titleColor: "#FFFFFF",
|
|
454
|
+
descriptionColor: "rgba(255,255,255,0.7)",
|
|
455
|
+
buttonColor: primaryColor
|
|
456
|
+
})
|
|
457
|
+
}) : isEmpty && loading ?
|
|
446
458
|
/*#__PURE__*/
|
|
447
459
|
/* Loading skeleton — the picker's OWN shape: shimmer tiles laid
|
|
448
460
|
out with the SAME placement-aware geometry the real grid uses
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","View","Text","TouchableOpacity","ActivityIndicator","RefreshControl","FlatList","Platform","Animated","useWindowDimensions","Image","ExpoImage","Ionicons","MaterialCommunityIcons","BREAKPOINTS","Skeleton","computePhotoGridLayout","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","hapticsModulePromise","getHaptics","OS","Promise","resolve","mod","impactAsync","hapticImpact","style","h","styleEnum","ImpactFeedbackStyle","Heavy","Medium","Light","hapticSelection","selectionAsync","hapticNotification","type","typeEnum","NotificationFeedbackType","Error","Warning","Success","notificationAsync","APP_BAR_HEIGHT","HEADER_HEIGHT","GRID_CONTENT_PADDING_TOP","STAGGER_PER_CELL_MS","MAX_TOTAL_STAGGER_MS","ENTRANCE_DURATION_MS","RING_PULSE_PEAK","RING_PULSE_UP_MS","RING_SPRING_FRICTION","RING_SPRING_TENSION","CELL_CORNER_RADIUS","SELECTION_RING_WIDTH","SKELETON_TILE_COLOR","SKELETON_MIN_ROWS","PhotoPickerCell","memo","props","photo","size","marginRight","marginBottom","isSelected","selectionIndex","dim","primaryColor","thumbUrl","enterIndex","reduceMotion","onPress","onLongPress","a11yLabel","delay","Math","min","opacity","Value","current","setValue","entrance","timing","toValue","duration","useNativeDriver","start","stop","ringScale","prevSelected","pulse","sequence","spring","friction","tension","width","height","position","children","activeOpacity","className","accessibilityRole","accessibilityLabel","accessibilityState","selected","source","uri","contentFit","transition","cachePolicy","filename","pointerEvents","top","right","bottom","left","borderRadius","borderWidth","borderColor","transform","scale","backgroundColor","String","PhotoPickerView","photos","selectedIds","multiSelect","maxSelection","allowUpload","refreshing","uploading","isPickingDocument","uploadProgress","hasMore","loadingMore","loading","getThumbUrl","isOwner","onTogglePhoto","onPreviewPhoto","onUpload","onRefresh","onLoadMore","onCancel","onConfirm","t","windowWidth","windowHeight","gridWidth","setGridWidth","onRootLayout","e","w","round","nativeEvent","layout","prev","isCenteredPanel","md","maxPanelHeight","rootStyle","maxHeight","effectiveWidth","columns","cellSize","gutter","skeletonTileCount","rowHeight","available","max","rows","floor","selectionOrder","map","Map","i","id","set","hasAnySelection","showUploadLabel","isEmpty","length","atSelectionLimit","handleCellPress","handleCellLongPress","handleConfirm","renderItem","item","index","has","selIndex","get","isLastInRow","name","keyExtractor","listFooter","color","handleEndReached","confirmDisabled","confirmLabel","count","progressFraction","total","onLayout","flexDirection","flexWrap","accessibilityElementsHidden","importantForAccessibility","Array","from","_","Box","disabled","busy","data","numColumns","contentContainerClassName","showsVerticalScrollIndicator","refreshControl","tintColor","colors","progressViewOffset","onEndReached","onEndReachedThreshold","ListFooterComponent","removeClippedSubviews","initialNumToRender","windowSize","hitSlop","letterSpacing","numberOfLines"],"sourceRoot":"../../../../../src","sources":["ui/screens/fileManagement/PhotoPickerSection.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","useRef","useState","View","Text","TouchableOpacity","ActivityIndicator","RefreshControl","FlatList","Platform","Animated","useWindowDimensions","Image","ExpoImage","Ionicons","MaterialCommunityIcons","Skeleton","computePhotoGridLayout","FileLibraryError","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","hapticsModulePromise","getHaptics","OS","Promise","resolve","mod","impactAsync","hapticImpact","style","h","styleEnum","ImpactFeedbackStyle","Heavy","Medium","Light","hapticSelection","selectionAsync","hapticNotification","type","typeEnum","NotificationFeedbackType","Error","Warning","Success","notificationAsync","APP_BAR_HEIGHT","HEADER_HEIGHT","GRID_CONTENT_PADDING_TOP","STAGGER_PER_CELL_MS","MAX_TOTAL_STAGGER_MS","ENTRANCE_DURATION_MS","RING_PULSE_PEAK","RING_PULSE_UP_MS","RING_SPRING_FRICTION","RING_SPRING_TENSION","CELL_CORNER_RADIUS","SELECTION_RING_WIDTH","SKELETON_TILE_COLOR","SKELETON_MIN_ROWS","PhotoPickerCell","memo","props","photo","size","marginRight","marginBottom","isSelected","selectionIndex","dim","primaryColor","thumbUrl","enterIndex","reduceMotion","onPress","onLongPress","a11yLabel","delay","Math","min","opacity","Value","current","startEntrance","node","setValue","timing","toValue","duration","useNativeDriver","start","ringScale","startRingPulse","sequence","spring","friction","tension","ref","width","height","position","children","activeOpacity","className","accessibilityRole","accessibilityLabel","accessibilityState","selected","source","uri","contentFit","transition","cachePolicy","filename","pointerEvents","top","right","bottom","left","borderRadius","borderWidth","borderColor","transform","scale","backgroundColor","String","PhotoPickerView","photos","selectedIds","multiSelect","maxSelection","allowUpload","refreshing","uploading","isPickingDocument","uploadProgress","hasMore","loadingMore","loading","loadError","onRetry","getThumbUrl","isOwner","onTogglePhoto","onPreviewPhoto","onUpload","onRefresh","onLoadMore","onCancel","onConfirm","t","windowWidth","windowHeight","gridWidth","setGridWidth","onRootLayout","e","w","round","nativeEvent","layout","prev","panelHeight","rootStyle","effectiveWidth","columns","cellSize","gutter","skeletonTileCount","rowHeight","available","max","rows","floor","selectionOrder","map","Map","i","id","set","hasAnySelection","showUploadLabel","isEmpty","length","atSelectionLimit","handleCellPress","handleCellLongPress","handleConfirm","renderItem","item","index","has","selIndex","get","isLastInRow","name","keyExtractor","listFooter","color","handleEndReached","confirmDisabled","confirmLabel","count","progressFraction","total","onLayout","title","description","retryLabel","iconColor","titleColor","descriptionColor","buttonColor","flexDirection","flexWrap","accessibilityElementsHidden","importantForAccessibility","Array","from","_","Box","disabled","busy","data","numColumns","contentContainerClassName","showsVerticalScrollIndicator","refreshControl","tintColor","colors","progressViewOffset","onEndReached","onEndReachedThreshold","ListFooterComponent","removeClippedSubviews","initialNumToRender","windowSize","hitSlop","letterSpacing","numberOfLines"],"sourceRoot":"../../../../../src","sources":["ui/screens/fileManagement/PhotoPickerSection.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useCallback, useRef, useState } from 'react';
|
|
4
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
4
5
|
import { toast } from '@oxyhq/bloom';
|
|
5
|
-
import {
|
|
6
|
+
import { queryKeys } from "../../../hooks/queries/queryKeys.js";
|
|
7
|
+
import { prependFileToCache, removeFileFromCache, replaceFileInCache } from "../../../hooks/queries/useFileQueries.js";
|
|
6
8
|
import { convertDocumentPickerAssetToFile, formatFileSize } from "../../../utils/fileManagement.js";
|
|
7
9
|
import { createPendingUploadFile, candidateName, candidateSize, candidateType, candidateUri, getErrorMessage, loadDocumentPicker } from "../shared.js";
|
|
10
|
+
|
|
11
|
+
/** Aggregate progress across a multi-file upload. */
|
|
12
|
+
|
|
13
|
+
/** Minimum time the "Uploading…" indicator stays visible (anti-flash). */
|
|
14
|
+
const MIN_BANNER_MS = 600;
|
|
8
15
|
function revokePreviewUrl(preview) {
|
|
9
16
|
if (preview?.startsWith('blob:')) {
|
|
10
17
|
URL.revokeObjectURL(preview);
|
|
@@ -40,22 +47,21 @@ export const useFileUploadState = ({
|
|
|
40
47
|
onClose,
|
|
41
48
|
selectedIds,
|
|
42
49
|
setSelectedIds,
|
|
43
|
-
loadFiles,
|
|
44
50
|
t
|
|
45
51
|
}) => {
|
|
46
52
|
const [isPickingDocument, setIsPickingDocument] = useState(false);
|
|
47
53
|
const [pendingFiles, setPendingFiles] = useState([]);
|
|
48
54
|
const [showUploadPreview, setShowUploadPreview] = useState(false);
|
|
55
|
+
const [uploading, setUploading] = useState(false);
|
|
56
|
+
const [uploadProgress, setUploadProgress] = useState(null);
|
|
57
|
+
const queryClient = useQueryClient();
|
|
49
58
|
const uploadStartRef = useRef(null);
|
|
50
|
-
const MIN_BANNER_MS = 600;
|
|
51
|
-
const storeSetUploading = useFileStore(s => s.setUploading);
|
|
52
|
-
const storeSetUploadProgress = useFileStore(s => s.setUploadProgress);
|
|
53
59
|
const endUpload = useCallback(() => {
|
|
54
60
|
const started = uploadStartRef.current;
|
|
55
61
|
const elapsed = started ? Date.now() - started : MIN_BANNER_MS;
|
|
56
62
|
const remaining = elapsed < MIN_BANNER_MS ? MIN_BANNER_MS - elapsed : 0;
|
|
57
63
|
setTimeout(() => {
|
|
58
|
-
|
|
64
|
+
setUploading(false);
|
|
59
65
|
uploadStartRef.current = null;
|
|
60
66
|
}, remaining);
|
|
61
67
|
}, []);
|
|
@@ -64,7 +70,7 @@ export const useFileUploadState = ({
|
|
|
64
70
|
if (!targetUserId) return []; // Guard clause to ensure userId is defined
|
|
65
71
|
const uploadedFiles = [];
|
|
66
72
|
try {
|
|
67
|
-
|
|
73
|
+
setUploadProgress({
|
|
68
74
|
current: 0,
|
|
69
75
|
total: selectedFiles.length
|
|
70
76
|
});
|
|
@@ -81,7 +87,7 @@ export const useFileUploadState = ({
|
|
|
81
87
|
let failureCount = 0;
|
|
82
88
|
const errors = [];
|
|
83
89
|
for (let i = 0; i < selectedFiles.length; i++) {
|
|
84
|
-
|
|
90
|
+
setUploadProgress({
|
|
85
91
|
current: i + 1,
|
|
86
92
|
total: selectedFiles.length
|
|
87
93
|
});
|
|
@@ -89,18 +95,11 @@ export const useFileUploadState = ({
|
|
|
89
95
|
const fileName = candidateName(raw, `file-${i + 1}`);
|
|
90
96
|
const fileSize = candidateSize(raw);
|
|
91
97
|
const fileType = candidateType(raw);
|
|
92
|
-
const optimisticId = `temp-${Date.now()}-${i}-${Math.random().toString(36).
|
|
98
|
+
const optimisticId = `temp-${Date.now()}-${i}-${Math.random().toString(36).slice(2, 11)}`; // Unique ID per file
|
|
93
99
|
|
|
94
100
|
try {
|
|
95
101
|
// Validate file before upload
|
|
96
102
|
if (!raw || !fileName || fileSize <= 0) {
|
|
97
|
-
const errorMsg = `Invalid file: ${fileName}`;
|
|
98
|
-
if (__DEV__) {
|
|
99
|
-
console.error('Upload validation failed:', {
|
|
100
|
-
file: raw,
|
|
101
|
-
error: errorMsg
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
103
|
failureCount++;
|
|
105
104
|
errors.push(`${fileName}: Invalid file (missing name or size)`);
|
|
106
105
|
continue;
|
|
@@ -127,9 +126,7 @@ export const useFileUploadState = ({
|
|
|
127
126
|
metadata: optimisticMetadata,
|
|
128
127
|
variants: []
|
|
129
128
|
};
|
|
130
|
-
|
|
131
|
-
prepend: true
|
|
132
|
-
});
|
|
129
|
+
prependFileToCache(queryClient, targetUserId, optimisticFile);
|
|
133
130
|
|
|
134
131
|
// Use the mutation hook with authentication handling
|
|
135
132
|
const result = await uploadFileMutation.mutateAsync({
|
|
@@ -150,46 +147,26 @@ export const useFileUploadState = ({
|
|
|
150
147
|
metadata: f.metadata || {},
|
|
151
148
|
variants: f.variants || []
|
|
152
149
|
};
|
|
153
|
-
//
|
|
154
|
-
|
|
155
|
-
useFileStore.getState().addFile(merged, {
|
|
156
|
-
prepend: true
|
|
157
|
-
});
|
|
150
|
+
// Swap the optimistic temp entry for the persisted record.
|
|
151
|
+
replaceFileInCache(queryClient, targetUserId, optimisticId, merged);
|
|
158
152
|
uploadedFiles.push(merged);
|
|
159
153
|
successCount++;
|
|
160
154
|
} else {
|
|
161
155
|
// Upload succeeded but the API returned no file payload,
|
|
162
156
|
// so we cannot build a real entry. Drop the optimistic
|
|
163
157
|
// placeholder instead of stranding a `temp-…` id (which
|
|
164
|
-
// would leak into asset URLs); the
|
|
165
|
-
//
|
|
166
|
-
|
|
167
|
-
if (__DEV__) {
|
|
168
|
-
console.warn('Upload completed but no file data returned:', {
|
|
169
|
-
fileName,
|
|
170
|
-
result
|
|
171
|
-
});
|
|
172
|
-
}
|
|
158
|
+
// would leak into asset URLs); the reconcile invalidation
|
|
159
|
+
// below re-fetches the persisted record.
|
|
160
|
+
removeFileFromCache(queryClient, targetUserId, optimisticId);
|
|
173
161
|
// Still count as success if upload didn't throw
|
|
174
162
|
successCount++;
|
|
175
163
|
}
|
|
176
164
|
} catch (error) {
|
|
177
165
|
failureCount++;
|
|
178
166
|
const errorMessage = getErrorMessage(error) || 'Upload failed';
|
|
179
|
-
|
|
180
|
-
errors.push(fullError);
|
|
181
|
-
if (__DEV__) {
|
|
182
|
-
console.error('File upload failed:', {
|
|
183
|
-
fileName,
|
|
184
|
-
fileSize,
|
|
185
|
-
fileType,
|
|
186
|
-
error: errorMessage,
|
|
187
|
-
stack: error instanceof Error ? error.stack : undefined
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
|
|
167
|
+
errors.push(`${fileName}: ${errorMessage}`);
|
|
191
168
|
// Remove optimistic file on error (use the same optimisticId from above)
|
|
192
|
-
|
|
169
|
+
removeFileFromCache(queryClient, targetUserId, optimisticId);
|
|
193
170
|
}
|
|
194
171
|
}
|
|
195
172
|
|
|
@@ -206,14 +183,17 @@ export const useFileUploadState = ({
|
|
|
206
183
|
count: failureCount
|
|
207
184
|
})}${errorDetails}`);
|
|
208
185
|
}
|
|
209
|
-
//
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
186
|
+
// Reconcile against the server (picks up generated variants / metadata)
|
|
187
|
+
// — replaces the old silent-reload timer.
|
|
188
|
+
if (successCount > 0) {
|
|
189
|
+
queryClient.invalidateQueries({
|
|
190
|
+
queryKey: queryKeys.files.list(targetUserId)
|
|
191
|
+
});
|
|
192
|
+
}
|
|
213
193
|
} catch (error) {
|
|
214
194
|
toast.error(getErrorMessage(error) || t('fileManagement.toasts.uploadError'));
|
|
215
195
|
} finally {
|
|
216
|
-
|
|
196
|
+
setUploadProgress(null);
|
|
217
197
|
}
|
|
218
198
|
return uploadedFiles;
|
|
219
199
|
};
|
|
@@ -223,34 +203,22 @@ export const useFileUploadState = ({
|
|
|
223
203
|
for (const file of selectedFiles) {
|
|
224
204
|
// Validate file has required properties
|
|
225
205
|
if (!file) {
|
|
226
|
-
if (__DEV__) {
|
|
227
|
-
console.error('Invalid file: file is null or undefined');
|
|
228
|
-
}
|
|
229
206
|
toast.error(t('fileManagement.toasts.invalidFileMissing'));
|
|
230
207
|
continue;
|
|
231
208
|
}
|
|
232
209
|
const name = candidateName(file, '');
|
|
233
210
|
if (!name) {
|
|
234
|
-
if (__DEV__) {
|
|
235
|
-
console.error('Invalid file: missing or invalid name property', file);
|
|
236
|
-
}
|
|
237
211
|
toast.error(t('fileManagement.toasts.invalidFileName'));
|
|
238
212
|
continue;
|
|
239
213
|
}
|
|
240
214
|
const size = file.size;
|
|
241
215
|
if (size === undefined || size === null || Number.isNaN(size)) {
|
|
242
|
-
if (__DEV__) {
|
|
243
|
-
console.error('Invalid file: missing or invalid size property', file);
|
|
244
|
-
}
|
|
245
216
|
toast.error(t('fileManagement.toasts.invalidFileSize', {
|
|
246
217
|
name
|
|
247
218
|
}));
|
|
248
219
|
continue;
|
|
249
220
|
}
|
|
250
221
|
if (size <= 0) {
|
|
251
|
-
if (__DEV__) {
|
|
252
|
-
console.error('Invalid file: file size is zero or negative', file);
|
|
253
|
-
}
|
|
254
222
|
toast.error(t('fileManagement.toasts.fileEmpty', {
|
|
255
223
|
name
|
|
256
224
|
}));
|
|
@@ -280,11 +248,8 @@ export const useFileUploadState = ({
|
|
|
280
248
|
if (typeof File !== 'undefined' && file instanceof File || typeof Blob !== 'undefined' && file instanceof Blob) {
|
|
281
249
|
preview = URL.createObjectURL(file);
|
|
282
250
|
}
|
|
283
|
-
} catch
|
|
284
|
-
|
|
285
|
-
console.warn('Failed to create preview URL:', error);
|
|
286
|
-
}
|
|
287
|
-
// Preview is optional, continue without it
|
|
251
|
+
} catch {
|
|
252
|
+
// Preview is optional — continue without it.
|
|
288
253
|
}
|
|
289
254
|
}
|
|
290
255
|
}
|
|
@@ -303,25 +268,25 @@ export const useFileUploadState = ({
|
|
|
303
268
|
if (pendingFiles.length === 0) return;
|
|
304
269
|
setShowUploadPreview(false);
|
|
305
270
|
uploadStartRef.current = Date.now();
|
|
306
|
-
|
|
307
|
-
|
|
271
|
+
setUploading(true);
|
|
272
|
+
setUploadProgress(null);
|
|
308
273
|
try {
|
|
309
274
|
const filesToUpload = pendingFiles.map(pf => pf.file);
|
|
310
|
-
|
|
275
|
+
setUploadProgress({
|
|
311
276
|
current: 0,
|
|
312
277
|
total: filesToUpload.length
|
|
313
278
|
});
|
|
314
279
|
const uploadedFiles = await processFileUploads(filesToUpload);
|
|
315
280
|
|
|
316
281
|
// Cleanup preview URLs
|
|
317
|
-
|
|
282
|
+
for (const pf of pendingFiles) {
|
|
318
283
|
revokePreviewUrl(pf.preview);
|
|
319
|
-
}
|
|
284
|
+
}
|
|
320
285
|
setPendingFiles([]);
|
|
321
286
|
|
|
322
287
|
// If in selectMode, automatically select the uploaded file(s)
|
|
323
288
|
if (selectMode && uploadedFiles.length > 0) {
|
|
324
|
-
//
|
|
289
|
+
// Defer one tick so the query cache has settled before selecting.
|
|
325
290
|
setTimeout(() => {
|
|
326
291
|
const fileToSelect = uploadedFiles[0];
|
|
327
292
|
if (!multiSelect && fileToSelect) {
|
|
@@ -334,11 +299,11 @@ export const useFileUploadState = ({
|
|
|
334
299
|
}
|
|
335
300
|
} else if (multiSelect) {
|
|
336
301
|
// Multi-select mode - add all uploaded files to selection
|
|
337
|
-
|
|
302
|
+
for (const file of uploadedFiles) {
|
|
338
303
|
if (!selectedIds.has(file.id)) {
|
|
339
304
|
setSelectedIds(prev => new Set(prev).add(file.id));
|
|
340
305
|
}
|
|
341
|
-
}
|
|
306
|
+
}
|
|
342
307
|
}
|
|
343
308
|
}, 500);
|
|
344
309
|
}
|
|
@@ -350,9 +315,9 @@ export const useFileUploadState = ({
|
|
|
350
315
|
};
|
|
351
316
|
const handleCancelUpload = () => {
|
|
352
317
|
// Cleanup preview URLs
|
|
353
|
-
|
|
318
|
+
for (const pf of pendingFiles) {
|
|
354
319
|
revokePreviewUrl(pf.preview);
|
|
355
|
-
}
|
|
320
|
+
}
|
|
356
321
|
setPendingFiles([]);
|
|
357
322
|
setShowUploadPreview(false);
|
|
358
323
|
};
|
|
@@ -453,9 +418,6 @@ export const useFileUploadState = ({
|
|
|
453
418
|
toast.error(t('fileManagement.toasts.noFilesProcessed'));
|
|
454
419
|
}
|
|
455
420
|
} catch (error) {
|
|
456
|
-
if (__DEV__) {
|
|
457
|
-
console.error('File upload error:', error);
|
|
458
|
-
}
|
|
459
421
|
if (getErrorMessage(error)?.includes('expo-document-picker') || getErrorMessage(error)?.includes('Different document picking in progress')) {
|
|
460
422
|
if (getErrorMessage(error)?.includes('Different document picking in progress')) {
|
|
461
423
|
toast.error(t('fileManagement.toasts.waitForSelection'));
|
|
@@ -474,6 +436,8 @@ export const useFileUploadState = ({
|
|
|
474
436
|
isPickingDocument,
|
|
475
437
|
pendingFiles,
|
|
476
438
|
showUploadPreview,
|
|
439
|
+
uploading,
|
|
440
|
+
uploadProgress,
|
|
477
441
|
handleFileUpload,
|
|
478
442
|
handleConfirmUpload,
|
|
479
443
|
handleCancelUpload,
|