import { View, Image } from "react-native";
import React, { useState, useEffect } from "react";
import { useTailwind } from "tailwind-rn";
import { Icon } from "@rneui/themed";
import { DraggableGrid } from "react-native-draggable-grid";
import { useImageViewer } from "../../context/ImageViewProvider";
import VideoModal from "../VideoModal";
/*
props格式:
setDragging 返回正在拖动的状态,用于该组件嵌套在ScrollView中的时候禁用ScrollView的滚动
type 选择的媒体类型 "image"|"video"|"mix"
maxCount 最大选择数量
setAssets 向父组件返回媒体
*/
export default function MediaGrid({
setDragging = () => null,
assets,
setAssets,
}) {
const tailwind = useTailwind();
const { showImageViewer } = useImageViewer();
const [showVideo, setShowVideo] = useState(false);
const [videoUrl, setVideoUrl] = useState("");
//当newAssets改变的时候添加新数据到assets
useEffect(() => {
const temAssets = assets.map((item) => ({
...item,
uri: item?.dur > 0 ? item.cover_urls[0] : item.urls[0],
key: Date.now().toString(36) + Math.random().toString(36),
}));
setAssets(temAssets);
}, []);
const renderItem = (item) => {
const handleDelete = () => {
const updatedAssets = assets.filter((_item) => _item.key !== item.key);
setAssets(updatedAssets);
};
return (
{item?.dur > 0 && (
)}
);
};
return (
setDragging(true)}
onDragRelease={(data) => {
setAssets(data);
setDragging(false);
}}
onItemPress={(item) => {
if (item?.dur > 0) {
setVideoUrl(item.urls[0]);
setShowVideo(true);
return;
}
showImageViewer({
imageUrls: [{ url: item.uri }],
index: 0,
});
}}
/>
);
}