diff --git a/components/SpacePost/index.jsx b/components/SpacePost/index.jsx
index 2811cd2..2d2257e 100644
--- a/components/SpacePost/index.jsx
+++ b/components/SpacePost/index.jsx
@@ -34,6 +34,55 @@ export default function SpacePost({ data }) {
);
const [showVideo, setShowVideo] = useState(false);
+ //是否查看全文
+ const [isFullTextBtnShow, setIsFullTextBtnShow] = useState(false);
+ const [isTextCollapsed, setIsTextCollapsed] = useState(true);
+ const [numberOfLines, setNumberOfLines] = useState(
+ data.text_visible_range ? data.text_visible_range : 0
+ );
+ const [textInit, setTextInit] = useState(true);
+ const handleOnTextLayout = (event) => {
+ if (!textInit) return;
+ const line = event.nativeEvent.lines.length;
+ if (line > 5 && data.is_zone_moment_unlocked === 1) {
+ setNumberOfLines(5);
+ setIsFullTextBtnShow(true);
+ }
+ if (line > 5 && data.is_zone_moment_unlocked === 0) {
+ if (data.text_visible_range <= 5)
+ setNumberOfLines(data.text_visible_range);
+ if (data.text_visible_range > 5) {
+ setNumberOfLines(5);
+ setIsFullTextBtnShow(true);
+ }
+ }
+ if (line <= 5 && data.is_zone_moment_unlocked === 1) {
+ setNumberOfLines(0);
+ if (line <= 5 && data.is_zone_moment_unlocked === 0) {
+ if (data.text_visible_range <= 5)
+ setNumberOfLines(data.text_visible_range);
+ if (data.text_visible_range > 5) setNumberOfLines(0);
+ }
+ }
+ setTextInit(false);
+ };
+
+ const onPressFullTextBtn = () => {
+ if (isTextCollapsed) {
+ setIsTextCollapsed(false);
+ setNumberOfLines(
+ data.is_zone_moment_unlocked === 0 ? data.text_visible_range : 0
+ );
+ } else {
+ setIsTextCollapsed(true);
+ setNumberOfLines(
+ data.is_zone_moment_unlocked === 0 && data.text_visible_range <= 5
+ ? data.text_visible_range
+ : 5
+ );
+ }
+ };
+
//判断是否是发帖人
const [isCreator, setIsCreator] = useState(false);
useEffect(() => {
@@ -188,13 +237,20 @@ export default function SpacePost({ data }) {
renderText: renderLink,
},
]}
- numberOfLines={
- data.is_zone_moment_unlocked === 0 ? data.text_visible_range : 0
- }
+ numberOfLines={numberOfLines}
ellipsizeMode="tail"
+ onTextLayout={handleOnTextLayout}
>
{data?.text}
+ {isFullTextBtnShow && (
+
+ {isTextCollapsed ? "全文" : "收起"}
+
+ )}
{/* 媒体展示 */}
{data.media_component.video_ids?.length === 0 ||
@@ -618,7 +674,7 @@ function ImageDisplay({
transition={100}
cachePolicy="disk"
/>
- {isCreator && visibleRange < index + 1 && (
+ {isCreator && visibleRange < index + 1 && data.c_type === 1 && (
{
+ setVisible(false);
+ navigation.navigate("EditSpacePost", { data: data });
+ };
+
//删除
const handleDelete = async () => {
const apiUrl = process.env.EXPO_PUBLIC_API_URL;
@@ -824,6 +886,7 @@ function OperationModal({ visible, setVisible, data }) {
//判断是否展示删除、拉黑、举报功能
const [display, setDisPlay] = useState({
delete: false,
+ edit: false,
top: false,
block: true,
feedback: true,
@@ -833,7 +896,7 @@ function OperationModal({ visible, setVisible, data }) {
const account = await get("account");
if (account.mid === data.mid || account.role === 1 || account.role === 2)
setDisPlay((prev) => {
- return { ...prev, delete: true, top: true };
+ return { ...prev, delete: true, top: true, edit: true };
});
if (account.mid === data.mid)
setDisPlay((prev) => {
@@ -918,6 +981,23 @@ function OperationModal({ visible, setVisible, data }) {
>
)}
+ {display.edit && (
+
+
+
+ 编辑
+
+
+
+
+ )}
{display.delete && (
- 价格:
+ 价格:¥
{
+ if (parseFloat(price) === 0) {
+ Toast.show({
+ type: "error",
+ text1: "不可改为免费动态",
+ topOffset: 60,
+ });
+ return;
+ }
+ if (parseFloat(price) < 0) {
+ Toast.show({
+ type: "error",
+ text1: "请输入正确区间的价格",
+ topOffset: 60,
+ });
+ return;
+ }
+ if (parseFloat(price) > 0 && parseInt(parseFloat(price) * 100, 10) < 100) {
+ Toast.show({
+ type: "error",
+ text1: "请输入正确区间的价格",
+ topOffset: 60,
+ });
+ return;
+ }
+ if (parseInt(parseFloat(price) * 100, 10) > 300000) {
+ Toast.show({
+ type: "error",
+ text1: "请输入正确区间的价格",
+ topOffset: 60,
+ });
+ return;
+ }
+ if (parseInt(textVisibleRange, 10) < 1) {
+ Toast.show({
+ type: "error",
+ text1: "请输入正确区间的可预览文案行数",
+ topOffset: 60,
+ });
+ return;
+ }
+ if (
+ parseInt(imageVisibleRange, 10) < 0 ||
+ parseInt(imageVisibleRange, 10) > 3
+ ) {
+ Toast.show({
+ type: "error",
+ text1: "请输入正确区间的可预览图片张数",
+ topOffset: 60,
+ });
+ return;
+ }
+ setIsModalVisible(false);
+ };
+
//保存新添加的媒体
const [newMeidaAssets, setNewMediaAssets] = useState([]);
//展示旧媒体组件
@@ -112,7 +198,7 @@ export default function EditSpacePost({ navigation, route }) {
if (
data.c_type === 1 &&
data.m_type === 1 &&
- oldMediaAssets.length + newMeidaAssets.length <= data.media_visible_range
+ oldMediaAssets.length + newMeidaAssets.length <= imageVisibleRange
) {
Toast.show({
type: "error",
@@ -142,6 +228,14 @@ export default function EditSpacePost({ navigation, route }) {
m_type: data.m_type,
text: content,
media_component: media,
+ text_visible_range: textVisibleRange
+ ? parseInt(textVisibleRange, 10)
+ : 999,
+ media_visible_range: imageVisibleRange
+ ? parseInt(imageVisibleRange, 10)
+ : 1,
+ is_blurring_cover: blurCover ? 1 : 0,
+ is_ironfan_visible: isFreeForIronfan ? 1 : 0,
};
const signature = await generateSignature(body);
const _response = await fetch(
@@ -202,33 +296,35 @@ export default function EditSpacePost({ navigation, route }) {
}}
>
-
-
- 违规详情
-
-
- {data.text_audit_opinion && (
-
- 文案违规原因:
- {data.text_audit_opinion}
-
- )}
- {data.image_audit_opinion && (
-
-
- 图片/视频违规原因:
+ {data?.status === 3 && (
+
+
+ 违规详情
+
+
+ {data.text_audit_opinion && (
+
+ 文案违规原因:
+ {data.text_audit_opinion}
- {data.image_audit_opinion}
-
- )}
- {data.manually_review_opinion && (
-
- 运营追加:
- {data.manually_review_opinion}
-
- )}
+ )}
+ {data.image_audit_opinion && (
+
+
+ 图片/视频违规原因:
+
+ {data.image_audit_opinion}
+
+ )}
+ {data.manually_review_opinion && (
+
+ 运营追加:
+ {data.manually_review_opinion}
+
+ )}
+
-
+ )}
动态内容
@@ -254,6 +350,350 @@ export default function EditSpacePost({ navigation, route }) {
type={data.m_type === 1 ? "image" : "video"}
setAssets={setNewMediaAssets}
/>
+ {data.c_type === 1 && (
+
+ )}
+ {data.m_type === 1 && (
+
+
+
+
+
+
+
+ 价格:¥
+
+ setPrice(value)}
+ value={price}
+ style={tailwind(
+ "flex-1 bg-[#FFFFFF1A] text-white rounded-2xl px-4 h-8 mx-2"
+ )}
+ />
+ setPrice("0")}
+ style={tailwind("text-[#FF669E] text-base font-medium")}
+ >
+ 免费
+
+
+ {parseFloat(price) > 0 && (
+ <>
+
+
+ 可预览文案:
+
+
+ 前
+
+ setTextVisibleRange(value)}
+ value={textVisibleRange}
+ style={tailwind(
+ "bg-[#FFFFFF1A] text-white rounded-2xl px-4 mx-2 h-8"
+ )}
+ />
+
+ 行
+
+ setTextVisibleRange("999")}
+ style={tailwind(
+ "text-[#FF669E] text-base font-medium ml-auto"
+ )}
+ >
+ 全部可见
+
+
+
+
+ 可预览图片:
+
+
+ 前
+
+
+ setImageVisibleRange(value)
+ }
+ value={imageVisibleRange}
+ style={tailwind(
+ "bg-[#FFFFFF1A] text-white rounded-2xl px-4 mx-2 h-8"
+ )}
+ />
+
+ 张
+
+ setImageVisibleRange("0")}
+ style={tailwind(
+ "text-[#FF669E] text-base font-medium ml-auto"
+ )}
+ >
+ 不可预览
+
+
+
+
+ 铁粉免费查看:
+
+
+ setIsFreeForIronfan(value)
+ }
+ thumbColor="#ffffff"
+ trackColor={{ true: "#FF669E", false: "#FFFFFF1A" }}
+ />
+
+ >
+ )}
+
+
+
+ 保存
+
+
+
+
+
+
+
+ )}
+ {data.m_type === 2 && (
+
+
+
+
+
+
+
+ 价格:¥
+
+ setPrice(value)}
+ value={price}
+ style={tailwind(
+ "flex-1 bg-[#FFFFFF1A] text-white rounded-2xl px-4 h-8 mx-2"
+ )}
+ />
+ setPrice("0")}
+ style={tailwind("text-[#FF669E] text-base font-medium")}
+ >
+ 免费
+
+
+ {parseFloat(price) > 0 && (
+ <>
+
+
+ 可预览文案:
+
+
+ 前
+
+ setTextVisibleRange(value)}
+ value={textVisibleRange}
+ style={tailwind(
+ "bg-[#FFFFFF1A] text-white rounded-2xl px-4 mx-2 h-8"
+ )}
+ />
+
+ 行
+
+ setTextVisibleRange("999")}
+ style={tailwind(
+ "text-[#FF669E] text-base font-medium ml-auto"
+ )}
+ >
+ 全部可见
+
+
+
+
+ 封面模糊:
+
+ setBlurCover(value)}
+ thumbColor="#ffffff"
+ trackColor={{ true: "#FF669E", false: "#FFFFFF1A" }}
+ />
+
+
+
+ 铁粉免费查看:
+
+
+ setIsFreeForIronfan(value)
+ }
+ thumbColor="#ffffff"
+ trackColor={{ true: "#FF669E", false: "#FFFFFF1A" }}
+ />
+
+ >
+ )}
+
+
+
+ 保存
+
+
+
+
+
+
+ )}
);