import { ConstEnv } from "@/constants/ConstEnv"; import Styles from "@/constants/Styles"; import { apiGetDivisionOneFeature } from "@/lib/api"; import { useAuthSession } from "@/providers/AuthProvider"; import { Feather } from "@expo/vector-icons"; import * as FileSystem from 'expo-file-system'; import { startActivityAsync } from 'expo-intent-launcher'; import { useLocalSearchParams } from "expo-router"; import * as Sharing from 'expo-sharing'; import React, { useEffect, useState } from "react"; import { Alert, Dimensions, Platform, Pressable, View } from "react-native"; import * as mime from 'react-native-mime-types'; import { ICarouselInstance } from "react-native-reanimated-carousel"; import ModalLoading from "../modalLoading"; import Skeleton from "../skeleton"; import Text from "../Text"; type Props = { id: string name: string extension: string path: string share: boolean idStorage: string } export default function FileDivisionDetail({ refreshing }: { refreshing: boolean }) { const ref = React.useRef(null); const width = Dimensions.get("window").width; const [data, setData] = useState([]) const { token, decryptToken } = useAuthSession() const { id } = useLocalSearchParams<{ id: string }>() const [loading, setLoading] = useState(true) const [loadingOpen, setLoadingOpen] = useState(false) async function handleLoad(loading: boolean) { try { setLoading(loading) const hasil = await decryptToken(String(token?.current)) const response = await apiGetDivisionOneFeature({ user: hasil, id, cat: 'new-file' }) setData(response.data) } catch (error) { console.error(error) } finally { setLoading(false) } } useEffect(() => { if (refreshing) handleLoad(false) }, [refreshing]) useEffect(() => { handleLoad(true) }, []) const openFile = (item: Props) => { if (Platform.OS == 'android') setLoadingOpen(true) let remoteUrl = ConstEnv.url_storage + '/files/' + item.idStorage; const fileName = item.name + '.' + item.extension; let localPath = `${FileSystem.documentDirectory}/${fileName}`; const mimeType = mime.lookup(fileName) FileSystem.downloadAsync(remoteUrl, localPath).then(async ({ uri }) => { const contentURL = await FileSystem.getContentUriAsync(uri); setLoadingOpen(false) try { if (Platform.OS == 'android') { // open with android intent await startActivityAsync( 'android.intent.action.VIEW', { data: contentURL, flags: 1, type: mimeType as string, } ); // or // Sharing.shareAsync(localPath); } else if (Platform.OS == 'ios') { Sharing.shareAsync(localPath); } } catch (error) { Alert.alert('INFO', 'Gagal membuka file, tidak ada aplikasi yang dapat membuka file ini'); } finally { if (Platform.OS == 'android') setLoadingOpen(false) } }); }; return ( Dokumen Terkini { loading ? : data.length > 0 ? { data.map((item, index) => ( openFile(item)}> {item.name}.{item.extension} )) } // ( // // // // // // // {data[index].name}.{data[index].extension} // // )} // /> : Tidak ada file } ) }