import React, {FC, useState} from 'react'; // Redux import {compose} from '@reduxjs/toolkit'; import {connect, useSelector} from 'react-redux'; import {firestoreConnect, WithFirestoreProps} from 'react-redux-firebase'; import {RootState} from '../store'; import {selectProfile} from '../store/firebase'; // Routing import {Link} from 'react-router-dom'; import Routes from '../constants/routes'; // Style import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; import {faThumbsUp} from '@fortawesome/free-solid-svg-icons'; import Header from '../components/Header'; // Typing import Post, {dummyPost as post} from '../models/Post'; import Collections from '../constants/collections'; interface IProps extends WithFirestoreProps { posts: Post[]; } /** * A Dev's Posts list */ const Posts: FC = ({posts, firestore, firebase}) => { const [text, setText] = useState(''); const {avatarUrl, displayName} = useSelector(selectProfile); const id = firebase.auth().currentUser?.uid; const newPost = { userID: id, name: displayName, text, avatarUrl, likes: [] as string[], comments: [], }; const handleChange = (e: React.ChangeEvent) => setText(e.target.value); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); firestore .add(Collections.POSTS, newPost) .then(() => setText('')) .catch(err => console.error(err)); }; // const removeLike = (e: React.MouseEvent) => // new Error('Not implemented yet.'); const addLike = (postID: string) => ( e: React.MouseEvent, ) => { e.preventDefault(); const post = posts.find(p => p.id === postID); if (post) { firestore .update(`${Collections.POSTS}/${post.id}`, {likes: [...post.likes, id]}) .catch(err => console.error(err)); } }; return (

Say Something