import { View, Text, Image as NativeImage, TouchableOpacity, ScrollView, } from "react-native"; import React, { useState, useCallback } from "react"; import { useTailwind } from "tailwind-rn"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import Toast from "react-native-toast-message"; import { Image } from "expo-image"; import { useHeaderHeight } from "@react-navigation/elements"; import baseRequest from "../../utils/baseRequest"; import { generateSignature } from "../../utils/crypto"; import GetWechatModal from "../../components/GetWechatModal"; import SubmitWechatModal from "../../components/SubmitWechatModal"; import VideoModal from "../../components/VideoModal"; import SpaceIntroduceSkeleton from "./skeleton"; import { usePreventScreenCapture } from "expo-screen-capture"; import { useFocusEffect } from "@react-navigation/native"; import { useImageViewer } from "../../context/ImageViewProvider"; export default function SpaceIntroduce({ navigation, route }) { usePreventScreenCapture(); const tailwind = useTailwind(); const insets = useSafeAreaInsets(); const headerHeight = useHeaderHeight(); const { showImageViewer } = useImageViewer(); const [data, setData] = useState({}); const [isLoading, setIsloading] = useState(true); const getData = async () => { const apiUrl = process.env.EXPO_PUBLIC_API_URL; try { const base = await baseRequest(); const signature = await generateSignature({ mid: route.params.mid, ...base, }); const _response = await fetch( `${apiUrl}/api/zone/list_by_mid?signature=${signature}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ mid: route.params.mid, ...base, }), } ); const _data = await _response.json(); if (_data.ret === -1) { Toast.show({ type: "error", text1: _data.msg, topOffset: 60, }); return; } if (_data.data.list[0].visitor_role !== 4) { navigation.replace("StreamerSpace", { mid: route.params.mid }); return; } setData({ ..._data.data.list[0], refund_enable: _data.data.refund_enable, refund_status: _data.data.refund_status, }); setIsloading(false); } catch (error) { console.error(error); } }; useFocusEffect( useCallback(() => { getData(); }, []) ); const images = data?.streamer_ext?.album?.images ?.slice(0, 5) ?.map((image) => { return image?.urls[0]; }); const imagesForImageViewer = images?.map((url) => ({ url })); //当空间价格为0时,直接加入空间 const handleJoinFreeSpace = async () => { const apiUrl = process.env.EXPO_PUBLIC_API_URL; try { const base = await baseRequest(); const body = { zid: data?.id, product_id: "h5_zone_admission", ...base, }; const signature = await generateSignature(body); const _response = await fetch( `${apiUrl}/api/zone/free_join?signature=${signature}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(body), } ); const _data = await _response.json(); if (_data.ret === -1) { Toast.show({ type: "error", text1: _data.msg, topOffset: 60, }); return; } navigation.replace("StreamerSpace", { mid: route.params.mid }); } catch (error) { console.error(error); } }; //点击查看微信按钮 const [isAddWechatModalVisible, setIsAddWechatModalVisible] = useState(false); //是否展示视频Modal const [showVideo, setShowVideo] = useState(false); //加载初始骨架屏 if (isLoading) return ; return ( {data?.streamer_ext?.name} {data?.streamer_ext?.user_id} setIsAddWechatModalVisible(true)} style={tailwind("flex flex-col items-center ml-auto")} > 查看微信 {data?.zone_moment_count} 动态 {data?.image_count} 照片 {data?.video_count} 视频 空间介绍 {data?.profile} { setShowVideo(true); }} style={tailwind("basis-1/3 p-0.5")} > {data?.streamer_ext?.album?.images?.map((item, index) => { if (index > 4) return; return ( { showImageViewer({ imageUrls: imagesForImageViewer, index: index, }); }} key={index} style={tailwind("basis-1/3 p-0.5")} > ); })} {data?.admission_price !== 0 && ( <> 付费须知 1、加入后,您可以查看空间内相关内容; 2、本空间由空间主人自行创建,加入空间前请确认相关风险,本平台不提供相关保证,请避免上当受骗; 3、虚拟商品一经售出不予退款,请确认阅读上述条款并无异议后进行购买; 4、本平台不提供违法及色情内容,如您发现空间内存在以上内容,请联系人工客服举报处理。 )} {data?.refund_status !== 1 && data?.refund_status !== 2 && ( navigation.navigate("WebWithoutHeader", { uri: process.env.EXPO_PUBLIC_WEB_URL + "/zone/pay/" + data?.id + "/h5_zone_admission/0", }) } style={tailwind( "flex flex-row items-center justify-center h-12 rounded-full px-10 bg-[#FF669E]" )} > {data?.admission_price !== 0 && ( )} {data?.admission_price === 0 ? "免费加入" : `${data?.admission_price / 100}元立即加入`} )} {/* 查看微信Modal */} {data?.streamer_ext?.wechat_lock_type === 0 ? ( ) : ( )} {/* 查看视频Modal */} ); }