@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
|
@@ -21,7 +21,6 @@ var _useResolvedFileUrls = require("../hooks/useResolvedFileUrls.js");
|
|
|
21
21
|
var _FileViewer = require("../components/fileManagement/FileViewer.js");
|
|
22
22
|
var _FileDetailsModal = require("../components/fileManagement/FileDetailsModal.js");
|
|
23
23
|
var _UploadPreview = require("../components/fileManagement/UploadPreview.js");
|
|
24
|
-
var _styles = require("../components/fileManagement/styles.js");
|
|
25
24
|
var _shared = require("./fileManagement/shared.js");
|
|
26
25
|
var _useFileUploadState = require("./fileManagement/hooks/useFileUploadState.js");
|
|
27
26
|
var _PhotoPickerSection = _interopRequireDefault(require("./fileManagement/PhotoPickerSection.js"));
|
|
@@ -30,6 +29,31 @@ var _UploadBar = _interopRequireDefault(require("./fileManagement/UploadBar.js")
|
|
|
30
29
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
31
30
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
32
31
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
32
|
+
// Genuinely-inline-only styles: `viewModeButton` is spread into an Animated.View
|
|
33
|
+
// style array (interpolated backgroundColor), and the photo tiles are
|
|
34
|
+
// `expo-image` (no className remap). Everything else uses NativeWind classNames.
|
|
35
|
+
const screenStyles = _reactNative.StyleSheet.create({
|
|
36
|
+
viewModeButton: {
|
|
37
|
+
paddingHorizontal: 10,
|
|
38
|
+
paddingVertical: 6,
|
|
39
|
+
borderRadius: 999,
|
|
40
|
+
minWidth: 36,
|
|
41
|
+
alignItems: 'center',
|
|
42
|
+
justifyContent: 'center',
|
|
43
|
+
marginHorizontal: 1
|
|
44
|
+
},
|
|
45
|
+
photoImage: {
|
|
46
|
+
width: '100%',
|
|
47
|
+
height: '100%',
|
|
48
|
+
borderRadius: 8
|
|
49
|
+
},
|
|
50
|
+
justifiedPhotoImage: {
|
|
51
|
+
width: '100%',
|
|
52
|
+
height: '100%',
|
|
53
|
+
borderRadius: 6
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
33
57
|
// Animated button component for smooth transitions
|
|
34
58
|
const AnimatedButton = ({
|
|
35
59
|
isSelected,
|
|
@@ -81,8 +105,7 @@ const FileManagementScreen = ({
|
|
|
81
105
|
goBack,
|
|
82
106
|
navigate,
|
|
83
107
|
userId,
|
|
84
|
-
containerWidth
|
|
85
|
-
// Fallback for when not provided by the router
|
|
108
|
+
containerWidth,
|
|
86
109
|
selectMode = false,
|
|
87
110
|
multiSelect = false,
|
|
88
111
|
onSelect,
|
|
@@ -113,8 +136,12 @@ const FileManagementScreen = ({
|
|
|
113
136
|
const visibilityChangeDialog = (0, _bloom.useDialogControl)();
|
|
114
137
|
const [pendingDeleteFile, setPendingDeleteFile] = (0, _react.useState)(null);
|
|
115
138
|
const files = (0, _fileStore.useFiles)();
|
|
116
|
-
|
|
117
|
-
|
|
139
|
+
const {
|
|
140
|
+
width: windowWidth
|
|
141
|
+
} = (0, _reactNative.useWindowDimensions)();
|
|
142
|
+
// Prefer an explicit sheet width from the router; fall back to the window
|
|
143
|
+
// so photo grids never size against a hardcoded 400px default.
|
|
144
|
+
const safeContainerWidth = typeof containerWidth === 'number' && containerWidth > 0 ? containerWidth : windowWidth;
|
|
118
145
|
const uploading = (0, _fileStore.useUploading)();
|
|
119
146
|
const uploadProgress = (0, _fileStore.useUploadAggregateProgress)();
|
|
120
147
|
const deleting = (0, _fileStore.useDeleting)();
|
|
@@ -743,60 +770,11 @@ const FileManagementScreen = ({
|
|
|
743
770
|
setSelectedFile(file);
|
|
744
771
|
fileDetailsControl.open();
|
|
745
772
|
};
|
|
746
|
-
const renderSimplePhotoItem = (0, _react.useCallback)((photo, index) => {
|
|
747
|
-
const downloadUrl = thumbSourceFor(photo);
|
|
748
|
-
|
|
749
|
-
// Calculate photo item width based on actual container size from bottom sheet
|
|
750
|
-
let itemsPerRow = 3; // Default for mobile
|
|
751
|
-
if (safeContainerWidth > 768) itemsPerRow = 4; // Desktop/tablet
|
|
752
|
-
else if (safeContainerWidth > 480) itemsPerRow = 3; // Large mobile
|
|
753
|
-
|
|
754
|
-
// Account for the photoScrollContainer padding (16px on each side = 32px total)
|
|
755
|
-
const scrollContainerPadding = 32; // Total horizontal padding from photoScrollContainer
|
|
756
|
-
const gaps = (itemsPerRow - 1) * 4; // Gap between items (4px)
|
|
757
|
-
const availableWidth = safeContainerWidth - scrollContainerPadding;
|
|
758
|
-
const itemWidth = (availableWidth - gaps) / itemsPerRow;
|
|
759
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
760
|
-
style: [_styles.fileManagementStyles.simplePhotoItem, {
|
|
761
|
-
width: itemWidth,
|
|
762
|
-
height: itemWidth,
|
|
763
|
-
marginRight: (index + 1) % itemsPerRow === 0 ? 0 : 4,
|
|
764
|
-
...(selectMode && selectedIds.has(photo.id) ? {
|
|
765
|
-
borderWidth: 2,
|
|
766
|
-
borderColor: colors.primary
|
|
767
|
-
} : {})
|
|
768
|
-
}],
|
|
769
|
-
onPress: () => handleFileOpen(photo),
|
|
770
|
-
activeOpacity: 0.8,
|
|
771
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
772
|
-
style: _styles.fileManagementStyles.simplePhotoContainer,
|
|
773
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
|
|
774
|
-
source: {
|
|
775
|
-
uri: downloadUrl
|
|
776
|
-
},
|
|
777
|
-
style: _styles.fileManagementStyles.simplePhotoImage,
|
|
778
|
-
contentFit: "cover",
|
|
779
|
-
transition: 120,
|
|
780
|
-
cachePolicy: "memory-disk",
|
|
781
|
-
onError: () => {
|
|
782
|
-
// Photo failed to load, will show placeholder
|
|
783
|
-
},
|
|
784
|
-
accessibilityLabel: photo.filename
|
|
785
|
-
}), selectMode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
786
|
-
style: _styles.fileManagementStyles.selectionBadge,
|
|
787
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
788
|
-
name: selectedIds.has(photo.id) ? 'checkmark-circle' : 'ellipse-outline',
|
|
789
|
-
size: 20,
|
|
790
|
-
color: selectedIds.has(photo.id) ? colors.primary : colors.text
|
|
791
|
-
})
|
|
792
|
-
})]
|
|
793
|
-
})
|
|
794
|
-
}, photo.id);
|
|
795
|
-
}, [thumbSourceFor, safeContainerWidth, selectMode, selectedIds, colors.primary, colors.text]);
|
|
796
773
|
const renderJustifiedPhotoItem = (0, _react.useCallback)((photo, width, height, isLast) => {
|
|
797
774
|
const downloadUrl = thumbSourceFor(photo);
|
|
798
775
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
799
|
-
|
|
776
|
+
className: "rounded-[6px] overflow-hidden relative",
|
|
777
|
+
style: {
|
|
800
778
|
width,
|
|
801
779
|
height,
|
|
802
780
|
...(selectMode && selectedIds.has(photo.id) ? {
|
|
@@ -806,16 +784,16 @@ const FileManagementScreen = ({
|
|
|
806
784
|
...(selectMode && multiSelect && selectedIds.size > 0 && !selectedIds.has(photo.id) ? {
|
|
807
785
|
opacity: 0.4
|
|
808
786
|
} : {})
|
|
809
|
-
}
|
|
787
|
+
},
|
|
810
788
|
onPress: () => handleFileOpen(photo),
|
|
811
789
|
activeOpacity: 0.8,
|
|
812
790
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
813
|
-
|
|
791
|
+
className: "w-full h-full relative rounded-[6px] overflow-hidden",
|
|
814
792
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
|
|
815
793
|
source: {
|
|
816
794
|
uri: downloadUrl
|
|
817
795
|
},
|
|
818
|
-
style:
|
|
796
|
+
style: screenStyles.justifiedPhotoImage,
|
|
819
797
|
contentFit: "cover",
|
|
820
798
|
transition: 120,
|
|
821
799
|
cachePolicy: "memory-disk",
|
|
@@ -824,7 +802,10 @@ const FileManagementScreen = ({
|
|
|
824
802
|
},
|
|
825
803
|
accessibilityLabel: photo.filename
|
|
826
804
|
}), selectMode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
827
|
-
|
|
805
|
+
className: "absolute top-[4px] right-[4px] rounded-[12px] p-[2px]",
|
|
806
|
+
style: {
|
|
807
|
+
backgroundColor: 'rgba(0,0,0,0.4)'
|
|
808
|
+
},
|
|
828
809
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
829
810
|
name: selectedIds.has(photo.id) ? 'checkmark-circle' : 'ellipse-outline',
|
|
830
811
|
size: 20,
|
|
@@ -845,160 +826,6 @@ const FileManagementScreen = ({
|
|
|
845
826
|
}
|
|
846
827
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
847
828
|
}, [targetUserId]);
|
|
848
|
-
const renderFileItem = file => {
|
|
849
|
-
const isImage = file.contentType.startsWith('image/');
|
|
850
|
-
const isPDF = file.contentType.includes('pdf');
|
|
851
|
-
const isVideo = file.contentType.startsWith('video/');
|
|
852
|
-
const isAudio = file.contentType.startsWith('audio/');
|
|
853
|
-
const hasPreview = isImage || isPDF || isVideo;
|
|
854
|
-
const borderColor = colors.border;
|
|
855
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
856
|
-
style: [_styles.fileManagementStyles.fileItem, {
|
|
857
|
-
backgroundColor: colors.backgroundSecondary,
|
|
858
|
-
borderColor
|
|
859
|
-
}, selectMode && selectedIds.has(file.id) && {
|
|
860
|
-
borderColor: colors.primary,
|
|
861
|
-
borderWidth: 2
|
|
862
|
-
}],
|
|
863
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
|
|
864
|
-
style: _styles.fileManagementStyles.fileContent,
|
|
865
|
-
onPress: () => handleFileOpen(file),
|
|
866
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
867
|
-
style: _styles.fileManagementStyles.filePreviewContainer,
|
|
868
|
-
children: hasPreview ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
869
|
-
style: _styles.fileManagementStyles.filePreview,
|
|
870
|
-
children: [isImage && /*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
|
|
871
|
-
source: {
|
|
872
|
-
uri: thumbSourceFor(file)
|
|
873
|
-
},
|
|
874
|
-
style: _styles.fileManagementStyles.previewImage,
|
|
875
|
-
contentFit: "cover",
|
|
876
|
-
transition: 120,
|
|
877
|
-
cachePolicy: "memory-disk",
|
|
878
|
-
onError: () => {
|
|
879
|
-
// Image preview failed to load
|
|
880
|
-
},
|
|
881
|
-
accessibilityLabel: file.filename
|
|
882
|
-
}), isPDF && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
883
|
-
style: _styles.fileManagementStyles.pdfPreview,
|
|
884
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
885
|
-
name: "document",
|
|
886
|
-
size: 32,
|
|
887
|
-
color: colors.primary
|
|
888
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
889
|
-
style: [_styles.fileManagementStyles.pdfLabel, {
|
|
890
|
-
color: colors.primary
|
|
891
|
-
}],
|
|
892
|
-
children: "PDF"
|
|
893
|
-
})]
|
|
894
|
-
}), isVideo && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
895
|
-
style: _styles.fileManagementStyles.videoPreviewWrapper,
|
|
896
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
|
|
897
|
-
source: {
|
|
898
|
-
uri: thumbSourceFor(file)
|
|
899
|
-
},
|
|
900
|
-
style: _styles.fileManagementStyles.videoPosterImage,
|
|
901
|
-
contentFit: "cover",
|
|
902
|
-
transition: 120,
|
|
903
|
-
cachePolicy: "memory-disk",
|
|
904
|
-
onError: _ => {
|
|
905
|
-
// If thumbnail not available, we still show icon overlay
|
|
906
|
-
},
|
|
907
|
-
accessibilityLabel: `${file.filename} video thumbnail`
|
|
908
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
909
|
-
style: _styles.fileManagementStyles.videoOverlay,
|
|
910
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
911
|
-
name: "play",
|
|
912
|
-
size: 24,
|
|
913
|
-
color: "#FFFFFF"
|
|
914
|
-
})
|
|
915
|
-
})]
|
|
916
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
917
|
-
style: [_styles.fileManagementStyles.fallbackIcon, {
|
|
918
|
-
display: isImage ? 'none' : 'flex'
|
|
919
|
-
}],
|
|
920
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
921
|
-
name: (0, _fileManagement.getFileIcon)(file.contentType),
|
|
922
|
-
size: 32,
|
|
923
|
-
color: colors.primary
|
|
924
|
-
})
|
|
925
|
-
}), selectMode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
926
|
-
style: _styles.fileManagementStyles.selectionBadge,
|
|
927
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
928
|
-
name: selectedIds.has(file.id) ? 'checkmark-circle' : 'ellipse-outline',
|
|
929
|
-
size: 22,
|
|
930
|
-
color: selectedIds.has(file.id) ? colors.primary : colors.text
|
|
931
|
-
})
|
|
932
|
-
})]
|
|
933
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
934
|
-
style: _styles.fileManagementStyles.fileIconContainer,
|
|
935
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
936
|
-
name: (0, _fileManagement.getFileIcon)(file.contentType),
|
|
937
|
-
size: 32,
|
|
938
|
-
color: colors.primary
|
|
939
|
-
})
|
|
940
|
-
})
|
|
941
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
942
|
-
style: _styles.fileManagementStyles.fileInfo,
|
|
943
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
944
|
-
style: [_styles.fileManagementStyles.fileName, {
|
|
945
|
-
color: colors.text
|
|
946
|
-
}],
|
|
947
|
-
numberOfLines: 1,
|
|
948
|
-
children: file.filename
|
|
949
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
950
|
-
style: [_styles.fileManagementStyles.fileDetails, {
|
|
951
|
-
color: colors.textSecondary
|
|
952
|
-
}],
|
|
953
|
-
children: [(0, _fileManagement.formatFileSize)(file.length), " \u2022 ", new Date(file.uploadDate).toLocaleDateString()]
|
|
954
|
-
}), file.metadata?.description && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
955
|
-
style: [_styles.fileManagementStyles.fileDescription, {
|
|
956
|
-
color: colors.textTertiary
|
|
957
|
-
}],
|
|
958
|
-
numberOfLines: 2,
|
|
959
|
-
children: file.metadata.description
|
|
960
|
-
})]
|
|
961
|
-
})]
|
|
962
|
-
}), !selectMode && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
963
|
-
style: _styles.fileManagementStyles.fileActions,
|
|
964
|
-
children: [hasPreview && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
965
|
-
style: [_styles.fileManagementStyles.actionButton, {
|
|
966
|
-
backgroundColor: colors.backgroundSecondary
|
|
967
|
-
}],
|
|
968
|
-
onPress: () => handleFileOpen(file),
|
|
969
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
970
|
-
name: "eye",
|
|
971
|
-
size: 20,
|
|
972
|
-
color: colors.primary
|
|
973
|
-
})
|
|
974
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
975
|
-
style: [_styles.fileManagementStyles.actionButton, {
|
|
976
|
-
backgroundColor: colors.backgroundSecondary
|
|
977
|
-
}],
|
|
978
|
-
onPress: () => handleFileDownload(file.id, file.filename),
|
|
979
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
980
|
-
name: "download",
|
|
981
|
-
size: 20,
|
|
982
|
-
color: colors.primary
|
|
983
|
-
})
|
|
984
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
985
|
-
style: [_styles.fileManagementStyles.actionButton, {
|
|
986
|
-
backgroundColor: colors.negativeSubtle
|
|
987
|
-
}],
|
|
988
|
-
onPress: () => confirmFileDelete(file.id, file.filename),
|
|
989
|
-
disabled: deleting === file.id,
|
|
990
|
-
children: deleting === file.id ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
991
|
-
size: "small",
|
|
992
|
-
color: colors.error
|
|
993
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
994
|
-
name: "trash",
|
|
995
|
-
size: 20,
|
|
996
|
-
color: colors.error
|
|
997
|
-
})
|
|
998
|
-
})]
|
|
999
|
-
})]
|
|
1000
|
-
}, file.id);
|
|
1001
|
-
};
|
|
1002
829
|
|
|
1003
830
|
// SettingsListItem-based file items (for 'all' view)
|
|
1004
831
|
const groupedFileItems = (0, _react.useMemo)(() => {
|
|
@@ -1120,11 +947,12 @@ const FileManagementScreen = ({
|
|
|
1120
947
|
},
|
|
1121
948
|
// Hide action buttons when selecting (in selectMode or bulk operations mode)
|
|
1122
949
|
rightElement: !selectMode && selectedIds.size === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1123
|
-
|
|
950
|
+
className: "flex-row items-center gap-[6px] ml-[12px]",
|
|
1124
951
|
children: [(isImage || isVideo || file.contentType.includes('pdf')) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
1125
|
-
|
|
952
|
+
className: "w-[34px] h-[34px] rounded-[8px] items-center justify-center",
|
|
953
|
+
style: {
|
|
1126
954
|
backgroundColor: colors.backgroundSecondary
|
|
1127
|
-
}
|
|
955
|
+
},
|
|
1128
956
|
onPress: () => handleFileOpen(file),
|
|
1129
957
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
1130
958
|
name: "eye",
|
|
@@ -1132,9 +960,10 @@ const FileManagementScreen = ({
|
|
|
1132
960
|
color: colors.primary
|
|
1133
961
|
})
|
|
1134
962
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
1135
|
-
|
|
963
|
+
className: "w-[34px] h-[34px] rounded-[8px] items-center justify-center",
|
|
964
|
+
style: {
|
|
1136
965
|
backgroundColor: colors.backgroundSecondary
|
|
1137
|
-
}
|
|
966
|
+
},
|
|
1138
967
|
onPress: () => handleFileDownload(file.id, file.filename),
|
|
1139
968
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
1140
969
|
name: "download",
|
|
@@ -1142,9 +971,10 @@ const FileManagementScreen = ({
|
|
|
1142
971
|
color: colors.primary
|
|
1143
972
|
})
|
|
1144
973
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
1145
|
-
|
|
974
|
+
className: "w-[34px] h-[34px] rounded-[8px] items-center justify-center",
|
|
975
|
+
style: {
|
|
1146
976
|
backgroundColor: colors.negativeSubtle
|
|
1147
|
-
}
|
|
977
|
+
},
|
|
1148
978
|
onPress: () => confirmFileDelete(file.id, file.filename),
|
|
1149
979
|
disabled: deleting === file.id,
|
|
1150
980
|
children: deleting === file.id ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
@@ -1256,19 +1086,20 @@ const FileManagementScreen = ({
|
|
|
1256
1086
|
const availableWidth = safeContainerWidth - scrollContainerPadding;
|
|
1257
1087
|
const itemWidth = (availableWidth - gaps) / itemsPerRow;
|
|
1258
1088
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
1259
|
-
|
|
1089
|
+
className: "rounded-[8px] overflow-hidden",
|
|
1090
|
+
style: {
|
|
1260
1091
|
width: itemWidth,
|
|
1261
1092
|
height: itemWidth
|
|
1262
|
-
}
|
|
1093
|
+
},
|
|
1263
1094
|
onPress: () => handleFileOpen(photo),
|
|
1264
1095
|
activeOpacity: 0.8,
|
|
1265
1096
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
1266
|
-
|
|
1097
|
+
className: "w-full h-full relative rounded-[8px] overflow-hidden",
|
|
1267
1098
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
|
|
1268
1099
|
source: {
|
|
1269
1100
|
uri: downloadUrl
|
|
1270
1101
|
},
|
|
1271
|
-
style:
|
|
1102
|
+
style: screenStyles.photoImage,
|
|
1272
1103
|
contentFit: "cover",
|
|
1273
1104
|
transition: 120,
|
|
1274
1105
|
cachePolicy: "memory-disk",
|
|
@@ -1284,25 +1115,28 @@ const FileManagementScreen = ({
|
|
|
1284
1115
|
const photos = filteredFiles.filter(file => file.contentType.startsWith('image/'));
|
|
1285
1116
|
if (photos.length === 0) {
|
|
1286
1117
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1287
|
-
|
|
1118
|
+
className: "items-center py-[40px] px-[24px]",
|
|
1288
1119
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
1289
1120
|
name: "images-outline",
|
|
1290
1121
|
size: 64,
|
|
1291
1122
|
color: colors.textTertiary
|
|
1292
1123
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1293
|
-
|
|
1124
|
+
className: "text-[24px] font-bold mt-[16px] mb-[8px]",
|
|
1125
|
+
style: {
|
|
1294
1126
|
color: colors.text
|
|
1295
|
-
}
|
|
1127
|
+
},
|
|
1296
1128
|
children: t('fileManagement.emptyPhotos.title')
|
|
1297
1129
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
1298
|
-
|
|
1130
|
+
className: "text-[16px] text-center leading-[24px] mb-[32px]",
|
|
1131
|
+
style: {
|
|
1299
1132
|
color: colors.textSecondary
|
|
1300
|
-
}
|
|
1133
|
+
},
|
|
1301
1134
|
children: [" ", user?.id === targetUserId ? t('fileManagement.emptyPhotos.ownDescription') : t('fileManagement.emptyPhotos.otherDescription'), " "]
|
|
1302
1135
|
}), user?.id === targetUserId && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
1303
|
-
|
|
1136
|
+
className: "flex-row items-center px-[24px] py-[12px] rounded-[24px] gap-[8px]",
|
|
1137
|
+
style: {
|
|
1304
1138
|
backgroundColor: colors.primary
|
|
1305
|
-
}
|
|
1139
|
+
},
|
|
1306
1140
|
onPress: handleFileUpload,
|
|
1307
1141
|
disabled: uploading || isPickingDocument,
|
|
1308
1142
|
children: uploading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
@@ -1317,7 +1151,7 @@ const FileManagementScreen = ({
|
|
|
1317
1151
|
size: 20,
|
|
1318
1152
|
color: "#FFFFFF"
|
|
1319
1153
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1320
|
-
|
|
1154
|
+
className: "text-white text-[16px] font-semibold",
|
|
1321
1155
|
children: t('fileManagement.uploadPhotos')
|
|
1322
1156
|
})]
|
|
1323
1157
|
})
|
|
@@ -1326,8 +1160,8 @@ const FileManagementScreen = ({
|
|
|
1326
1160
|
}
|
|
1327
1161
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
|
|
1328
1162
|
ref: photoScrollViewRef,
|
|
1329
|
-
|
|
1330
|
-
|
|
1163
|
+
className: "flex-1",
|
|
1164
|
+
contentContainerClassName: "p-[10px]",
|
|
1331
1165
|
refreshControl: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.RefreshControl, {
|
|
1332
1166
|
refreshing: refreshing,
|
|
1333
1167
|
onRefresh: () => loadFiles('refresh'),
|
|
@@ -1349,14 +1183,15 @@ const FileManagementScreen = ({
|
|
|
1349
1183
|
},
|
|
1350
1184
|
scrollEventThrottle: 250,
|
|
1351
1185
|
children: [loadingDimensions && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1352
|
-
|
|
1186
|
+
className: "flex-row items-center justify-center py-[16px] gap-[8px]",
|
|
1353
1187
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
1354
1188
|
size: "small",
|
|
1355
1189
|
color: colors.primary
|
|
1356
1190
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1357
|
-
|
|
1191
|
+
className: "text-[14px] italic",
|
|
1192
|
+
style: {
|
|
1358
1193
|
color: colors.textSecondary
|
|
1359
|
-
}
|
|
1194
|
+
},
|
|
1360
1195
|
children: t('fileManagement.loadingPhotoLayout')
|
|
1361
1196
|
})]
|
|
1362
1197
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_JustifiedPhotoGrid.default, {
|
|
@@ -1375,25 +1210,28 @@ const FileManagementScreen = ({
|
|
|
1375
1210
|
// Inline justified grid removed (moved to components/photogrid/JustifiedPhotoGrid.tsx)
|
|
1376
1211
|
|
|
1377
1212
|
const renderEmptyState = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1378
|
-
|
|
1213
|
+
className: "items-center py-[40px] px-[24px]",
|
|
1379
1214
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
1380
1215
|
name: "folder-open-outline",
|
|
1381
1216
|
size: 64,
|
|
1382
1217
|
color: colors.textTertiary
|
|
1383
1218
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1384
|
-
|
|
1219
|
+
className: "text-[24px] font-bold mt-[16px] mb-[8px]",
|
|
1220
|
+
style: {
|
|
1385
1221
|
color: colors.text
|
|
1386
|
-
}
|
|
1222
|
+
},
|
|
1387
1223
|
children: t('fileManagement.emptyFiles.title')
|
|
1388
1224
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1389
|
-
|
|
1225
|
+
className: "text-[16px] text-center leading-[24px] mb-[32px]",
|
|
1226
|
+
style: {
|
|
1390
1227
|
color: colors.textSecondary
|
|
1391
|
-
}
|
|
1228
|
+
},
|
|
1392
1229
|
children: user?.id === targetUserId ? t('fileManagement.emptyFiles.ownDescription') : t('fileManagement.emptyFiles.otherDescription')
|
|
1393
1230
|
}), user?.id === targetUserId && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
1394
|
-
|
|
1231
|
+
className: "flex-row items-center px-[24px] py-[12px] rounded-[24px] gap-[8px]",
|
|
1232
|
+
style: {
|
|
1395
1233
|
backgroundColor: colors.primary
|
|
1396
|
-
}
|
|
1234
|
+
},
|
|
1397
1235
|
onPress: handleFileUpload,
|
|
1398
1236
|
disabled: uploading || isPickingDocument,
|
|
1399
1237
|
children: uploading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
@@ -1408,7 +1246,7 @@ const FileManagementScreen = ({
|
|
|
1408
1246
|
size: 20,
|
|
1409
1247
|
color: "#FFFFFF"
|
|
1410
1248
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1411
|
-
|
|
1249
|
+
className: "text-white text-[16px] font-semibold",
|
|
1412
1250
|
children: t('fileManagement.uploadFiles')
|
|
1413
1251
|
})]
|
|
1414
1252
|
})
|
|
@@ -1532,22 +1370,22 @@ const FileManagementScreen = ({
|
|
|
1532
1370
|
})]
|
|
1533
1371
|
});
|
|
1534
1372
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1535
|
-
|
|
1373
|
+
className: "flex-1",
|
|
1374
|
+
style: {
|
|
1536
1375
|
backgroundColor
|
|
1537
|
-
}
|
|
1376
|
+
},
|
|
1538
1377
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1539
|
-
|
|
1378
|
+
className: "flex-row items-center justify-between px-[16px] py-[12px] relative",
|
|
1379
|
+
style: {
|
|
1540
1380
|
borderBottomColor: colors.border,
|
|
1541
1381
|
borderBottomWidth: _reactNative.StyleSheet.hairlineWidth
|
|
1542
|
-
}
|
|
1382
|
+
},
|
|
1543
1383
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
|
|
1544
1384
|
width: 44,
|
|
1545
1385
|
height: 44,
|
|
1546
1386
|
borderRadius: 12
|
|
1547
1387
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1548
|
-
|
|
1549
|
-
flex: 1
|
|
1550
|
-
}],
|
|
1388
|
+
className: "flex-1 items-center justify-center mx-[16px]",
|
|
1551
1389
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
|
|
1552
1390
|
width: 140,
|
|
1553
1391
|
height: 20,
|
|
@@ -1564,7 +1402,7 @@ const FileManagementScreen = ({
|
|
|
1564
1402
|
borderRadius: 12
|
|
1565
1403
|
})]
|
|
1566
1404
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1567
|
-
|
|
1405
|
+
className: "flex-row items-center justify-between px-[12px] py-[12px] gap-[12px]",
|
|
1568
1406
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
|
|
1569
1407
|
width: 100,
|
|
1570
1408
|
height: 36,
|
|
@@ -1575,20 +1413,22 @@ const FileManagementScreen = ({
|
|
|
1575
1413
|
borderRadius: 22
|
|
1576
1414
|
})]
|
|
1577
1415
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
1578
|
-
|
|
1416
|
+
className: "flex-row items-center px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-full gap-[10px]",
|
|
1417
|
+
style: {
|
|
1579
1418
|
backgroundColor: colors.card
|
|
1580
|
-
}
|
|
1419
|
+
},
|
|
1581
1420
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
|
|
1582
1421
|
width: "100%",
|
|
1583
1422
|
height: 44,
|
|
1584
1423
|
borderRadius: 12
|
|
1585
1424
|
})
|
|
1586
1425
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
1587
|
-
|
|
1426
|
+
className: "flex-row px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-[18px]",
|
|
1427
|
+
style: {
|
|
1588
1428
|
backgroundColor: colors.card
|
|
1589
|
-
}
|
|
1429
|
+
},
|
|
1590
1430
|
children: [1, 2, 3].map(i => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1591
|
-
|
|
1431
|
+
className: "flex-1 items-center py-[4px]",
|
|
1592
1432
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
|
|
1593
1433
|
width: 50,
|
|
1594
1434
|
height: 20,
|
|
@@ -1603,8 +1443,8 @@ const FileManagementScreen = ({
|
|
|
1603
1443
|
})]
|
|
1604
1444
|
}, i))
|
|
1605
1445
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
|
|
1606
|
-
|
|
1607
|
-
|
|
1446
|
+
className: "flex-1",
|
|
1447
|
+
contentContainerClassName: "px-[12px] pt-0 pb-[12px]",
|
|
1608
1448
|
showsVerticalScrollIndicator: false,
|
|
1609
1449
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
1610
1450
|
style: {
|
|
@@ -1695,7 +1535,7 @@ const FileManagementScreen = ({
|
|
|
1695
1535
|
// If upload preview is showing, render it inline instead of the file list
|
|
1696
1536
|
if (showUploadPreview) {
|
|
1697
1537
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1698
|
-
|
|
1538
|
+
className: "flex-1",
|
|
1699
1539
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
|
|
1700
1540
|
title: t('fileManagement.reviewFiles'),
|
|
1701
1541
|
subtitle: t('fileManagement.readyToUpload', {
|
|
@@ -1716,7 +1556,7 @@ const FileManagementScreen = ({
|
|
|
1716
1556
|
});
|
|
1717
1557
|
}
|
|
1718
1558
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1719
|
-
|
|
1559
|
+
className: "flex-1",
|
|
1720
1560
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
|
|
1721
1561
|
title: selectMode ? multiSelect ? maxSelection ? t('fileManagement.selectedWithMax', {
|
|
1722
1562
|
count: selectedIds.size,
|
|
@@ -1766,22 +1606,26 @@ const FileManagementScreen = ({
|
|
|
1766
1606
|
elevation: "none",
|
|
1767
1607
|
titleAlignment: "left"
|
|
1768
1608
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1769
|
-
|
|
1609
|
+
className: "flex-row items-center justify-between px-[12px] py-[12px] gap-[12px]",
|
|
1770
1610
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
|
|
1771
1611
|
horizontal: true,
|
|
1772
1612
|
showsHorizontalScrollIndicator: false,
|
|
1773
|
-
|
|
1613
|
+
className: "flex-1",
|
|
1614
|
+
style: {
|
|
1615
|
+
maxWidth: '80%'
|
|
1616
|
+
},
|
|
1774
1617
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1775
|
-
|
|
1618
|
+
className: "flex-row rounded-full p-[2px] overflow-hidden",
|
|
1619
|
+
style: {
|
|
1776
1620
|
backgroundColor: colors.card
|
|
1777
|
-
}
|
|
1621
|
+
},
|
|
1778
1622
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
|
|
1779
1623
|
isSelected: viewMode === 'all',
|
|
1780
1624
|
onPress: () => setViewMode('all'),
|
|
1781
1625
|
icon: viewMode === 'all' ? 'folder' : 'folder-outline',
|
|
1782
1626
|
primaryColor: colors.primary,
|
|
1783
1627
|
textColor: colors.text,
|
|
1784
|
-
style:
|
|
1628
|
+
style: screenStyles.viewModeButton,
|
|
1785
1629
|
accessibilityLabel: t('fileManagement.a11y.viewAll') || 'Show all files'
|
|
1786
1630
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
|
|
1787
1631
|
isSelected: viewMode === 'photos',
|
|
@@ -1789,7 +1633,7 @@ const FileManagementScreen = ({
|
|
|
1789
1633
|
icon: viewMode === 'photos' ? 'image-multiple' : 'image-multiple-outline',
|
|
1790
1634
|
primaryColor: colors.primary,
|
|
1791
1635
|
textColor: colors.text,
|
|
1792
|
-
style:
|
|
1636
|
+
style: screenStyles.viewModeButton,
|
|
1793
1637
|
accessibilityLabel: t('fileManagement.a11y.viewPhotos') || 'Show photos only'
|
|
1794
1638
|
}), !isImageOnlyPicker && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
1795
1639
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
|
|
@@ -1798,7 +1642,7 @@ const FileManagementScreen = ({
|
|
|
1798
1642
|
icon: viewMode === 'videos' ? 'video' : 'video-outline',
|
|
1799
1643
|
primaryColor: colors.primary,
|
|
1800
1644
|
textColor: colors.text,
|
|
1801
|
-
style:
|
|
1645
|
+
style: screenStyles.viewModeButton,
|
|
1802
1646
|
accessibilityLabel: t('fileManagement.a11y.viewVideos') || 'Show videos only'
|
|
1803
1647
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
|
|
1804
1648
|
isSelected: viewMode === 'documents',
|
|
@@ -1806,7 +1650,7 @@ const FileManagementScreen = ({
|
|
|
1806
1650
|
icon: viewMode === 'documents' ? 'file-document' : 'file-document-outline',
|
|
1807
1651
|
primaryColor: colors.primary,
|
|
1808
1652
|
textColor: colors.text,
|
|
1809
|
-
style:
|
|
1653
|
+
style: screenStyles.viewModeButton,
|
|
1810
1654
|
accessibilityLabel: t('fileManagement.a11y.viewDocuments') || 'Show documents only'
|
|
1811
1655
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
|
|
1812
1656
|
isSelected: viewMode === 'audio',
|
|
@@ -1814,15 +1658,16 @@ const FileManagementScreen = ({
|
|
|
1814
1658
|
icon: viewMode === 'audio' ? 'music-note' : 'music-note-outline',
|
|
1815
1659
|
primaryColor: colors.primary,
|
|
1816
1660
|
textColor: colors.text,
|
|
1817
|
-
style:
|
|
1661
|
+
style: screenStyles.viewModeButton,
|
|
1818
1662
|
accessibilityLabel: t('fileManagement.a11y.viewAudio') || 'Show audio only'
|
|
1819
1663
|
})]
|
|
1820
1664
|
})]
|
|
1821
1665
|
})
|
|
1822
1666
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
|
|
1823
|
-
|
|
1667
|
+
className: "flex-row items-center justify-center px-[10px] py-[6px] rounded-full min-w-[36px] gap-[4px]",
|
|
1668
|
+
style: {
|
|
1824
1669
|
backgroundColor: colors.card
|
|
1825
|
-
}
|
|
1670
|
+
},
|
|
1826
1671
|
accessibilityRole: "button",
|
|
1827
1672
|
accessibilityLabel: t('fileManagement.a11y.sortBy', {
|
|
1828
1673
|
field: sortBy,
|
|
@@ -1849,9 +1694,10 @@ const FileManagementScreen = ({
|
|
|
1849
1694
|
color: colors.textSecondary
|
|
1850
1695
|
})]
|
|
1851
1696
|
}), user?.id === targetUserId && (!selectMode || selectMode && allowUploadInSelectMode) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
1852
|
-
|
|
1697
|
+
className: `h-[44px] rounded-[22px] items-center justify-center ${isImageOnlyPicker ? 'w-auto min-w-[44px] px-[14px]' : 'w-[44px]'}`,
|
|
1698
|
+
style: {
|
|
1853
1699
|
backgroundColor: colors.primary
|
|
1854
|
-
}
|
|
1700
|
+
},
|
|
1855
1701
|
onPress: handleFileUpload,
|
|
1856
1702
|
disabled: uploading || isPickingDocument,
|
|
1857
1703
|
accessibilityRole: "button",
|
|
@@ -1860,25 +1706,25 @@ const FileManagementScreen = ({
|
|
|
1860
1706
|
busy: uploading || isPickingDocument
|
|
1861
1707
|
},
|
|
1862
1708
|
children: uploading ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1863
|
-
|
|
1709
|
+
className: "items-center justify-center",
|
|
1864
1710
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
1865
1711
|
size: "small",
|
|
1866
1712
|
color: "#FFFFFF"
|
|
1867
1713
|
}), uploadProgress && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
1868
|
-
|
|
1714
|
+
className: "text-white text-[10px] font-semibold mt-[2px]",
|
|
1869
1715
|
children: [uploadProgress.current, "/", uploadProgress.total]
|
|
1870
1716
|
})]
|
|
1871
1717
|
}) : isPickingDocument ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
1872
1718
|
size: "small",
|
|
1873
1719
|
color: "#FFFFFF"
|
|
1874
1720
|
}) : isImageOnlyPicker ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1875
|
-
|
|
1721
|
+
className: "flex-row items-center gap-[6px]",
|
|
1876
1722
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
1877
1723
|
name: "cloud-upload",
|
|
1878
1724
|
size: 18,
|
|
1879
1725
|
color: "#FFFFFF"
|
|
1880
1726
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1881
|
-
|
|
1727
|
+
className: "text-white text-[14px] font-semibold",
|
|
1882
1728
|
numberOfLines: 1,
|
|
1883
1729
|
children: t('fileManagement.upload') || 'Upload'
|
|
1884
1730
|
})]
|
|
@@ -1889,24 +1735,26 @@ const FileManagementScreen = ({
|
|
|
1889
1735
|
})
|
|
1890
1736
|
})]
|
|
1891
1737
|
}), files.length > 0 && (viewMode === 'all' || files.some(f => f.contentType.startsWith('image/'))) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1892
|
-
|
|
1738
|
+
className: "flex-row items-center px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-full gap-[10px]",
|
|
1739
|
+
style: {
|
|
1893
1740
|
backgroundColor: colors.card
|
|
1894
|
-
}
|
|
1741
|
+
},
|
|
1895
1742
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
1896
1743
|
name: "search",
|
|
1897
1744
|
size: 22,
|
|
1898
1745
|
color: colors.icon
|
|
1899
1746
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
|
|
1900
|
-
|
|
1747
|
+
className: "flex-1 text-[16px] leading-[20px]",
|
|
1748
|
+
style: {
|
|
1901
1749
|
color: colors.text
|
|
1902
|
-
}
|
|
1750
|
+
},
|
|
1903
1751
|
placeholder: viewMode === 'photos' ? t('fileManagement.searchPhotos') : t('fileManagement.searchFiles'),
|
|
1904
1752
|
placeholderTextColor: colors.textSecondary,
|
|
1905
1753
|
value: searchQuery,
|
|
1906
1754
|
onChangeText: setSearchQuery
|
|
1907
1755
|
}), searchQuery.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
1908
1756
|
onPress: () => setSearchQuery(''),
|
|
1909
|
-
|
|
1757
|
+
className: "p-[4px] rounded-[12px] items-center justify-center",
|
|
1910
1758
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
|
|
1911
1759
|
name: "close-circle",
|
|
1912
1760
|
size: 22,
|
|
@@ -1914,46 +1762,59 @@ const FileManagementScreen = ({
|
|
|
1914
1762
|
})
|
|
1915
1763
|
})]
|
|
1916
1764
|
}), files.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1917
|
-
|
|
1765
|
+
className: "flex-row px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-[18px]",
|
|
1766
|
+
style: {
|
|
1918
1767
|
backgroundColor: colors.card
|
|
1919
|
-
}
|
|
1768
|
+
},
|
|
1920
1769
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1921
|
-
|
|
1770
|
+
className: "flex-1 items-center py-[4px]",
|
|
1922
1771
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1772
|
+
className: "text-[20px] font-extrabold leading-[24px]",
|
|
1773
|
+
style: {
|
|
1774
|
+
color: colors.text,
|
|
1775
|
+
letterSpacing: -0.5
|
|
1776
|
+
},
|
|
1926
1777
|
children: filteredFiles.length
|
|
1927
1778
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1779
|
+
className: "text-[12px] font-medium mt-[2px]",
|
|
1780
|
+
style: {
|
|
1781
|
+
color: colors.textSecondary,
|
|
1782
|
+
letterSpacing: 0.2
|
|
1783
|
+
},
|
|
1931
1784
|
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')
|
|
1932
1785
|
})]
|
|
1933
1786
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1934
|
-
|
|
1787
|
+
className: "flex-1 items-center py-[4px]",
|
|
1935
1788
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1789
|
+
className: "text-[20px] font-extrabold leading-[24px]",
|
|
1790
|
+
style: {
|
|
1791
|
+
color: colors.text,
|
|
1792
|
+
letterSpacing: -0.5
|
|
1793
|
+
},
|
|
1939
1794
|
children: (0, _fileManagement.formatFileSize)(filteredFiles.reduce((total, file) => total + file.length, 0))
|
|
1940
1795
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1796
|
+
className: "text-[12px] font-medium mt-[2px]",
|
|
1797
|
+
style: {
|
|
1798
|
+
color: colors.textSecondary,
|
|
1799
|
+
letterSpacing: 0.2
|
|
1800
|
+
},
|
|
1944
1801
|
children: searchQuery.length > 0 ? t('fileManagement.size') : t('fileManagement.totalSize')
|
|
1945
1802
|
})]
|
|
1946
1803
|
}), searchQuery.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
1947
|
-
|
|
1804
|
+
className: "flex-1 items-center py-[4px]",
|
|
1948
1805
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1806
|
+
className: "text-[20px] font-extrabold leading-[24px]",
|
|
1807
|
+
style: {
|
|
1808
|
+
color: colors.text,
|
|
1809
|
+
letterSpacing: -0.5
|
|
1810
|
+
},
|
|
1952
1811
|
children: files.length
|
|
1953
1812
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1813
|
+
className: "text-[12px] font-medium mt-[2px]",
|
|
1814
|
+
style: {
|
|
1815
|
+
color: colors.textSecondary,
|
|
1816
|
+
letterSpacing: 0.2
|
|
1817
|
+
},
|
|
1957
1818
|
children: t('fileManagement.total')
|
|
1958
1819
|
})]
|
|
1959
1820
|
})]
|
|
@@ -2031,7 +1892,5 @@ const FileManagementScreen = ({
|
|
|
2031
1892
|
})]
|
|
2032
1893
|
});
|
|
2033
1894
|
};
|
|
2034
|
-
|
|
2035
|
-
// Styles have been moved to components/fileManagement/styles.ts
|
|
2036
1895
|
var _default = exports.default = FileManagementScreen;
|
|
2037
1896
|
//# sourceMappingURL=FileManagementScreen.js.map
|