@oxyhq/services 22.6.1 → 22.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js +99 -77
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +33 -40
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js +92 -88
- package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +169 -310
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/FileListSection.js +17 -14
- package/lib/commonjs/ui/screens/fileManagement/FileListSection.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +16 -20
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/UploadBar.js +29 -12
- package/lib/commonjs/ui/screens/fileManagement/UploadBar.js.map +1 -1
- package/lib/commonjs/ui/server.js +1 -1
- package/lib/commonjs/ui/server.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileViewer.js +100 -78
- package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js +34 -41
- package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js +94 -90
- package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +171 -313
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/FileListSection.js +17 -14
- package/lib/module/ui/screens/fileManagement/FileListSection.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +17 -21
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/UploadBar.js +30 -13
- package/lib/module/ui/screens/fileManagement/UploadBar.js.map +1 -1
- package/lib/module/ui/server.js +1 -1
- package/lib/module/ui/server.js.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.map +1 -1
- package/lib/typescript/commonjs/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +2 -2
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/server.d.ts +1 -1
- package/lib/typescript/commonjs/ui/server.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.map +1 -1
- package/lib/typescript/module/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +2 -2
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
- package/lib/typescript/module/ui/server.d.ts +1 -1
- package/lib/typescript/module/ui/server.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ui/components/fileManagement/FileViewer.tsx +82 -68
- package/src/ui/components/fileManagement/UploadPreview.tsx +34 -29
- package/src/ui/components/photogrid/JustifiedPhotoGrid.tsx +14 -12
- package/src/ui/screens/FileManagementScreen.tsx +123 -300
- package/src/ui/screens/fileManagement/FileListSection.tsx +10 -10
- package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +16 -19
- package/src/ui/screens/fileManagement/UploadBar.tsx +29 -14
- package/src/ui/server.ts +1 -1
- package/lib/commonjs/ui/components/fileManagement/styles.js +0 -832
- package/lib/commonjs/ui/components/fileManagement/styles.js.map +0 -1
- package/lib/module/ui/components/fileManagement/styles.js +0 -828
- package/lib/module/ui/components/fileManagement/styles.js.map +0 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts +0 -825
- package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/fileManagement/styles.d.ts +0 -825
- package/lib/typescript/module/ui/components/fileManagement/styles.d.ts.map +0 -1
- package/src/ui/components/fileManagement/styles.ts +0 -823
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useState, useEffect, useCallback, useMemo, useRef } from 'react';
|
|
4
|
-
import { View, Text, TouchableOpacity, StyleSheet, ScrollView, ActivityIndicator, RefreshControl, TextInput, Image, Animated, Easing, AccessibilityInfo } from 'react-native';
|
|
4
|
+
import { View, Text, TouchableOpacity, StyleSheet, ScrollView, ActivityIndicator, RefreshControl, TextInput, Image, Animated, Easing, AccessibilityInfo, useWindowDimensions } from 'react-native';
|
|
5
5
|
import { Image as ExpoImage } from 'expo-image';
|
|
6
6
|
import { Dialog, toast, useDialogControl } from '@oxyhq/bloom';
|
|
7
7
|
import { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';
|
|
@@ -17,15 +17,39 @@ import { useResolvedFileUrls, fileThumbSource } from "../hooks/useResolvedFileUr
|
|
|
17
17
|
import { FileViewer } from "../components/fileManagement/FileViewer.js";
|
|
18
18
|
import { FileDetailsModal } from "../components/fileManagement/FileDetailsModal.js";
|
|
19
19
|
import { UploadPreview } from "../components/fileManagement/UploadPreview.js";
|
|
20
|
-
import { fileManagementStyles } from "../components/fileManagement/styles.js";
|
|
21
20
|
import { getErrorMessage } from "./fileManagement/shared.js";
|
|
22
21
|
import { useFileUploadState } from "./fileManagement/hooks/useFileUploadState.js";
|
|
23
22
|
import PhotoPickerView from "./fileManagement/PhotoPickerSection.js";
|
|
24
23
|
import FileListSection from "./fileManagement/FileListSection.js";
|
|
25
24
|
import UploadBar from "./fileManagement/UploadBar.js";
|
|
26
25
|
|
|
27
|
-
//
|
|
26
|
+
// Genuinely-inline-only styles: `viewModeButton` is spread into an Animated.View
|
|
27
|
+
// style array (interpolated backgroundColor), and the photo tiles are
|
|
28
|
+
// `expo-image` (no className remap). Everything else uses NativeWind classNames.
|
|
28
29
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
30
|
+
const screenStyles = StyleSheet.create({
|
|
31
|
+
viewModeButton: {
|
|
32
|
+
paddingHorizontal: 10,
|
|
33
|
+
paddingVertical: 6,
|
|
34
|
+
borderRadius: 999,
|
|
35
|
+
minWidth: 36,
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
justifyContent: 'center',
|
|
38
|
+
marginHorizontal: 1
|
|
39
|
+
},
|
|
40
|
+
photoImage: {
|
|
41
|
+
width: '100%',
|
|
42
|
+
height: '100%',
|
|
43
|
+
borderRadius: 8
|
|
44
|
+
},
|
|
45
|
+
justifiedPhotoImage: {
|
|
46
|
+
width: '100%',
|
|
47
|
+
height: '100%',
|
|
48
|
+
borderRadius: 6
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Animated button component for smooth transitions
|
|
29
53
|
const AnimatedButton = ({
|
|
30
54
|
isSelected,
|
|
31
55
|
onPress,
|
|
@@ -76,8 +100,7 @@ const FileManagementScreen = ({
|
|
|
76
100
|
goBack,
|
|
77
101
|
navigate,
|
|
78
102
|
userId,
|
|
79
|
-
containerWidth
|
|
80
|
-
// Fallback for when not provided by the router
|
|
103
|
+
containerWidth,
|
|
81
104
|
selectMode = false,
|
|
82
105
|
multiSelect = false,
|
|
83
106
|
onSelect,
|
|
@@ -108,8 +131,12 @@ const FileManagementScreen = ({
|
|
|
108
131
|
const visibilityChangeDialog = useDialogControl();
|
|
109
132
|
const [pendingDeleteFile, setPendingDeleteFile] = useState(null);
|
|
110
133
|
const files = useFiles();
|
|
111
|
-
|
|
112
|
-
|
|
134
|
+
const {
|
|
135
|
+
width: windowWidth
|
|
136
|
+
} = useWindowDimensions();
|
|
137
|
+
// Prefer an explicit sheet width from the router; fall back to the window
|
|
138
|
+
// so photo grids never size against a hardcoded 400px default.
|
|
139
|
+
const safeContainerWidth = typeof containerWidth === 'number' && containerWidth > 0 ? containerWidth : windowWidth;
|
|
113
140
|
const uploading = useUploadingStore();
|
|
114
141
|
const uploadProgress = useUploadAggregateProgress();
|
|
115
142
|
const deleting = useDeletingStore();
|
|
@@ -738,60 +765,11 @@ const FileManagementScreen = ({
|
|
|
738
765
|
setSelectedFile(file);
|
|
739
766
|
fileDetailsControl.open();
|
|
740
767
|
};
|
|
741
|
-
const renderSimplePhotoItem = useCallback((photo, index) => {
|
|
742
|
-
const downloadUrl = thumbSourceFor(photo);
|
|
743
|
-
|
|
744
|
-
// Calculate photo item width based on actual container size from bottom sheet
|
|
745
|
-
let itemsPerRow = 3; // Default for mobile
|
|
746
|
-
if (safeContainerWidth > 768) itemsPerRow = 4; // Desktop/tablet
|
|
747
|
-
else if (safeContainerWidth > 480) itemsPerRow = 3; // Large mobile
|
|
748
|
-
|
|
749
|
-
// Account for the photoScrollContainer padding (16px on each side = 32px total)
|
|
750
|
-
const scrollContainerPadding = 32; // Total horizontal padding from photoScrollContainer
|
|
751
|
-
const gaps = (itemsPerRow - 1) * 4; // Gap between items (4px)
|
|
752
|
-
const availableWidth = safeContainerWidth - scrollContainerPadding;
|
|
753
|
-
const itemWidth = (availableWidth - gaps) / itemsPerRow;
|
|
754
|
-
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
755
|
-
style: [fileManagementStyles.simplePhotoItem, {
|
|
756
|
-
width: itemWidth,
|
|
757
|
-
height: itemWidth,
|
|
758
|
-
marginRight: (index + 1) % itemsPerRow === 0 ? 0 : 4,
|
|
759
|
-
...(selectMode && selectedIds.has(photo.id) ? {
|
|
760
|
-
borderWidth: 2,
|
|
761
|
-
borderColor: colors.primary
|
|
762
|
-
} : {})
|
|
763
|
-
}],
|
|
764
|
-
onPress: () => handleFileOpen(photo),
|
|
765
|
-
activeOpacity: 0.8,
|
|
766
|
-
children: /*#__PURE__*/_jsxs(View, {
|
|
767
|
-
style: fileManagementStyles.simplePhotoContainer,
|
|
768
|
-
children: [/*#__PURE__*/_jsx(ExpoImage, {
|
|
769
|
-
source: {
|
|
770
|
-
uri: downloadUrl
|
|
771
|
-
},
|
|
772
|
-
style: fileManagementStyles.simplePhotoImage,
|
|
773
|
-
contentFit: "cover",
|
|
774
|
-
transition: 120,
|
|
775
|
-
cachePolicy: "memory-disk",
|
|
776
|
-
onError: () => {
|
|
777
|
-
// Photo failed to load, will show placeholder
|
|
778
|
-
},
|
|
779
|
-
accessibilityLabel: photo.filename
|
|
780
|
-
}), selectMode && /*#__PURE__*/_jsx(View, {
|
|
781
|
-
style: fileManagementStyles.selectionBadge,
|
|
782
|
-
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
783
|
-
name: selectedIds.has(photo.id) ? 'checkmark-circle' : 'ellipse-outline',
|
|
784
|
-
size: 20,
|
|
785
|
-
color: selectedIds.has(photo.id) ? colors.primary : colors.text
|
|
786
|
-
})
|
|
787
|
-
})]
|
|
788
|
-
})
|
|
789
|
-
}, photo.id);
|
|
790
|
-
}, [thumbSourceFor, safeContainerWidth, selectMode, selectedIds, colors.primary, colors.text]);
|
|
791
768
|
const renderJustifiedPhotoItem = useCallback((photo, width, height, isLast) => {
|
|
792
769
|
const downloadUrl = thumbSourceFor(photo);
|
|
793
770
|
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
794
|
-
|
|
771
|
+
className: "rounded-[6px] overflow-hidden relative",
|
|
772
|
+
style: {
|
|
795
773
|
width,
|
|
796
774
|
height,
|
|
797
775
|
...(selectMode && selectedIds.has(photo.id) ? {
|
|
@@ -801,16 +779,16 @@ const FileManagementScreen = ({
|
|
|
801
779
|
...(selectMode && multiSelect && selectedIds.size > 0 && !selectedIds.has(photo.id) ? {
|
|
802
780
|
opacity: 0.4
|
|
803
781
|
} : {})
|
|
804
|
-
}
|
|
782
|
+
},
|
|
805
783
|
onPress: () => handleFileOpen(photo),
|
|
806
784
|
activeOpacity: 0.8,
|
|
807
785
|
children: /*#__PURE__*/_jsxs(View, {
|
|
808
|
-
|
|
786
|
+
className: "w-full h-full relative rounded-[6px] overflow-hidden",
|
|
809
787
|
children: [/*#__PURE__*/_jsx(ExpoImage, {
|
|
810
788
|
source: {
|
|
811
789
|
uri: downloadUrl
|
|
812
790
|
},
|
|
813
|
-
style:
|
|
791
|
+
style: screenStyles.justifiedPhotoImage,
|
|
814
792
|
contentFit: "cover",
|
|
815
793
|
transition: 120,
|
|
816
794
|
cachePolicy: "memory-disk",
|
|
@@ -819,7 +797,10 @@ const FileManagementScreen = ({
|
|
|
819
797
|
},
|
|
820
798
|
accessibilityLabel: photo.filename
|
|
821
799
|
}), selectMode && /*#__PURE__*/_jsx(View, {
|
|
822
|
-
|
|
800
|
+
className: "absolute top-[4px] right-[4px] rounded-[12px] p-[2px]",
|
|
801
|
+
style: {
|
|
802
|
+
backgroundColor: 'rgba(0,0,0,0.4)'
|
|
803
|
+
},
|
|
823
804
|
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
824
805
|
name: selectedIds.has(photo.id) ? 'checkmark-circle' : 'ellipse-outline',
|
|
825
806
|
size: 20,
|
|
@@ -840,160 +821,6 @@ const FileManagementScreen = ({
|
|
|
840
821
|
}
|
|
841
822
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
842
823
|
}, [targetUserId]);
|
|
843
|
-
const renderFileItem = file => {
|
|
844
|
-
const isImage = file.contentType.startsWith('image/');
|
|
845
|
-
const isPDF = file.contentType.includes('pdf');
|
|
846
|
-
const isVideo = file.contentType.startsWith('video/');
|
|
847
|
-
const isAudio = file.contentType.startsWith('audio/');
|
|
848
|
-
const hasPreview = isImage || isPDF || isVideo;
|
|
849
|
-
const borderColor = colors.border;
|
|
850
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
851
|
-
style: [fileManagementStyles.fileItem, {
|
|
852
|
-
backgroundColor: colors.backgroundSecondary,
|
|
853
|
-
borderColor
|
|
854
|
-
}, selectMode && selectedIds.has(file.id) && {
|
|
855
|
-
borderColor: colors.primary,
|
|
856
|
-
borderWidth: 2
|
|
857
|
-
}],
|
|
858
|
-
children: [/*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
859
|
-
style: fileManagementStyles.fileContent,
|
|
860
|
-
onPress: () => handleFileOpen(file),
|
|
861
|
-
children: [/*#__PURE__*/_jsx(View, {
|
|
862
|
-
style: fileManagementStyles.filePreviewContainer,
|
|
863
|
-
children: hasPreview ? /*#__PURE__*/_jsxs(View, {
|
|
864
|
-
style: fileManagementStyles.filePreview,
|
|
865
|
-
children: [isImage && /*#__PURE__*/_jsx(ExpoImage, {
|
|
866
|
-
source: {
|
|
867
|
-
uri: thumbSourceFor(file)
|
|
868
|
-
},
|
|
869
|
-
style: fileManagementStyles.previewImage,
|
|
870
|
-
contentFit: "cover",
|
|
871
|
-
transition: 120,
|
|
872
|
-
cachePolicy: "memory-disk",
|
|
873
|
-
onError: () => {
|
|
874
|
-
// Image preview failed to load
|
|
875
|
-
},
|
|
876
|
-
accessibilityLabel: file.filename
|
|
877
|
-
}), isPDF && /*#__PURE__*/_jsxs(View, {
|
|
878
|
-
style: fileManagementStyles.pdfPreview,
|
|
879
|
-
children: [/*#__PURE__*/_jsx(Ionicons, {
|
|
880
|
-
name: "document",
|
|
881
|
-
size: 32,
|
|
882
|
-
color: colors.primary
|
|
883
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
884
|
-
style: [fileManagementStyles.pdfLabel, {
|
|
885
|
-
color: colors.primary
|
|
886
|
-
}],
|
|
887
|
-
children: "PDF"
|
|
888
|
-
})]
|
|
889
|
-
}), isVideo && /*#__PURE__*/_jsxs(View, {
|
|
890
|
-
style: fileManagementStyles.videoPreviewWrapper,
|
|
891
|
-
children: [/*#__PURE__*/_jsx(ExpoImage, {
|
|
892
|
-
source: {
|
|
893
|
-
uri: thumbSourceFor(file)
|
|
894
|
-
},
|
|
895
|
-
style: fileManagementStyles.videoPosterImage,
|
|
896
|
-
contentFit: "cover",
|
|
897
|
-
transition: 120,
|
|
898
|
-
cachePolicy: "memory-disk",
|
|
899
|
-
onError: _ => {
|
|
900
|
-
// If thumbnail not available, we still show icon overlay
|
|
901
|
-
},
|
|
902
|
-
accessibilityLabel: `${file.filename} video thumbnail`
|
|
903
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
904
|
-
style: fileManagementStyles.videoOverlay,
|
|
905
|
-
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
906
|
-
name: "play",
|
|
907
|
-
size: 24,
|
|
908
|
-
color: "#FFFFFF"
|
|
909
|
-
})
|
|
910
|
-
})]
|
|
911
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
912
|
-
style: [fileManagementStyles.fallbackIcon, {
|
|
913
|
-
display: isImage ? 'none' : 'flex'
|
|
914
|
-
}],
|
|
915
|
-
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
916
|
-
name: getFileIcon(file.contentType),
|
|
917
|
-
size: 32,
|
|
918
|
-
color: colors.primary
|
|
919
|
-
})
|
|
920
|
-
}), selectMode && /*#__PURE__*/_jsx(View, {
|
|
921
|
-
style: fileManagementStyles.selectionBadge,
|
|
922
|
-
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
923
|
-
name: selectedIds.has(file.id) ? 'checkmark-circle' : 'ellipse-outline',
|
|
924
|
-
size: 22,
|
|
925
|
-
color: selectedIds.has(file.id) ? colors.primary : colors.text
|
|
926
|
-
})
|
|
927
|
-
})]
|
|
928
|
-
}) : /*#__PURE__*/_jsx(View, {
|
|
929
|
-
style: fileManagementStyles.fileIconContainer,
|
|
930
|
-
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
931
|
-
name: getFileIcon(file.contentType),
|
|
932
|
-
size: 32,
|
|
933
|
-
color: colors.primary
|
|
934
|
-
})
|
|
935
|
-
})
|
|
936
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
937
|
-
style: fileManagementStyles.fileInfo,
|
|
938
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
939
|
-
style: [fileManagementStyles.fileName, {
|
|
940
|
-
color: colors.text
|
|
941
|
-
}],
|
|
942
|
-
numberOfLines: 1,
|
|
943
|
-
children: file.filename
|
|
944
|
-
}), /*#__PURE__*/_jsxs(Text, {
|
|
945
|
-
style: [fileManagementStyles.fileDetails, {
|
|
946
|
-
color: colors.textSecondary
|
|
947
|
-
}],
|
|
948
|
-
children: [formatFileSize(file.length), " \u2022 ", new Date(file.uploadDate).toLocaleDateString()]
|
|
949
|
-
}), file.metadata?.description && /*#__PURE__*/_jsx(Text, {
|
|
950
|
-
style: [fileManagementStyles.fileDescription, {
|
|
951
|
-
color: colors.textTertiary
|
|
952
|
-
}],
|
|
953
|
-
numberOfLines: 2,
|
|
954
|
-
children: file.metadata.description
|
|
955
|
-
})]
|
|
956
|
-
})]
|
|
957
|
-
}), !selectMode && /*#__PURE__*/_jsxs(View, {
|
|
958
|
-
style: fileManagementStyles.fileActions,
|
|
959
|
-
children: [hasPreview && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
960
|
-
style: [fileManagementStyles.actionButton, {
|
|
961
|
-
backgroundColor: colors.backgroundSecondary
|
|
962
|
-
}],
|
|
963
|
-
onPress: () => handleFileOpen(file),
|
|
964
|
-
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
965
|
-
name: "eye",
|
|
966
|
-
size: 20,
|
|
967
|
-
color: colors.primary
|
|
968
|
-
})
|
|
969
|
-
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
970
|
-
style: [fileManagementStyles.actionButton, {
|
|
971
|
-
backgroundColor: colors.backgroundSecondary
|
|
972
|
-
}],
|
|
973
|
-
onPress: () => handleFileDownload(file.id, file.filename),
|
|
974
|
-
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
975
|
-
name: "download",
|
|
976
|
-
size: 20,
|
|
977
|
-
color: colors.primary
|
|
978
|
-
})
|
|
979
|
-
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
980
|
-
style: [fileManagementStyles.actionButton, {
|
|
981
|
-
backgroundColor: colors.negativeSubtle
|
|
982
|
-
}],
|
|
983
|
-
onPress: () => confirmFileDelete(file.id, file.filename),
|
|
984
|
-
disabled: deleting === file.id,
|
|
985
|
-
children: deleting === file.id ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
986
|
-
size: "small",
|
|
987
|
-
color: colors.error
|
|
988
|
-
}) : /*#__PURE__*/_jsx(Ionicons, {
|
|
989
|
-
name: "trash",
|
|
990
|
-
size: 20,
|
|
991
|
-
color: colors.error
|
|
992
|
-
})
|
|
993
|
-
})]
|
|
994
|
-
})]
|
|
995
|
-
}, file.id);
|
|
996
|
-
};
|
|
997
824
|
|
|
998
825
|
// SettingsListItem-based file items (for 'all' view)
|
|
999
826
|
const groupedFileItems = useMemo(() => {
|
|
@@ -1115,11 +942,12 @@ const FileManagementScreen = ({
|
|
|
1115
942
|
},
|
|
1116
943
|
// Hide action buttons when selecting (in selectMode or bulk operations mode)
|
|
1117
944
|
rightElement: !selectMode && selectedIds.size === 0 ? /*#__PURE__*/_jsxs(View, {
|
|
1118
|
-
|
|
945
|
+
className: "flex-row items-center gap-[6px] ml-[12px]",
|
|
1119
946
|
children: [(isImage || isVideo || file.contentType.includes('pdf')) && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
1120
|
-
|
|
947
|
+
className: "w-[34px] h-[34px] rounded-[8px] items-center justify-center",
|
|
948
|
+
style: {
|
|
1121
949
|
backgroundColor: colors.backgroundSecondary
|
|
1122
|
-
}
|
|
950
|
+
},
|
|
1123
951
|
onPress: () => handleFileOpen(file),
|
|
1124
952
|
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
1125
953
|
name: "eye",
|
|
@@ -1127,9 +955,10 @@ const FileManagementScreen = ({
|
|
|
1127
955
|
color: colors.primary
|
|
1128
956
|
})
|
|
1129
957
|
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
1130
|
-
|
|
958
|
+
className: "w-[34px] h-[34px] rounded-[8px] items-center justify-center",
|
|
959
|
+
style: {
|
|
1131
960
|
backgroundColor: colors.backgroundSecondary
|
|
1132
|
-
}
|
|
961
|
+
},
|
|
1133
962
|
onPress: () => handleFileDownload(file.id, file.filename),
|
|
1134
963
|
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
1135
964
|
name: "download",
|
|
@@ -1137,9 +966,10 @@ const FileManagementScreen = ({
|
|
|
1137
966
|
color: colors.primary
|
|
1138
967
|
})
|
|
1139
968
|
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
1140
|
-
|
|
969
|
+
className: "w-[34px] h-[34px] rounded-[8px] items-center justify-center",
|
|
970
|
+
style: {
|
|
1141
971
|
backgroundColor: colors.negativeSubtle
|
|
1142
|
-
}
|
|
972
|
+
},
|
|
1143
973
|
onPress: () => confirmFileDelete(file.id, file.filename),
|
|
1144
974
|
disabled: deleting === file.id,
|
|
1145
975
|
children: deleting === file.id ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
@@ -1251,19 +1081,20 @@ const FileManagementScreen = ({
|
|
|
1251
1081
|
const availableWidth = safeContainerWidth - scrollContainerPadding;
|
|
1252
1082
|
const itemWidth = (availableWidth - gaps) / itemsPerRow;
|
|
1253
1083
|
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
1254
|
-
|
|
1084
|
+
className: "rounded-[8px] overflow-hidden",
|
|
1085
|
+
style: {
|
|
1255
1086
|
width: itemWidth,
|
|
1256
1087
|
height: itemWidth
|
|
1257
|
-
}
|
|
1088
|
+
},
|
|
1258
1089
|
onPress: () => handleFileOpen(photo),
|
|
1259
1090
|
activeOpacity: 0.8,
|
|
1260
1091
|
children: /*#__PURE__*/_jsx(View, {
|
|
1261
|
-
|
|
1092
|
+
className: "w-full h-full relative rounded-[8px] overflow-hidden",
|
|
1262
1093
|
children: /*#__PURE__*/_jsx(ExpoImage, {
|
|
1263
1094
|
source: {
|
|
1264
1095
|
uri: downloadUrl
|
|
1265
1096
|
},
|
|
1266
|
-
style:
|
|
1097
|
+
style: screenStyles.photoImage,
|
|
1267
1098
|
contentFit: "cover",
|
|
1268
1099
|
transition: 120,
|
|
1269
1100
|
cachePolicy: "memory-disk",
|
|
@@ -1279,25 +1110,28 @@ const FileManagementScreen = ({
|
|
|
1279
1110
|
const photos = filteredFiles.filter(file => file.contentType.startsWith('image/'));
|
|
1280
1111
|
if (photos.length === 0) {
|
|
1281
1112
|
return /*#__PURE__*/_jsxs(View, {
|
|
1282
|
-
|
|
1113
|
+
className: "items-center py-[40px] px-[24px]",
|
|
1283
1114
|
children: [/*#__PURE__*/_jsx(Ionicons, {
|
|
1284
1115
|
name: "images-outline",
|
|
1285
1116
|
size: 64,
|
|
1286
1117
|
color: colors.textTertiary
|
|
1287
1118
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1288
|
-
|
|
1119
|
+
className: "text-[24px] font-bold mt-[16px] mb-[8px]",
|
|
1120
|
+
style: {
|
|
1289
1121
|
color: colors.text
|
|
1290
|
-
}
|
|
1122
|
+
},
|
|
1291
1123
|
children: t('fileManagement.emptyPhotos.title')
|
|
1292
1124
|
}), /*#__PURE__*/_jsxs(Text, {
|
|
1293
|
-
|
|
1125
|
+
className: "text-[16px] text-center leading-[24px] mb-[32px]",
|
|
1126
|
+
style: {
|
|
1294
1127
|
color: colors.textSecondary
|
|
1295
|
-
}
|
|
1128
|
+
},
|
|
1296
1129
|
children: [" ", user?.id === targetUserId ? t('fileManagement.emptyPhotos.ownDescription') : t('fileManagement.emptyPhotos.otherDescription'), " "]
|
|
1297
1130
|
}), user?.id === targetUserId && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
1298
|
-
|
|
1131
|
+
className: "flex-row items-center px-[24px] py-[12px] rounded-[24px] gap-[8px]",
|
|
1132
|
+
style: {
|
|
1299
1133
|
backgroundColor: colors.primary
|
|
1300
|
-
}
|
|
1134
|
+
},
|
|
1301
1135
|
onPress: handleFileUpload,
|
|
1302
1136
|
disabled: uploading || isPickingDocument,
|
|
1303
1137
|
children: uploading ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
@@ -1312,7 +1146,7 @@ const FileManagementScreen = ({
|
|
|
1312
1146
|
size: 20,
|
|
1313
1147
|
color: "#FFFFFF"
|
|
1314
1148
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1315
|
-
|
|
1149
|
+
className: "text-white text-[16px] font-semibold",
|
|
1316
1150
|
children: t('fileManagement.uploadPhotos')
|
|
1317
1151
|
})]
|
|
1318
1152
|
})
|
|
@@ -1321,8 +1155,8 @@ const FileManagementScreen = ({
|
|
|
1321
1155
|
}
|
|
1322
1156
|
return /*#__PURE__*/_jsxs(ScrollView, {
|
|
1323
1157
|
ref: photoScrollViewRef,
|
|
1324
|
-
|
|
1325
|
-
|
|
1158
|
+
className: "flex-1",
|
|
1159
|
+
contentContainerClassName: "p-[10px]",
|
|
1326
1160
|
refreshControl: /*#__PURE__*/_jsx(RefreshControl, {
|
|
1327
1161
|
refreshing: refreshing,
|
|
1328
1162
|
onRefresh: () => loadFiles('refresh'),
|
|
@@ -1344,14 +1178,15 @@ const FileManagementScreen = ({
|
|
|
1344
1178
|
},
|
|
1345
1179
|
scrollEventThrottle: 250,
|
|
1346
1180
|
children: [loadingDimensions && /*#__PURE__*/_jsxs(View, {
|
|
1347
|
-
|
|
1181
|
+
className: "flex-row items-center justify-center py-[16px] gap-[8px]",
|
|
1348
1182
|
children: [/*#__PURE__*/_jsx(ActivityIndicator, {
|
|
1349
1183
|
size: "small",
|
|
1350
1184
|
color: colors.primary
|
|
1351
1185
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1352
|
-
|
|
1186
|
+
className: "text-[14px] italic",
|
|
1187
|
+
style: {
|
|
1353
1188
|
color: colors.textSecondary
|
|
1354
|
-
}
|
|
1189
|
+
},
|
|
1355
1190
|
children: t('fileManagement.loadingPhotoLayout')
|
|
1356
1191
|
})]
|
|
1357
1192
|
}), /*#__PURE__*/_jsx(JustifiedPhotoGrid, {
|
|
@@ -1370,25 +1205,28 @@ const FileManagementScreen = ({
|
|
|
1370
1205
|
// Inline justified grid removed (moved to components/photogrid/JustifiedPhotoGrid.tsx)
|
|
1371
1206
|
|
|
1372
1207
|
const renderEmptyState = () => /*#__PURE__*/_jsxs(View, {
|
|
1373
|
-
|
|
1208
|
+
className: "items-center py-[40px] px-[24px]",
|
|
1374
1209
|
children: [/*#__PURE__*/_jsx(Ionicons, {
|
|
1375
1210
|
name: "folder-open-outline",
|
|
1376
1211
|
size: 64,
|
|
1377
1212
|
color: colors.textTertiary
|
|
1378
1213
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1379
|
-
|
|
1214
|
+
className: "text-[24px] font-bold mt-[16px] mb-[8px]",
|
|
1215
|
+
style: {
|
|
1380
1216
|
color: colors.text
|
|
1381
|
-
}
|
|
1217
|
+
},
|
|
1382
1218
|
children: t('fileManagement.emptyFiles.title')
|
|
1383
1219
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1384
|
-
|
|
1220
|
+
className: "text-[16px] text-center leading-[24px] mb-[32px]",
|
|
1221
|
+
style: {
|
|
1385
1222
|
color: colors.textSecondary
|
|
1386
|
-
}
|
|
1223
|
+
},
|
|
1387
1224
|
children: user?.id === targetUserId ? t('fileManagement.emptyFiles.ownDescription') : t('fileManagement.emptyFiles.otherDescription')
|
|
1388
1225
|
}), user?.id === targetUserId && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
1389
|
-
|
|
1226
|
+
className: "flex-row items-center px-[24px] py-[12px] rounded-[24px] gap-[8px]",
|
|
1227
|
+
style: {
|
|
1390
1228
|
backgroundColor: colors.primary
|
|
1391
|
-
}
|
|
1229
|
+
},
|
|
1392
1230
|
onPress: handleFileUpload,
|
|
1393
1231
|
disabled: uploading || isPickingDocument,
|
|
1394
1232
|
children: uploading ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
@@ -1403,7 +1241,7 @@ const FileManagementScreen = ({
|
|
|
1403
1241
|
size: 20,
|
|
1404
1242
|
color: "#FFFFFF"
|
|
1405
1243
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1406
|
-
|
|
1244
|
+
className: "text-white text-[16px] font-semibold",
|
|
1407
1245
|
children: t('fileManagement.uploadFiles')
|
|
1408
1246
|
})]
|
|
1409
1247
|
})
|
|
@@ -1527,22 +1365,22 @@ const FileManagementScreen = ({
|
|
|
1527
1365
|
})]
|
|
1528
1366
|
});
|
|
1529
1367
|
return /*#__PURE__*/_jsxs(View, {
|
|
1530
|
-
|
|
1368
|
+
className: "flex-1",
|
|
1369
|
+
style: {
|
|
1531
1370
|
backgroundColor
|
|
1532
|
-
}
|
|
1371
|
+
},
|
|
1533
1372
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
1534
|
-
|
|
1373
|
+
className: "flex-row items-center justify-between px-[16px] py-[12px] relative",
|
|
1374
|
+
style: {
|
|
1535
1375
|
borderBottomColor: colors.border,
|
|
1536
1376
|
borderBottomWidth: StyleSheet.hairlineWidth
|
|
1537
|
-
}
|
|
1377
|
+
},
|
|
1538
1378
|
children: [/*#__PURE__*/_jsx(SkeletonBox, {
|
|
1539
1379
|
width: 44,
|
|
1540
1380
|
height: 44,
|
|
1541
1381
|
borderRadius: 12
|
|
1542
1382
|
}), /*#__PURE__*/_jsxs(View, {
|
|
1543
|
-
|
|
1544
|
-
flex: 1
|
|
1545
|
-
}],
|
|
1383
|
+
className: "flex-1 items-center justify-center mx-[16px]",
|
|
1546
1384
|
children: [/*#__PURE__*/_jsx(SkeletonBox, {
|
|
1547
1385
|
width: 140,
|
|
1548
1386
|
height: 20,
|
|
@@ -1559,7 +1397,7 @@ const FileManagementScreen = ({
|
|
|
1559
1397
|
borderRadius: 12
|
|
1560
1398
|
})]
|
|
1561
1399
|
}), /*#__PURE__*/_jsxs(View, {
|
|
1562
|
-
|
|
1400
|
+
className: "flex-row items-center justify-between px-[12px] py-[12px] gap-[12px]",
|
|
1563
1401
|
children: [/*#__PURE__*/_jsx(SkeletonBox, {
|
|
1564
1402
|
width: 100,
|
|
1565
1403
|
height: 36,
|
|
@@ -1570,20 +1408,22 @@ const FileManagementScreen = ({
|
|
|
1570
1408
|
borderRadius: 22
|
|
1571
1409
|
})]
|
|
1572
1410
|
}), /*#__PURE__*/_jsx(View, {
|
|
1573
|
-
|
|
1411
|
+
className: "flex-row items-center px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-full gap-[10px]",
|
|
1412
|
+
style: {
|
|
1574
1413
|
backgroundColor: colors.card
|
|
1575
|
-
}
|
|
1414
|
+
},
|
|
1576
1415
|
children: /*#__PURE__*/_jsx(SkeletonBox, {
|
|
1577
1416
|
width: "100%",
|
|
1578
1417
|
height: 44,
|
|
1579
1418
|
borderRadius: 12
|
|
1580
1419
|
})
|
|
1581
1420
|
}), /*#__PURE__*/_jsx(View, {
|
|
1582
|
-
|
|
1421
|
+
className: "flex-row px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-[18px]",
|
|
1422
|
+
style: {
|
|
1583
1423
|
backgroundColor: colors.card
|
|
1584
|
-
}
|
|
1424
|
+
},
|
|
1585
1425
|
children: [1, 2, 3].map(i => /*#__PURE__*/_jsxs(View, {
|
|
1586
|
-
|
|
1426
|
+
className: "flex-1 items-center py-[4px]",
|
|
1587
1427
|
children: [/*#__PURE__*/_jsx(SkeletonBox, {
|
|
1588
1428
|
width: 50,
|
|
1589
1429
|
height: 20,
|
|
@@ -1598,8 +1438,8 @@ const FileManagementScreen = ({
|
|
|
1598
1438
|
})]
|
|
1599
1439
|
}, i))
|
|
1600
1440
|
}), /*#__PURE__*/_jsx(ScrollView, {
|
|
1601
|
-
|
|
1602
|
-
|
|
1441
|
+
className: "flex-1",
|
|
1442
|
+
contentContainerClassName: "px-[12px] pt-0 pb-[12px]",
|
|
1603
1443
|
showsVerticalScrollIndicator: false,
|
|
1604
1444
|
children: /*#__PURE__*/_jsx(View, {
|
|
1605
1445
|
style: {
|
|
@@ -1690,7 +1530,7 @@ const FileManagementScreen = ({
|
|
|
1690
1530
|
// If upload preview is showing, render it inline instead of the file list
|
|
1691
1531
|
if (showUploadPreview) {
|
|
1692
1532
|
return /*#__PURE__*/_jsxs(View, {
|
|
1693
|
-
|
|
1533
|
+
className: "flex-1",
|
|
1694
1534
|
children: [/*#__PURE__*/_jsx(Header, {
|
|
1695
1535
|
title: t('fileManagement.reviewFiles'),
|
|
1696
1536
|
subtitle: t('fileManagement.readyToUpload', {
|
|
@@ -1711,7 +1551,7 @@ const FileManagementScreen = ({
|
|
|
1711
1551
|
});
|
|
1712
1552
|
}
|
|
1713
1553
|
return /*#__PURE__*/_jsxs(View, {
|
|
1714
|
-
|
|
1554
|
+
className: "flex-1",
|
|
1715
1555
|
children: [/*#__PURE__*/_jsx(Header, {
|
|
1716
1556
|
title: selectMode ? multiSelect ? maxSelection ? t('fileManagement.selectedWithMax', {
|
|
1717
1557
|
count: selectedIds.size,
|
|
@@ -1761,22 +1601,26 @@ const FileManagementScreen = ({
|
|
|
1761
1601
|
elevation: "none",
|
|
1762
1602
|
titleAlignment: "left"
|
|
1763
1603
|
}), /*#__PURE__*/_jsxs(View, {
|
|
1764
|
-
|
|
1604
|
+
className: "flex-row items-center justify-between px-[12px] py-[12px] gap-[12px]",
|
|
1765
1605
|
children: [/*#__PURE__*/_jsx(ScrollView, {
|
|
1766
1606
|
horizontal: true,
|
|
1767
1607
|
showsHorizontalScrollIndicator: false,
|
|
1768
|
-
|
|
1608
|
+
className: "flex-1",
|
|
1609
|
+
style: {
|
|
1610
|
+
maxWidth: '80%'
|
|
1611
|
+
},
|
|
1769
1612
|
children: /*#__PURE__*/_jsxs(View, {
|
|
1770
|
-
|
|
1613
|
+
className: "flex-row rounded-full p-[2px] overflow-hidden",
|
|
1614
|
+
style: {
|
|
1771
1615
|
backgroundColor: colors.card
|
|
1772
|
-
}
|
|
1616
|
+
},
|
|
1773
1617
|
children: [/*#__PURE__*/_jsx(AnimatedButton, {
|
|
1774
1618
|
isSelected: viewMode === 'all',
|
|
1775
1619
|
onPress: () => setViewMode('all'),
|
|
1776
1620
|
icon: viewMode === 'all' ? 'folder' : 'folder-outline',
|
|
1777
1621
|
primaryColor: colors.primary,
|
|
1778
1622
|
textColor: colors.text,
|
|
1779
|
-
style:
|
|
1623
|
+
style: screenStyles.viewModeButton,
|
|
1780
1624
|
accessibilityLabel: t('fileManagement.a11y.viewAll') || 'Show all files'
|
|
1781
1625
|
}), /*#__PURE__*/_jsx(AnimatedButton, {
|
|
1782
1626
|
isSelected: viewMode === 'photos',
|
|
@@ -1784,7 +1628,7 @@ const FileManagementScreen = ({
|
|
|
1784
1628
|
icon: viewMode === 'photos' ? 'image-multiple' : 'image-multiple-outline',
|
|
1785
1629
|
primaryColor: colors.primary,
|
|
1786
1630
|
textColor: colors.text,
|
|
1787
|
-
style:
|
|
1631
|
+
style: screenStyles.viewModeButton,
|
|
1788
1632
|
accessibilityLabel: t('fileManagement.a11y.viewPhotos') || 'Show photos only'
|
|
1789
1633
|
}), !isImageOnlyPicker && /*#__PURE__*/_jsxs(_Fragment, {
|
|
1790
1634
|
children: [/*#__PURE__*/_jsx(AnimatedButton, {
|
|
@@ -1793,7 +1637,7 @@ const FileManagementScreen = ({
|
|
|
1793
1637
|
icon: viewMode === 'videos' ? 'video' : 'video-outline',
|
|
1794
1638
|
primaryColor: colors.primary,
|
|
1795
1639
|
textColor: colors.text,
|
|
1796
|
-
style:
|
|
1640
|
+
style: screenStyles.viewModeButton,
|
|
1797
1641
|
accessibilityLabel: t('fileManagement.a11y.viewVideos') || 'Show videos only'
|
|
1798
1642
|
}), /*#__PURE__*/_jsx(AnimatedButton, {
|
|
1799
1643
|
isSelected: viewMode === 'documents',
|
|
@@ -1801,7 +1645,7 @@ const FileManagementScreen = ({
|
|
|
1801
1645
|
icon: viewMode === 'documents' ? 'file-document' : 'file-document-outline',
|
|
1802
1646
|
primaryColor: colors.primary,
|
|
1803
1647
|
textColor: colors.text,
|
|
1804
|
-
style:
|
|
1648
|
+
style: screenStyles.viewModeButton,
|
|
1805
1649
|
accessibilityLabel: t('fileManagement.a11y.viewDocuments') || 'Show documents only'
|
|
1806
1650
|
}), /*#__PURE__*/_jsx(AnimatedButton, {
|
|
1807
1651
|
isSelected: viewMode === 'audio',
|
|
@@ -1809,15 +1653,16 @@ const FileManagementScreen = ({
|
|
|
1809
1653
|
icon: viewMode === 'audio' ? 'music-note' : 'music-note-outline',
|
|
1810
1654
|
primaryColor: colors.primary,
|
|
1811
1655
|
textColor: colors.text,
|
|
1812
|
-
style:
|
|
1656
|
+
style: screenStyles.viewModeButton,
|
|
1813
1657
|
accessibilityLabel: t('fileManagement.a11y.viewAudio') || 'Show audio only'
|
|
1814
1658
|
})]
|
|
1815
1659
|
})]
|
|
1816
1660
|
})
|
|
1817
1661
|
}), /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
1818
|
-
|
|
1662
|
+
className: "flex-row items-center justify-center px-[10px] py-[6px] rounded-full min-w-[36px] gap-[4px]",
|
|
1663
|
+
style: {
|
|
1819
1664
|
backgroundColor: colors.card
|
|
1820
|
-
}
|
|
1665
|
+
},
|
|
1821
1666
|
accessibilityRole: "button",
|
|
1822
1667
|
accessibilityLabel: t('fileManagement.a11y.sortBy', {
|
|
1823
1668
|
field: sortBy,
|
|
@@ -1844,9 +1689,10 @@ const FileManagementScreen = ({
|
|
|
1844
1689
|
color: colors.textSecondary
|
|
1845
1690
|
})]
|
|
1846
1691
|
}), user?.id === targetUserId && (!selectMode || selectMode && allowUploadInSelectMode) && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
1847
|
-
|
|
1692
|
+
className: `h-[44px] rounded-[22px] items-center justify-center ${isImageOnlyPicker ? 'w-auto min-w-[44px] px-[14px]' : 'w-[44px]'}`,
|
|
1693
|
+
style: {
|
|
1848
1694
|
backgroundColor: colors.primary
|
|
1849
|
-
}
|
|
1695
|
+
},
|
|
1850
1696
|
onPress: handleFileUpload,
|
|
1851
1697
|
disabled: uploading || isPickingDocument,
|
|
1852
1698
|
accessibilityRole: "button",
|
|
@@ -1855,25 +1701,25 @@ const FileManagementScreen = ({
|
|
|
1855
1701
|
busy: uploading || isPickingDocument
|
|
1856
1702
|
},
|
|
1857
1703
|
children: uploading ? /*#__PURE__*/_jsxs(View, {
|
|
1858
|
-
|
|
1704
|
+
className: "items-center justify-center",
|
|
1859
1705
|
children: [/*#__PURE__*/_jsx(ActivityIndicator, {
|
|
1860
1706
|
size: "small",
|
|
1861
1707
|
color: "#FFFFFF"
|
|
1862
1708
|
}), uploadProgress && /*#__PURE__*/_jsxs(Text, {
|
|
1863
|
-
|
|
1709
|
+
className: "text-white text-[10px] font-semibold mt-[2px]",
|
|
1864
1710
|
children: [uploadProgress.current, "/", uploadProgress.total]
|
|
1865
1711
|
})]
|
|
1866
1712
|
}) : isPickingDocument ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
1867
1713
|
size: "small",
|
|
1868
1714
|
color: "#FFFFFF"
|
|
1869
1715
|
}) : isImageOnlyPicker ? /*#__PURE__*/_jsxs(View, {
|
|
1870
|
-
|
|
1716
|
+
className: "flex-row items-center gap-[6px]",
|
|
1871
1717
|
children: [/*#__PURE__*/_jsx(Ionicons, {
|
|
1872
1718
|
name: "cloud-upload",
|
|
1873
1719
|
size: 18,
|
|
1874
1720
|
color: "#FFFFFF"
|
|
1875
1721
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1876
|
-
|
|
1722
|
+
className: "text-white text-[14px] font-semibold",
|
|
1877
1723
|
numberOfLines: 1,
|
|
1878
1724
|
children: t('fileManagement.upload') || 'Upload'
|
|
1879
1725
|
})]
|
|
@@ -1884,24 +1730,26 @@ const FileManagementScreen = ({
|
|
|
1884
1730
|
})
|
|
1885
1731
|
})]
|
|
1886
1732
|
}), files.length > 0 && (viewMode === 'all' || files.some(f => f.contentType.startsWith('image/'))) && /*#__PURE__*/_jsxs(View, {
|
|
1887
|
-
|
|
1733
|
+
className: "flex-row items-center px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-full gap-[10px]",
|
|
1734
|
+
style: {
|
|
1888
1735
|
backgroundColor: colors.card
|
|
1889
|
-
}
|
|
1736
|
+
},
|
|
1890
1737
|
children: [/*#__PURE__*/_jsx(Ionicons, {
|
|
1891
1738
|
name: "search",
|
|
1892
1739
|
size: 22,
|
|
1893
1740
|
color: colors.icon
|
|
1894
1741
|
}), /*#__PURE__*/_jsx(TextInput, {
|
|
1895
|
-
|
|
1742
|
+
className: "flex-1 text-[16px] leading-[20px]",
|
|
1743
|
+
style: {
|
|
1896
1744
|
color: colors.text
|
|
1897
|
-
}
|
|
1745
|
+
},
|
|
1898
1746
|
placeholder: viewMode === 'photos' ? t('fileManagement.searchPhotos') : t('fileManagement.searchFiles'),
|
|
1899
1747
|
placeholderTextColor: colors.textSecondary,
|
|
1900
1748
|
value: searchQuery,
|
|
1901
1749
|
onChangeText: setSearchQuery
|
|
1902
1750
|
}), searchQuery.length > 0 && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
1903
1751
|
onPress: () => setSearchQuery(''),
|
|
1904
|
-
|
|
1752
|
+
className: "p-[4px] rounded-[12px] items-center justify-center",
|
|
1905
1753
|
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
1906
1754
|
name: "close-circle",
|
|
1907
1755
|
size: 22,
|
|
@@ -1909,46 +1757,59 @@ const FileManagementScreen = ({
|
|
|
1909
1757
|
})
|
|
1910
1758
|
})]
|
|
1911
1759
|
}), files.length > 0 && /*#__PURE__*/_jsxs(View, {
|
|
1912
|
-
|
|
1760
|
+
className: "flex-row px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-[18px]",
|
|
1761
|
+
style: {
|
|
1913
1762
|
backgroundColor: colors.card
|
|
1914
|
-
}
|
|
1763
|
+
},
|
|
1915
1764
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
1916
|
-
|
|
1765
|
+
className: "flex-1 items-center py-[4px]",
|
|
1917
1766
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1767
|
+
className: "text-[20px] font-extrabold leading-[24px]",
|
|
1768
|
+
style: {
|
|
1769
|
+
color: colors.text,
|
|
1770
|
+
letterSpacing: -0.5
|
|
1771
|
+
},
|
|
1921
1772
|
children: filteredFiles.length
|
|
1922
1773
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1774
|
+
className: "text-[12px] font-medium mt-[2px]",
|
|
1775
|
+
style: {
|
|
1776
|
+
color: colors.textSecondary,
|
|
1777
|
+
letterSpacing: 0.2
|
|
1778
|
+
},
|
|
1926
1779
|
children: searchQuery.length > 0 ? t('fileManagement.found') : filteredFiles.length === 1 ? viewMode === 'photos' ? t('fileManagement.photo') : t('fileManagement.file') : viewMode === 'photos' ? t('fileManagement.photos_stat') : t('fileManagement.files')
|
|
1927
1780
|
})]
|
|
1928
1781
|
}), /*#__PURE__*/_jsxs(View, {
|
|
1929
|
-
|
|
1782
|
+
className: "flex-1 items-center py-[4px]",
|
|
1930
1783
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1784
|
+
className: "text-[20px] font-extrabold leading-[24px]",
|
|
1785
|
+
style: {
|
|
1786
|
+
color: colors.text,
|
|
1787
|
+
letterSpacing: -0.5
|
|
1788
|
+
},
|
|
1934
1789
|
children: formatFileSize(filteredFiles.reduce((total, file) => total + file.length, 0))
|
|
1935
1790
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1791
|
+
className: "text-[12px] font-medium mt-[2px]",
|
|
1792
|
+
style: {
|
|
1793
|
+
color: colors.textSecondary,
|
|
1794
|
+
letterSpacing: 0.2
|
|
1795
|
+
},
|
|
1939
1796
|
children: searchQuery.length > 0 ? t('fileManagement.size') : t('fileManagement.totalSize')
|
|
1940
1797
|
})]
|
|
1941
1798
|
}), searchQuery.length > 0 && /*#__PURE__*/_jsxs(View, {
|
|
1942
|
-
|
|
1799
|
+
className: "flex-1 items-center py-[4px]",
|
|
1943
1800
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1801
|
+
className: "text-[20px] font-extrabold leading-[24px]",
|
|
1802
|
+
style: {
|
|
1803
|
+
color: colors.text,
|
|
1804
|
+
letterSpacing: -0.5
|
|
1805
|
+
},
|
|
1947
1806
|
children: files.length
|
|
1948
1807
|
}), /*#__PURE__*/_jsx(Text, {
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1808
|
+
className: "text-[12px] font-medium mt-[2px]",
|
|
1809
|
+
style: {
|
|
1810
|
+
color: colors.textSecondary,
|
|
1811
|
+
letterSpacing: 0.2
|
|
1812
|
+
},
|
|
1952
1813
|
children: t('fileManagement.total')
|
|
1953
1814
|
})]
|
|
1954
1815
|
})]
|
|
@@ -2026,8 +1887,5 @@ const FileManagementScreen = ({
|
|
|
2026
1887
|
})]
|
|
2027
1888
|
});
|
|
2028
1889
|
};
|
|
2029
|
-
|
|
2030
|
-
// Styles have been moved to components/fileManagement/styles.ts
|
|
2031
|
-
|
|
2032
1890
|
export default FileManagementScreen;
|
|
2033
1891
|
//# sourceMappingURL=FileManagementScreen.js.map
|