Files
EMI-ExpoAPP/components/PostPopularUsers.js
2026-02-20 20:13:10 -05:00

82 lines
2.6 KiB
JavaScript

import React, { useState } from 'react';
import { Text, ScrollView, FlatList, StyleSheet, View, Share } from 'react-native';
import { Button, Card, Chip } from 'react-native-paper';
import API from '../API.js';
import UserName from './UserName.js';
import Media from './Media.js';
import Comment from "./Comment.js";
import NewComment from './NewComment.js';
import Moment from 'moment';
import { useSnapshot } from 'valtio';
import GlobalState from '../contexts/GlobalState.js';
import i18n from "../i18nMessages.js";
import ProfilePhotoCircle from './ProfilePhotoCircle.js';
import ProfileVertical from './ProfileCardVertical.js';
let Post = (props) => {
const gState = useSnapshot(GlobalState);
const viewer = gState.me;
let [post, changePost] = useState(props.post);
let toProfileText = post.toProfile && post.toProfile !== post.profileid ?
<ProfilePhotoCircle profileid={post.toProfile} small={true} /> : undefined;
let cleanContent = post.content.replace(/@[A-z]+:.+\w/g, '').trim();
let usersStrings = post.content.match(/@[A-z]+:.+\w/g);
let userIds = [];
let usersProfileCars = [];
if(usersStrings){
usersStrings.forEach((userString)=>{
userIds.push(userString.split(':')[1]);
usersProfileCars.push(
<ProfileVertical profileid={userString.split(':')[1]} skipFollow={true}/>
);
});
}
let renderPost = (obj) => {
return <ProfileVertical profileid={obj.item} />
}
if(usersProfileCars.length === 0) return <></>
return (
<Card style={styles.card}>
<Card.Content style={{
padding: 0,
margin: 0,
marginBottom: 0
}}>
<View>
<Text style={{ fontSize: 18 }}>{cleanContent}</Text>
<Media content={post.content} />
<FlatList data={userIds}
horizontal={true}
renderItem={renderPost}
keyExtractor={(item, index) => `${item}-${index}`}
/>
</View>
</Card.Content>
</Card>
);
}
export default React.memo(Post);
const styles = StyleSheet.create({
userName: {
fontSize: 14,
fontWeight: 'bold',
marginBottom: 5,
fontSize: 17,
},
card: {
margin: 0,
backgroundColor: "#FAFAFA",
borderRadius: 0,
marginBottom: 2,
padding: 0
},
comment: {
margin: 8,
marginTop: 0,
padding: 8
}
});