feat: 选中优化

This commit is contained in:
jinyaqiu 2025-07-30 15:54:56 +08:00
parent 56b0cff7ec
commit 8969e45d6b
2 changed files with 18 additions and 11 deletions

View File

@ -85,6 +85,7 @@ const MessageItem = ({ t, insets, item, sessionId, setModalVisible, modalVisible
{
((item.content.video_material_infos?.length || 0) + (item.content.image_material_infos?.length || 0)) > 3
&& <TouchableOpacity className="absolute top-1/2 -translate-y-1/2 -right-4 translate-x-1/2 bg-bgPrimary flex flex-row items-center gap-2 p-1 pl-2 rounded-full" onPress={() => {
setSelectedImages([])
setModalDetailsVisible({ visible: true, content: item.content });
}}>
<ThemedText className="!text-white font-semibold">{((item.content.video_material_infos?.length || 0) + (item.content.image_material_infos?.length || 0))}</ThemedText>

View File

@ -48,6 +48,16 @@ const SelectModel = ({ modalDetailsVisible, setModalDetailsVisible, insets, setS
windowSize={10}
removeClippedSubviews={true}
renderItem={({ item }) => {
const itemId = item?.id || item?.video?.id;
const isSelected = selectedImages.includes(itemId);
const toggleSelection = () => {
setSelectedImages(prev =>
isSelected
? prev.filter(id => id !== itemId)
: [...prev, itemId]
);
};
return (
<TouchableOpacity
style={detailsStyles.gridItemContainer}
@ -69,18 +79,14 @@ const SelectModel = ({ modalDetailsVisible, setModalDetailsVisible, insets, setS
loadingIndicatorSource={require('@/assets/images/png/placeholder.png')}
/>
<TouchableOpacity
style={[detailsStyles.circleMarker, selectedImages.includes(item?.id || item?.video?.id) ? detailsStyles.circleMarkerSelected : ""]}
onPress={() => {
setSelectedImages((prev) => {
if (prev.includes(item?.id || item?.video?.id)) {
return prev.filter((id) => id !== (item.id || item?.video?.id));
} else {
return [...prev, item.id || item.video?.id];
}
});
}}
style={[
detailsStyles.circleMarker,
isSelected && detailsStyles.circleMarkerSelected
]}
onPress={toggleSelection}
activeOpacity={0.8}
>
{selectedImages.includes(item?.id || item?.video?.id) ? <YesSvg width={16} height={16} /> : ""}
{isSelected && <YesSvg width={16} height={16} />}
</TouchableOpacity>
</View>
</TouchableOpacity>