feat: implemented files
This commit is contained in:
		@@ -21,7 +21,6 @@ const DirectoryDetails = () => {
 | 
			
		||||
				},
 | 
			
		||||
				(err, data) => {
 | 
			
		||||
					if (err) {
 | 
			
		||||
						console.log(err);
 | 
			
		||||
						ToastAndroid.show(
 | 
			
		||||
							'Failed to fetch directory contents',
 | 
			
		||||
							ToastAndroid.SHORT,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										81
									
								
								src/screens/FileDetails.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								src/screens/FileDetails.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
import React, {useState, useEffect} from 'react';
 | 
			
		||||
import {
 | 
			
		||||
	StyleSheet,
 | 
			
		||||
	ScrollView,
 | 
			
		||||
	Text,
 | 
			
		||||
	Button,
 | 
			
		||||
	ToastAndroid,
 | 
			
		||||
	PermissionsAndroid,
 | 
			
		||||
} from 'react-native';
 | 
			
		||||
import {useRoute} from '@react-navigation/native';
 | 
			
		||||
import prettyBytes from 'pretty-bytes';
 | 
			
		||||
import useS3 from '../hooks/useS3';
 | 
			
		||||
 | 
			
		||||
const FileDetails = () => {
 | 
			
		||||
	const route = useRoute();
 | 
			
		||||
	const s3 = useS3();
 | 
			
		||||
	const [data, setData] = useState(null);
 | 
			
		||||
 | 
			
		||||
	useEffect(() => {
 | 
			
		||||
		if (s3 && !data) {
 | 
			
		||||
			s3.getObject(
 | 
			
		||||
				{
 | 
			
		||||
					Bucket: route.params.bucket,
 | 
			
		||||
					Key: route.params.file,
 | 
			
		||||
					Range: 'bytes=0-1',
 | 
			
		||||
				},
 | 
			
		||||
				(err, data) => {
 | 
			
		||||
					if (err) {
 | 
			
		||||
						ToastAndroid.show('Failed to fetch file info', ToastAndroid.SHORT);
 | 
			
		||||
						return;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					setData(data);
 | 
			
		||||
				},
 | 
			
		||||
			);
 | 
			
		||||
		}
 | 
			
		||||
	}, [s3]);
 | 
			
		||||
 | 
			
		||||
	if (!data) {
 | 
			
		||||
		return <Text>Loading...</Text>;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return (
 | 
			
		||||
		<ScrollView style={styles.root}>
 | 
			
		||||
			<Text style={styles.bucket}>Bucket: {route.params.bucket}</Text>
 | 
			
		||||
			<Text style={styles.fileName}>Key: {route.params.file}</Text>
 | 
			
		||||
			<Text style={styles.info}>
 | 
			
		||||
				Last modified: {data.LastModified.toISOString()}
 | 
			
		||||
			</Text>
 | 
			
		||||
			<Text style={styles.info}>Size: {prettyBytes(data.ContentLength)}</Text>
 | 
			
		||||
			<Text style={styles.info}>Content type: {data.ContentType}</Text>
 | 
			
		||||
		</ScrollView>
 | 
			
		||||
	);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const styles = StyleSheet.create({
 | 
			
		||||
	root: {
 | 
			
		||||
		flex: 1,
 | 
			
		||||
		padding: 12,
 | 
			
		||||
	},
 | 
			
		||||
	bucket: {
 | 
			
		||||
		fontSize: 14,
 | 
			
		||||
		marginBottom: 12,
 | 
			
		||||
		color: '#000000',
 | 
			
		||||
	},
 | 
			
		||||
	fileName: {
 | 
			
		||||
		fontSize: 16,
 | 
			
		||||
		fontWeight: 'bold',
 | 
			
		||||
		marginBottom: 12,
 | 
			
		||||
		color: '#000000',
 | 
			
		||||
	},
 | 
			
		||||
	info: {
 | 
			
		||||
		fontSize: 14,
 | 
			
		||||
		marginBottom: 12,
 | 
			
		||||
	},
 | 
			
		||||
	download: {
 | 
			
		||||
		marginTop: 16,
 | 
			
		||||
	},
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
export default FileDetails;
 | 
			
		||||
		Reference in New Issue
	
	Block a user