import {
View,
Text,
TextInput,
ScrollView,
ActivityIndicator,
KeyboardAvoidingView,
Platform,
} from "react-native";
import React, { useState, useEffect } from "react";
import { useTailwind } from "tailwind-rn";
import { useSafeAreaInsets } from "react-native-safe-area-context";
import MediaPicker from "../../components/MediaPicker";
import Toast from "react-native-toast-message";
import { multiUpload } from "../../utils/upload";
import MediaGrid from "../../components/MediaGrid";
import requireAPI from "../../utils/requireAPI";
export default function EditStreamerPost({ navigation, route }) {
const tailwind = useTailwind();
const insets = useSafeAreaInsets();
const [isSubmitting, setIsSubmitting] = useState(false);
const [oldMediaAssets, setOldMediaAssets] = useState([]);
const [mediaAssets, setMediaAssets] = useState([]);
const [mType, setMType] = useState(1);
const [initalData, setInitalData] = useState({});
//价格
const [formData, setFormData] = useState({
content: "",
});
useEffect(() => {
getData();
}, []);
const getData = async () => {
const ids = [parseInt(route.params.id, 10)];
try {
const body = {
ids,
};
const _data = await requireAPI(
"POST",
"/api/moment/list_by_ids_from_creater",
{
body,
},
true
);
if (_data.ret === -1) {
Toast.show({
icon: "fail",
content: _data.msg,
position: "top",
});
return;
}
setInitalData(_data.data.list[0]);
const { text, media_component } = _data.data.list[0];
setFormData({
content: text,
});
setMType(media_component.images.length > 0 ? 1 : 2);
setOldMediaAssets(
media_component.images.length > 0
? media_component.images
: media_component.videos
);
} catch (error) {
console.error(error);
} finally {
setIsSubmitting(false);
}
};
//发布按钮
useEffect(() => {
navigation.setOptions({
headerRight: () => (
{isSubmitting ? "" : "发布"}
{isSubmitting && }
),
});
}, [isSubmitting, handleSubmit, formData, mediaAssets, oldMediaAssets]);
//是否正在拖动图片,用于禁用ScrollView的滚动
const [dragging, setDragging] = useState(false);
const handleSubmit = async () => {
if (formData.content == "") {
Toast.show({
type: "error",
text1: "动态内容不能为空",
topOffset: 60,
});
return;
}
if (oldMediaAssets.length === 0 && mediaAssets.length === 0) {
Toast.show({
type: "error",
text1: "请上传图片或视频",
topOffset: 60,
});
return;
}
//提交数据
if (isSubmitting) return;
setIsSubmitting(true);
const { content } = formData;
const newMedia = await multiUpload(mediaAssets);
const oldMedia = oldMediaAssets.map((item) => item.id);
const media =
mType === 1
? {
...newMedia,
image_ids: [...oldMedia, ...newMedia.image_ids],
}
: {
...newMedia,
video_ids: [...oldMedia, ...newMedia.video_ids],
};
try {
const body = {
id: parseInt(route.params.id, 10),
text: content,
media_component: media,
status: 2,
};
const data = await requireAPI(
"POST",
"/api/moment/update",
{
body,
},
true,
100000
);
if (data.ret === -1) {
Toast.show({
type: "error",
text1: data.msg,
topOffset: 60,
});
return;
}
//提交成功后显示Toast并返回上一页
Toast.show({
type: "success",
text1: "提交成功,等耐心等待审核",
topOffset: 60,
});
navigation.goBack();
} catch (error) {
console.error(error);
} finally {
setIsSubmitting(false);
}
};
return (
{/* 内容 */}
{initalData?.status === 6 && (
违规详情
{initalData.text_audit_opinion && (
文案违规原因:
{initalData.text_audit_opinion}
)}
{initalData.image_audit_opinion && (
图片/视频违规原因:
{initalData.image_audit_opinion}
)}
{initalData.manually_review_opinion && (
运营追加:
{initalData.manually_review_opinion}
)}
)}
动态内容
setFormData({ content: e.nativeEvent.text })}
style={tailwind(
"h-32 bg-[#FFFFFF1A] text-white rounded-2xl mt-2 mb-4 p-2"
)}
/>
{oldMediaAssets.length > 0 && (
)}
);
}