From 46e8297a9be3249bf03323244c55504f057c9050 Mon Sep 17 00:00:00 2001 From: Deepshikha Date: Sun, 17 Oct 2021 16:23:04 +0530 Subject: [PATCH] feat (postDeatils) :- created post details. added react redux. --- client/package-lock.json | 158 ++++++++++++++ client/package.json | 2 + client/public/Assets/nullcast.jpg | Bin 0 -> 33273 bytes client/src/App.js | 2 + client/src/Redux/profilePic/profilePic.js | 16 ++ client/src/Redux/store.js | 11 + client/src/Redux/userName/userName.js | 18 ++ .../components/post-details/postDetails.js | 196 ++++++++++++++++++ client/src/components/user-card/user-card.js | 47 +++-- client/src/index.js | 6 +- client/tailwind.config.js | 23 +- 11 files changed, 457 insertions(+), 22 deletions(-) create mode 100644 client/public/Assets/nullcast.jpg create mode 100644 client/src/Redux/profilePic/profilePic.js create mode 100644 client/src/Redux/store.js create mode 100644 client/src/Redux/userName/userName.js create mode 100644 client/src/components/post-details/postDetails.js diff --git a/client/package-lock.json b/client/package-lock.json index bbb11c7..9536034 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1251,6 +1251,55 @@ "minimist": "^1.2.0" } }, + "@craco/craco": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@craco/craco/-/craco-6.3.0.tgz", + "integrity": "sha512-SCnfEQxT/6NAbU/3sIWw7gQXtzjjiTp/EZFdJTd8inPURILIy0YajrC2p8qBG2KhFo5cwgOrEDyaGyAFvvuyuA==", + "requires": { + "cross-spawn": "^7.0.0", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", @@ -1989,6 +2038,24 @@ } } }, + "@reduxjs/toolkit": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.6.2.tgz", + "integrity": "sha512-HbfI/hOVrAcMGAYsMWxw3UJyIoAS9JTdwddsjlr5w3S50tXhWb+EMyhIw+IAvCVCLETkzdjgH91RjDSYZekVBA==", + "requires": { + "immer": "^9.0.6", + "redux": "^4.1.0", + "redux-thunk": "^2.3.0", + "reselect": "^4.0.0" + }, + "dependencies": { + "immer": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz", + "integrity": "sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==" + } + } + }, "@rollup/plugin-node-resolve": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", @@ -2329,6 +2396,15 @@ "@types/node": "*" } }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "@types/html-minifier-terser": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", @@ -2399,11 +2475,37 @@ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==" }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + }, "@types/q": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" }, + "@types/react": { + "version": "17.0.30", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.30.tgz", + "integrity": "sha512-3Dt/A8gd3TCXi2aRe84y7cK1K8G+N9CZRDG8kDGguOKa0kf/ZkSwTmVIDPsm/KbQOVMaDJXwhBtuOXxqwdpWVg==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-redux": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.19.tgz", + "integrity": "sha512-L37dSCT0aoJnCgpR8Iuginlbxoh7qhWOXiaDqEsxVMrER1CmVhFD+63NxgJeT4pkmEM28oX0NH4S4f+sXHTZjA==", + "requires": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, "@types/resolve": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", @@ -2412,6 +2514,11 @@ "@types/node": "*" } }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, "@types/source-list-map": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", @@ -4840,6 +4947,11 @@ } } }, + "csstype": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", + "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" + }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", @@ -12815,6 +12927,26 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "react-redux": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz", + "integrity": "sha512-Dt29bNyBsbQaysp6s/dN0gUodcq+dVKKER8Qv82UrpeygwYeX1raTtil7O/fftw/rFqzaf6gJhDZRkkZnn6bjg==", + "requires": { + "@babel/runtime": "^7.12.1", + "@types/react-redux": "^7.1.16", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, "react-refresh": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", @@ -13073,6 +13205,19 @@ } } }, + "redux": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.1.tgz", + "integrity": "sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw==", + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "redux-thunk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", + "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -13277,6 +13422,11 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, + "reselect": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", + "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" + }, "resolve": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", @@ -16647,6 +16797,14 @@ } } }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "requires": { + "lodash": "^4.17.15" + } + }, "webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", diff --git a/client/package.json b/client/package.json index 6697d9b..81c3498 100644 --- a/client/package.json +++ b/client/package.json @@ -4,11 +4,13 @@ "private": true, "dependencies": { "@craco/craco": "^6.3.0", + "@reduxjs/toolkit": "^1.6.2", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-redux": "^7.2.5", "react-router-dom": "^5.3.0", "react-scripts": "4.0.3", "web-vitals": "^1.0.1" diff --git a/client/public/Assets/nullcast.jpg b/client/public/Assets/nullcast.jpg new file mode 100644 index 0000000000000000000000000000000000000000..da7635300e5bff084b725264942e0ca058e699e1 GIT binary patch literal 33273 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 z

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

F!0_V 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 + ); } diff --git a/client/src/Redux/profilePic/profilePic.js b/client/src/Redux/profilePic/profilePic.js new file mode 100644 index 0000000..3a6baff --- /dev/null +++ b/client/src/Redux/profilePic/profilePic.js @@ -0,0 +1,16 @@ +import { createSlice } from "@reduxjs/toolkit"; + +export const profilePic = createSlice({ + name:'profilePicUrl', + initialState:{ + value:'./Assets/profilepic.jpg', + }, + reducers:{ + changeUrl:(state,action) => { + state.value = action.payload; + } + } +}) + +export const {changeUrl} = profilePic.actions; +export default profilePic.reducer; \ No newline at end of file diff --git a/client/src/Redux/store.js b/client/src/Redux/store.js new file mode 100644 index 0000000..22c4aa6 --- /dev/null +++ b/client/src/Redux/store.js @@ -0,0 +1,11 @@ +import {configureStore} from '@reduxjs/toolkit'; +import profilePicReducer from './profilePic/profilePic'; +import userNameReducer from './userName/userName'; + +export default configureStore({ + reducer:{ + profilePicUrl : profilePicReducer, + userName : userNameReducer + + } +}) \ No newline at end of file diff --git a/client/src/Redux/userName/userName.js b/client/src/Redux/userName/userName.js new file mode 100644 index 0000000..b9ff808 --- /dev/null +++ b/client/src/Redux/userName/userName.js @@ -0,0 +1,18 @@ +import { createSlice } from "@reduxjs/toolkit"; + +const userName = createSlice({ + name:'userName', + initialState:{ + value:'User Name' + }, + reducers:{ + changeUserName:(state,action) => { + state.value = action.payload + } + } +}) + +export const {changeUserName} = userName.actions; + +export default userName.reducer; + diff --git a/client/src/components/post-details/postDetails.js b/client/src/components/post-details/postDetails.js new file mode 100644 index 0000000..1dbe662 --- /dev/null +++ b/client/src/components/post-details/postDetails.js @@ -0,0 +1,196 @@ +import {useState} from 'react'; +import { BsThreeDots,BsBookmark,BsFillFlagFill,BsEmojiSmile,BsImageFill } from "react-icons/bs"; +import { BiWorld} from "react-icons/bi"; +import { GrLink,GrFormClose } from "react-icons/gr"; +import { ImEmbed2,ImWondering } from "react-icons/im"; +import { AiFillCloseCircle,AiFillEyeInvisible} from "react-icons/ai"; +import { IoVolumeMuteSharp } from "react-icons/io5"; +import { MdVisibility,MdThumbUp} from "react-icons/md"; +import { FaRegCommentDots,FaHandsWash,FaHandHoldingHeart,FaHeart } from "react-icons/fa"; +import { CgCornerUpRight } from "react-icons/cg"; +import { RiSendPlaneFill } from "react-icons/ri"; +import { HiLightBulb } from "react-icons/hi"; +import { useSelector } from 'react-redux'; + +function PostDetails() { + const [dropdown,setDropdown] = useState(false); + const [post,setPost] = useState('./Assets/nullcast.jpg'); + const [content,setContent] = useState('sample text'); + const [reactions, setReactions] = useState(false); + const [like, setLike] = useState(true); + const [clickedReaction, setClickedReaction] = useState(); + const [currentReaction, setCurrentReaction] = useState(Like) + const [commentBox, setCommentBox] = useState(false); + const [comment, setComment] = useState(''); + const [commentList, setCommentList] = useState([{'text':'','imageUrl':''}]); + const [postComment, setPostComment] = useState(false); + const [messagePopup, setMessagePopup] = useState(false); + const [imageUrl, setImageUrl] = useState(''); + const [commentCount, setCommentCount] = useState(0); + const profilePicUrl = useSelector(state => state.profilePicUrl.value); + const userName = useSelector (state => state.userName.value); + + const reactionList = ()=> { + setTimeout(() => {setReactions(false)}, 2000); + } + const onHandleLike = () => { + setLike(!like); + if (like){ + setClickedReaction(); + setCurrentReaction(Like); + } + else { + setClickedReaction(); + setCurrentReaction(Like); + } + + } + const clickedLike = ()=> { + setLike(false); + setClickedReaction(); + setCurrentReaction(Like); + } + const clickedCelebrate = () =>{ + setLike(false); + setClickedReaction(); + setCurrentReaction(Celebrate); + } + const clickedSupport = () =>{ + setLike(false); + setClickedReaction(); + setCurrentReaction(Support) + } + const clickedLove = () =>{ + setLike(false); + setClickedReaction(); + setCurrentReaction(Love) + } + const clickedInsight = () =>{ + setLike(false); + setClickedReaction(); + setCurrentReaction(Insight); + } + const clickedCurious = () =>{ + setLike(false); + setClickedReaction(); + setCurrentReaction(Curious); + } + const handleFormSubmit = (e) => { + e.preventDefault(); + setComment(''); + setImageUrl(); + } + const handleCommentChange = (e) =>{ + setPostComment(true); + setComment(e.target.value); + } + const handleCommentSubmit = ()=>{ + setCommentList([...commentList,{text:comment,imageUrl}]); + setCommentCount(commentList.length); + } + const handleCommentImage = (e) =>{ + setImageUrl(URL.createObjectURL(e.target.files[0])); + setPostComment(true); + } + return ( +

+
+
+
Connections likes this
+ setDropdown(!dropdown)} className='cursor-pointer rounded-full h-6 w-6 hover:bg-gray-400' /> + {dropdown && } +
+
+
+ profile pic +
+
+ userName +
+
+

Followers

+

6h .

+
+
+
+
+
+

{content}

+
+ +
+
+
+ reactionCount . + {commentCount} Comments +
+
+ {reactions &&
setReactions(false)} onMouseEnter={()=> setReactions(true)} className='absolute border border-primary flex justify-between w-60 -top-10 -left-7 rounded-full px-6 py-3 bg-white'> + + + + + + +
} +
setReactions(true)} onClick={onHandleLike}>{clickedReaction}{currentReaction}
+
setCommentBox(true)}>Comment
+
Share
+
setMessagePopup(true)}>Send
+
+ {commentBox &&
+ +
+
+