Browse Source

15.03.2023 23:30

Volddemar4ik 1 year ago
parent
commit
2eef51439a

+ 1 - 0
js/Project/project/src/App.css

@@ -40,4 +40,5 @@
 
 a {
   text-decoration: none;
+  color: inherit
 }

+ 3 - 3
js/Project/project/src/App.js

@@ -8,7 +8,7 @@ import createHistory from "history/createBrowserHistory";
 
 // импорт страниц
 import { CUser } from './components/user';
-import { ReduxFeed } from './components/feed';
+import { CFeed } from './components/feed';
 import { CComments } from './components/post';
 import { CreatePost } from './components/create_post';
 import Authorization from './components/auth_reg';
@@ -50,8 +50,8 @@ function App() {
                     <Header />
                     <main style={{ flexGrow: '1' }}>
                         <Switch>
-                            {/* <Route path="/" component={ReduxFeed} exact /> */}
-                            <Route path="/feed" component={ReduxFeed} />
+                            <Route path="/" component={CFeed} exact />
+                            {/* <Route path="/feed" component={CFeed} /> */}
                             <Route path="/authorization" component={Authorization} />
                             <Route path="/registration" component={Registration} />
                             <Route path="/post/:postId" component={CComments} />

+ 1 - 1
js/Project/project/src/components/auth_reg/index.js

@@ -122,7 +122,7 @@ export default function Authorization() {
                             await store.dispatch(actionFullLogin(login, pass))
 
                             if ((Object.keys(store.getState().auth)).length) {
-                                history.push('/feed')
+                                history.push('/')
                             }
                         }}
                     />

+ 8 - 5
js/Project/project/src/components/create_post/index.js

@@ -20,12 +20,12 @@ import { UploadedFiles } from './uploaded_files';
 
 export const CreatePost = () => {
     const [post, setPost] = useState({ title: '', text: '', images: [] })
-    console.log(1, "postMain: ", post)
+    // console.log(1, "postMain: ", post)
 
     // создаем объект с данными из форм для отправки на бек
     // const newPostData = ({ ...post, images: ((post.images).map(item => `{_id:${item._id}}`)) })
     const newPostData = ({ ...post, images: ((post.images).map(item => ({ _id: item._id }))) })
-    console.log(33, newPostData)
+    // console.log(33, newPostData)
 
     // const imgForCreatePost = (post.images).map(item => item._id)
     // console.log('images arr: ', imgForCreatePost)
@@ -53,13 +53,16 @@ export const CreatePost = () => {
     const history = useHistory()
 
     const newPost = useSelector(state => state.promise?.CreatePost?.payload?._id)
-    console.log('newPost', newPost)
+    // console.log('newPost', newPost)
 
+
+
+    // какого хуя не работает await
     const onSend = async (data) => {
         await store.dispatch(actionFullCreatePost(data));
 
         if (newPost) {
-            console.log('щас пойдем на переход', newPost)
+            // console.log('щас пойдем на переход', newPost)
             history.push(`/post/${newPost}`);
         }
     }
@@ -69,7 +72,7 @@ export const CreatePost = () => {
 
 
     return (
-        <Container maxWidth="80%">
+        <Container maxWidth="90%">
             <Container>
                 <StyledDropzone onFiles={files => dispatch(actionFilesUpload(files))} onPost={post} />
             </Container>

+ 17 - 4
js/Project/project/src/components/feed/aboutMe.js

@@ -1,17 +1,27 @@
 import { Avatar, Typography, Box, Stack, CardHeader } from '@mui/material'
+import { useSelector } from 'react-redux'
 
 import { url } from "../../App"
 
 
 function AboutMe({ me }) {
 
+    const myPostsCount = useSelector(state => state?.promise?.MyPosts?.payload)
+
+    // урл аватара
     const urlAvatar = url.slice(0, -7) + me?.avatar?.url
 
     return (
-        <Box>
+        <Box sx={{
+            maxWidth: 400
+        }}>
             <CardHeader
                 avatar={
-                    <Avatar alt={me?.login} src={urlAvatar} sx={{ width: 50, height: 50 }} />
+                    <Avatar
+                        sx={{ width: 50, height: 50 }}
+                        alt={me?.login}
+                        src={urlAvatar}
+                    />
                 }
 
                 subheader={
@@ -20,9 +30,12 @@ function AboutMe({ me }) {
                     </Typography>
                 }
             />
-            <Stack direction="row" spacing={1} padding={2}>
+            <Stack
+                direction="row"
+                spacing={1}
+                padding={2}>
                 <Typography>
-                    NaN публикаций
+                    {myPostsCount?.length || '0'} публикаций
                 </Typography>
                 <Typography>
                     {me?.followers?.length || '0'} подписчиков

+ 58 - 32
js/Project/project/src/components/feed/card_feed.js

@@ -1,5 +1,5 @@
-import { Card, CardHeader, CardMedia, CardContent, CardActions, Avatar, IconButton, Typography, Box } from '@mui/material'
-import { MoreVert, FavoriteBorderRounded, Send, ChatBubbleOutline, TurnedInNot } from '@mui/icons-material/'
+import { Card, CardHeader, CardMedia, CardContent, CardActions, Avatar, IconButton, Typography, Box, Divider } from '@mui/material'
+import { FavoriteBorderRounded, Send, ChatBubbleOutline, TurnedInNot } from '@mui/icons-material/'
 import Grid from '@mui/material/Unstable_Grid2';
 
 import { Link } from 'react-router-dom';
@@ -8,47 +8,49 @@ import { MyCarousel } from './carousel_feed';
 
 import { url } from '../../App';
 
-export function RecipeReviewCard({ postData }) {
-    // console.log('test ', postData)
+export function CardFeed({ postData }) {
 
     // формируем дату поста
-    const dateofPost = new Date(+postData.createdAt)
+    const dateOfPost = new Date(+postData.createdAt)
     const months = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря']
-    const dateofPostParse = `${dateofPost.getDate() < 10 ? '0' + dateofPost.getDate() : dateofPost.getDate()} ${months[dateofPost.getMonth()]} ${dateofPost.getFullYear()}  ${dateofPost.getHours()}:${dateofPost.getMinutes() < 10 ? '0' + dateofPost.getMinutes() : dateofPost.getMinutes()}`
-
-    // рисуем картинки на постах
-    let imgOfPost
-    if ((postData.images != null) && ((postData.images).length != 0)) {
-        imgOfPost = url + postData.images[0].url
-    }
+    const dateOfPostParse = `${dateOfPost.getDate() < 10 ? '0' + dateOfPost.getDate() : dateOfPost.getDate()} ${months[dateOfPost.getMonth()]} ${dateOfPost.getFullYear()}  ${dateOfPost.getHours()}:${dateOfPost.getMinutes() < 10 ? '0' + dateOfPost.getMinutes() : dateOfPost.getMinutes()}`
 
     return (
-        <Card sx={{ maxWidth: 500 }}>
+        <Card sx={{
+            maxWidth: 600
+        }}>
             <CardHeader
                 avatar={
                     <Avatar
-                        alt=""
-                        src="/images/avatar.jpeg"
                         sx={{ width: 50, height: 50 }}
-                        style={{ margin: '5px', border: '3px solid black', borderRadius: '50%', flexShrink: '0', overflow: 'hidden' }}
+                        alt={postData?.owner?.login}
+                        src={url.slice(0, -7) + postData?.owner?.avatar?.url}
                     />
                 }
-                action={   // троеточие в хедере
-                    <IconButton aria-label="settings">
-                        <MoreVert />
-                    </IconButton>
-                }
+
+                // троеточие в хедере - нужно подумать, стоит ли его добавлять и что я ним буду делать
+                // action={
+                //     <IconButton aria-label="settings">
+                //         <MoreVert />
+                //     </IconButton>
+                // }
+
                 title={
-                    <Link to={`/user/${postData.owner._id}`}>
-                        {postData.owner.login}
+                    <Link
+                        to={`/user/${postData?.owner?._id}`}
+                    >
+                        {postData?.owner?.login}
                     </Link>
                 }
 
-                subheader={dateofPostParse} // дата создания поста
+                // дата создания поста
+                subheader={dateOfPostParse}
             />
+
             <CardMedia>
-                <MyCarousel />
+                <MyCarousel images={postData?.images} />
             </CardMedia>
+
             <CardActions disableSpacing>
                 <Box sx={{ flexGrow: 1 }}>
                     <Grid container spacing={2}>
@@ -60,24 +62,40 @@ export function RecipeReviewCard({ postData }) {
                             flexDirection={{ xs: 'column', sm: 'row' }}
                             sx={{ fontSize: '12px' }}
                         >
-                            <Grid container columnSpacing={1} sx={{ order: { xs: 2, sm: 1 } }}>
+                            <Grid
+                                container
+                                columnSpacing={1}
+                                sx={{
+                                    order: { xs: 2, sm: 1 }
+                                }}
+                            >
+                                {/* Это лайк */}
                                 <Grid>
                                     <IconButton aria-label="add to favorites">
                                         <FavoriteBorderRounded />
                                     </IconButton>
                                 </Grid>
+
+                                {/* Это отправка сообщения - нужно или нет? */}
                                 <Grid>
                                     <IconButton>
                                         <ChatBubbleOutline />
                                     </IconButton>
                                 </Grid>
+
+                                {/* Это кнопка пошарить - может сделать ссылку на пост и при нажатии копировать ее в буфер */}
                                 <Grid>
                                     <IconButton aria-label="share">
                                         <Send />
                                     </IconButton>
                                 </Grid>
                             </Grid>
-                            <Grid sx={{ order: { xs: 1, sm: 2 } }}>
+
+                            <Grid
+                                sx={{
+                                    order: { xs: 1, sm: 2 }
+                                }}>
+                                {/* Это иконка добавления в избранное - нужно ли */}
                                 <IconButton>
                                     <TurnedInNot />
                                 </IconButton>
@@ -86,21 +104,29 @@ export function RecipeReviewCard({ postData }) {
                     </Grid>
                 </Box>
             </CardActions>
+
             <CardActions>
-                Нравится: {postData.likesCount ? postData.likesCount : '0'}
-                {/* Нравится: {postData.likesCount || '0'} // сработает или нет - проверить */}
+                Нравится: {postData?.likesCount || '0'}
             </CardActions>
+
             <CardContent>
                 <Typography variant="subtitle2" color="text.secondary">
-                    {postData.title}
+                    {postData?.title}
                 </Typography>
                 <Typography variant="body2" color="text.secondary">
-                    {postData.text}
+                    {postData?.text}
                 </Typography>
             </CardContent>
+
             <CardActions>
-                <Link to={`/post/${postData._id}`}>Посмотреть все комментарии (44)</Link>
+                <Link
+                    to={`/post/${postData._id}`}
+                >
+                    Посмотреть все комментарии ({postData?.comments?.length || '0'})
+                </Link>
             </CardActions>
+
+            <Divider />
         </Card >
     )
 }

+ 36 - 36
js/Project/project/src/components/feed/carousel_feed.js

@@ -1,48 +1,48 @@
 import Carousel from 'react-material-ui-carousel'
 
-// айтемы для каждой картинки
-function Item(props) {
+import { Box } from '@mui/material'
+
+import { url } from '../../App'
+
+function Item(imgUrl) {
     return (
-        <div style={{
-            width: '100%',
-            height: 625,
-            backgroundColor: 'black',
-            display: 'flex',
-            alignItems: 'center'
-        }}>
-            <img alt='alt' src={props.item.url} style={{
-                width: '100%'
-            }} />
-        </div>
+        <Box
+            style={{
+                width: '100%',
+                height: 625,
+                backgroundColor: 'black',
+                display: 'flex',
+                alignItems: 'center'
+            }}>
+
+            <img
+                alt='image'
+                src={imgUrl?.item && (url.slice(0, -7) + imgUrl?.item)}
+                style={{
+                    width: '100%'
+                }}
+            />
+        </Box>
     )
 }
 
-// сама карусель - ее нужно вынеси в отдельный контенйре
-export function MyCarousel(props) {
-
-    let items = [
-        {
-            url: "/images/image.jpeg"
-        },
-        {
-            url: "/images/image2.jpeg"
-        },
-        {
-            url: "/images/image4.jpeg"
-        }
-    ]
+export function MyCarousel({ images }) {
 
     return (
-        <Carousel autoPlay={false} cycleNavigation={false} animation={"slide"} indicatorContainerProps={{
-            style: {
-                marginTop: '-50px',
-                zIndex: 999,
-                position: 'inherit'
-            }
-
-        }} >
+        <Carousel
+            autoPlay={false}
+            cycleNavigation={false}
+            animation={'slide'}
+            indicatorContainerProps={{
+                style: {
+                    marginTop: '-50px',
+                    zIndex: 999,
+                    position: 'inherit'
+                }
+            }}
+        >
             {
-                items.map((item, i) => <Item key={i} item={item} />)
+                images && images.map((item, i) => <Item key={i} item={item?.url} />)
             }
         </Carousel >
     )

+ 18 - 59
js/Project/project/src/components/feed/index.js

@@ -1,66 +1,48 @@
 import * as React from 'react';
-import { connect } from 'react-redux';
+import { connect, useDispatch } from 'react-redux';
 import { store } from '../redux';
-// import { url } from '../../App';
 
-import { Box, Stack, Paper } from '@mui/material';
+import { Box, Paper } from '@mui/material';
 import { styled } from '@mui/material/styles';
 import { Container } from '@mui/system';
 import Grid2 from '@mui/material/Unstable_Grid2/Grid2';
 
-import { actionfindPosts, actionFindUserOne, actionFeedFindOne, actionFeedFind } from '../redux/action';
-import { RecipeReviewCard as Card } from './card_feed';
+import { actionAboutMe } from '../redux/action';
+import { CardFeed } from './card_feed';
 import AboutMe from './aboutMe';
+import { useEffect } from 'react';
 
 // сам item для поста
 const Item = styled(Paper)(() => ({
     padding: '0 10px',
+    marginBottom: 10,
     borderRadius: 0,
     boxShadow: 'none',
 }))
 
-// забираем свой id из localStorage
-// const myId = ((JSON.parse(atob(localStorage.authToken.split('.')[1])))?.sub?.id)
-let myId
-if (localStorage.authToken !== undefined) {
-    myId = (JSON.parse(atob(localStorage?.authToken?.split('.')[1]))).sub.id
-}
-
-// запрос на ленту постов моих подписчиков
-const arr = ["5d6fccfc5fce6722147978f2", "5d66e01dc6a7071408ac1e1c"]
-const sort = -1
-
-
-
-
+// function Feed({ feed, me = {} }) { // это первый вариант без useEffetc, а просто с store.dispatch
+function Feed({ feed, me = {}, loadFeed }) {
+    // console.log('feed: ', feed)
 
-
-
-function Feed({ feed, me = {} }) {
-    console.log('feed: ', feed)
-    console.log('testFeed: ', store.getState().promise?.Feed?.status === 'FULFILLED')
+    useEffect(() => { loadFeed() }, []) // это второй вариант через useEffect
 
     return (
         <Container sx={{
-            width: '80%',
+            width: '90%',
             mt: 1
         }}>
             <Box sx={{ flexGrow: 1 }}>
                 <Grid2 container spacing={2}>
                     <Grid2 xs={7}>
-                        <Item sx={{
-                            width: 500
-                        }}>
-                            <Stack spacing={2}>
-                                {feed && feed.map(post => <Item key={post._id}><Card postData={post} /></Item>)}
-                            </Stack>
+                        <Item>
+                            {feed && feed.map(post => <Item key={post._id}><CardFeed postData={post} /></Item>)}
                         </Item>
                     </Grid2>
                     <Grid2 xs={5}>
                         <Item sx={{
                             position: 'fixed'
                         }}>
-                            <Me me={me} />
+                            <CMe me={me} />
                         </Item>
                     </Grid2>
                 </Grid2>
@@ -69,35 +51,12 @@ function Feed({ feed, me = {} }) {
     )
 }
 
-// ===========================
-// test
-store.dispatch(actionFeedFind(myId, sort))
-
-const Me = connect(state => ({ me: state?.promise?.UserFindOne?.payload }))(AboutMe)
-export const ReduxFeed = connect(state => ({ feed: state.promise?.Feed?.payload }))(Feed)
-
-
-
-
-
-
-
-
-// ==============================
-// загружаем список подписчиков
-// store.dispatch(actionFeedFindOne(arr, sort))
-// export const ReduxFeed = connect(state => ({ feed: state?.promise?.Feed?.payload }))(Feed)
-
-// загрузка данных залогиненого пользователя справа(скорее всего нужно будет переписать все через connect)
-// store.dispatch(actionFindUserOne(myId))
-// const Me = connect(state => ({ me: state?.promise?.UserFindOne?.payload }))(AboutMe)
-// ===============================
-
-
-
-
 
+// store.dispatch(actionAboutMe())
 
+const CMe = connect(state => ({ me: state?.promise?.AboutMe?.payload }))(AboutMe)
+// export const CFeed = connect(state => ({ feed: state.promise?.MyFeed?.payload }))(Feed)
+export const CFeed = connect(state => ({ feed: state.promise?.MyFeed?.payload }), { loadFeed: actionAboutMe })(Feed) // и это тоже удалить
 
 
 

+ 0 - 107
js/Project/project/src/components/feed/test.js

@@ -1,107 +0,0 @@
-// тут предыдущая версия index.js
-
-import * as React from 'react';
-import { connect } from 'react-redux';
-import { store } from '../redux';
-// import { url } from '../../App';
-
-import { Box, Stack, Paper } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import { Container } from '@mui/system';
-import Grid2 from '@mui/material/Unstable_Grid2/Grid2';
-
-import { actionfindPosts, actionFindUserOne, actionFeedFindOne, actionFeedFind } from '../redux/action';
-import { RecipeReviewCard as Card } from './card_feed';
-import AboutMe from './aboutMe';
-
-// сам item для поста
-const Item = styled(Paper)(() => ({
-    padding: '0 10px',
-    borderRadius: 0,
-    boxShadow: 'none',
-}))
-
-// забираем свой id из localStorage
-const myId = ((JSON.parse(atob(localStorage.authToken.split('.')[1])))?.sub?.id)
-
-function Feed({ feed = [], me = {} }) {
-
-    console.log('feed: ', feed)
-
-    return (
-        <Container sx={{
-            width: '80%',
-            mt: 1
-        }}>
-            <Box sx={{ flexGrow: 1 }}>
-                <Grid2 container spacing={2}>
-                    <Grid2 xs={7}>
-                        <Item sx={{
-                            width: 500
-                        }}>
-                            <Stack spacing={2}>
-                                {feed.map(post => <Item key={post._id}><Card postData={post} /></Item>)}
-                            </Stack>
-                        </Item>
-                    </Grid2>
-                    <Grid2 xs={5}>
-                        <Item sx={{
-                            position: 'fixed'
-                        }}>
-                            <Me me={me} />
-                        </Item>
-                    </Grid2>
-                </Grid2>
-            </Box>
-        </Container>
-    )
-}
-
-
-
-// запрос на ленту постов моих подписчиков
-
-
-const arr = ["5d6fccfc5fce6722147978f2", "5d66e01dc6a7071408ac1e1c"]
-const sort = -1
-
-
-
-
-
-// ==============================
-// загружаем список подписчиков
-// store.dispatch(actionFeedFindOne(arr, sort))
-// export const ReduxFeed = connect(state => ({ feed: state?.promise?.Feed?.payload }))(Feed)
-
-// загрузка данных залогиненого пользователя справа(скорее всего нужно будет переписать все через connect)
-// store.dispatch(actionFindUserOne(myId))
-// const Me = connect(state => ({ me: state?.promise?.UserFindOne?.payload }))(AboutMe)
-// ===============================
-
-
-
-
-
-
-// ===========================
-// test
-store.dispatch(actionFeedFind(myId, sort))
-export const ReduxFeed = connect(state => ({ feed: state?.promise }))(Feed)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// загрузка ленты всех постов из базы
-// store.dispatch(actionfindPosts())
-// export const ReduxFeed = connect(state => ({ feed: state?.promise?.PostsFind?.payload }))(Feed)

+ 1 - 1
js/Project/project/src/components/post/card_post.js

@@ -9,7 +9,7 @@ import Grid from '@mui/material/Unstable_Grid2';
 
 
 export function CardPost({ postData }) {
-    console.log('test: ', postData)
+    // console.log('test: ', postData)
 
     // дата поста
     const dateofPost = new Date(+postData.createdAt)

+ 1 - 1
js/Project/project/src/components/post/index.js

@@ -21,7 +21,7 @@ const Item = styled(Paper)(() => ({
 
 function Comments({ post = {}, loadPost }) {
     // console.log('start')
-    console.log('post: ', post)
+    // console.log('post: ', post)
 
     const { postId } = useParams()
     useEffect(() => { loadPost(postId) }, [postId])

+ 70 - 65
js/Project/project/src/components/redux/action.js

@@ -1,4 +1,5 @@
 import { store } from "."
+import { useGetState } from 'react-redux';
 
 const url = 'http://hipstagram.node.ed.asmer.org.ua/graphql'
 
@@ -53,6 +54,8 @@ export const actionPromise = (nameOfPromise, promise) =>
   }
 
 // =============================================================
+// Запросы на бек
+
 // запрос на поиск конкретного поста
 export const actionFindPostOne = _id => actionPromise('PostFindOne', gql(`query OnePostFind ($postOne: String){
   PostFindOne (query: $postOne) {
@@ -84,8 +87,23 @@ export const actionFindPostOne = _id => actionPromise('PostFindOne', gql(`query
   postOne: JSON.stringify([{ _id }])
 }))
 
-
-// запрос на поиск конкретного юзера
+// запрос на поиск конкретного юзера(folowwing - это те, на кого я подписан. followers - те, кто на меня подписан)
+// export const actionFindUserOne = (_id, promiseName = 'UserFindOne') => actionPromise(promiseName, gql(`query OneUserFind ($userOne: String) {
+//     UserFindOne(query: $userOne) {
+//       _id createdAt login nick
+//       avatar {
+//         _id url
+//       }
+//        followers {
+//         _id login nick avatar {_id url}
+//       }
+//       following {
+//          _id login nick avatar {_id url}
+//       }
+//     }
+//   }`, {
+//   userOne: JSON.stringify([{ _id }])
+// }))
 export const actionFindUserOne = (_id, promiseName = 'UserFindOne') => actionPromise(promiseName, gql(`query OneUserFind ($userOne: String) {
     UserFindOne(query: $userOne) {
       _id createdAt login nick 
@@ -96,15 +114,14 @@ export const actionFindUserOne = (_id, promiseName = 'UserFindOne') => actionPro
         _id login nick avatar {_id url}
       }
       following {
-         _id login nick avatar {_id url}
+         _id
       }
     }
   }`, {
   userOne: JSON.stringify([{ _id }])
 }))
 
-
-// запрос на поиск всех постов
+// запрос на поиск всех постов на беке (нигде не должен использоваться)
 export const actionfindPosts = () => actionPromise('PostsFind', gql(`query AllPostsFind ($allPosts: String){
   PostFind(query: $allPosts){
     _id createdAt title text likesCount
@@ -120,14 +137,27 @@ export const actionfindPosts = () => actionPromise('PostsFind', gql(`query AllPo
   allPosts: JSON.stringify([{}])
 }))
 
+// Запрос на поиск ленты постов для юзера
+export const actionFeedFindOne = (arr, sortOne, promiseName = 'Feed') => actionPromise(promiseName, gql(`query FeedFindOne ($feedOne: String){
+	PostFind(query: $feedOne){
+            _id createdAt title text likesCount owner{
+              _id login avatar{
+                url
+              }
+            }
+            comments {
+              _id
+            }
+    images{
+      url
+    }
+    	}
+    }`, {
+  feedOne: JSON.stringify([{ ___owner: { $in: arr } }, { sort: [{ _id: sortOne }] }])
+}))
 
-// =================
-// акшон для логинизации
-const actionAuthLogin = token => ({ type: 'AUTH_LOGIN', token })
-// акшон для раззлогинивания
-const actionAuthLogout = () => ({ type: 'AUTH_LOGOUT' })
 
-// Запрос на логин
+// Запрос на логинизацию пользователя
 export const actionLogin = (login, password) => actionPromise('Login', gql(`query Login($login: String!, $password: String!) {
 login(login: $login, password: $password)
 }`, {
@@ -135,7 +165,17 @@ login(login: $login, password: $password)
   password
 }))
 
-// Запрос на логин и последующую логинизацию в authReduser (thunk)
+
+// акшон для логинизации в authReduser
+const actionAuthLogin = token => ({ type: 'AUTH_LOGIN', token })
+// акшон для раззлогинивания
+const actionAuthLogout = () => ({ type: 'AUTH_LOGOUT' })
+
+
+// =========================================
+// Thunk-и
+
+// Thunk логин и последующую логинизацию в authReduser
 export const actionFullLogin = (login, password) =>
   async dispatch => {
     const token = await dispatch(actionLogin(login, password))
@@ -154,70 +194,35 @@ export const actionFullLogin = (login, password) =>
     }
   }
 
-// ========================
-
-
-
-
-
-
-
-// Запрос на поиск ленты постов
-export const actionFeedFindOne = (arr, sortOne) => actionPromise('Feed', gql(`query FeedFindOne ($feedOne: String){
-	PostFind(query: $feedOne){
-            _id createdAt title text likesCount owner{
-              _id login avatar{
-                url
-              }
-            }
-            comments {
-              _id
-            }
-    images{
-      url
-    }
-    	}
-    }`, {
-  feedOne: JSON.stringify([{ ___owner: { $in: arr } }, { sort: [{ _id: sortOne }] }])
-}))
-
-
-
-
-
 // =============================
-// Запрос для создания страницы юзера
-export const actionFullUserFindOne = _id =>
+// Thunk для страницы юзера (диспатчим запрос на юзера и на ленту его постов)
+export const actionFullUserFindOne = (id) =>
   async dispatch => {
-    await dispatch(actionFindUserOne(_id))
-    dispatch(actionFeedFindOne([_id], -1))
+    const test = await dispatch(actionFindUserOne(id, 'UserFind'))
+    console.log('test: ', test)
+    dispatch(actionFeedFindOne([id], -1, 'UserFeed'))
   }
 // ==============================
 
 
 
-// запрос для главной страницы ленты
-export const actionFeedFind = (id, sort) =>
+// запрос AboutMe для главной страницы (лента моих постов и мои данные)
+export const actionAboutMe = () =>
   async (dispatch, getState) => {
-    const userData = await dispatch(actionFindUserOne(id))
-    console.log('userData: ', userData)
+    const myId = getState()?.auth?.payload?.sub?.id
 
-    // собираем список подписчиков
-    let followingList = []
+    // диспатчим запрос AboutMe (о себе)
+    const userData = await dispatch(actionFindUserOne(myId, 'AboutMe'))
 
-    for (const item of userData.following)
-      for (const [key, value] of Object.entries(item)) {
-        if (key === '_id') {
-          followingList.push(value)
-        }
-      }
-    console.log('followingList: ', followingList)
+    // парсим все мои посты
+    dispatch(actionFeedFindOne([myId], -1, 'MyPosts'))
+
+    // получаем id всех подписок
+    const followingList = (userData?.following).map(user => user?._id)
 
-    // console.log(666, store.getState().promise?.Feed?.status !== 'FULFILLED')
+    // запрашиваем формирование ленты моих постов (первый параметр - список id, второй - это сортировка постов от новых)
+    dispatch(actionFeedFindOne(followingList, -1, 'MyFeed'))
 
-    // if (store.getState().promise?.Feed?.status !== 'FULFILLED') {
-    dispatch(actionFeedFindOne(followingList, sort))
-    // }
   }
 
 
@@ -264,7 +269,7 @@ export const actionCreatePost = (params) => actionPromise('CreatePost', gql(
 export const actionFullCreatePost = (params) =>
   async dispatch => {
     const newPost = await dispatch(actionCreatePost(params))
-    console.log('Тут нужный резульата: ', newPost)
+    // console.log('Тут нужный резульата: ', newPost)
 
     if (newPost) {
       dispatch(actionFindPostOne(newPost._id))

+ 1 - 1
js/Project/project/src/components/structure/header.js

@@ -56,7 +56,7 @@ function ResponsiveAppBar() {
                         variant="h6"
                         noWrap
                         component="a"
-                        href="/feed"
+                        href="/"
                         sx={{
                             display: { xs: 'none', md: 'flex' },
                             fontFamily: 'monospace',

+ 2 - 2
js/Project/project/src/components/user/gallery2.js

@@ -11,14 +11,14 @@ import { connect } from 'react-redux';
 import { actionFullUserFindOne } from '../redux/action';
 
 function StandardImageList({ userGallery = [], loadUserGallery }) {
-    console.log('userGallery: ', userGallery)
+    // console.log('userGallery: ', userGallery)
 
     const { userId } = useParams()
     useEffect(() => { loadUserGallery(userId) }, [userId])
 
 
     const clicker = (name) => {
-        console.log('click: ', name)
+        // console.log('click: ', name)
     }
 
 

+ 2 - 2
js/Project/project/src/components/user/index.js

@@ -18,11 +18,11 @@ function User({ user = {}, loadUser }) {
 
 
     // собираем все _id подписчиков в один массив - !!!!!!!!!!!!!!!!!!!!!! РАБОТАЕТ НЕКОРРЕКТНО
-    const promiceStatus = store.getState().promise.UserFindOne.status
+    const promiceStatus = store.getState()?.promise?.UserFindOne?.status
     const followingsArr = []
 
     if (promiceStatus === 'FULFILLED' && user.following) {
-        console.log(999, user.following)
+        // console.log(999, user.following)
         for (let id of (user.following)) {
             for (let [key, value] of Object.entries(id)) {
                 if (key === '_id') {

+ 1 - 1
js/Project/project/src/components/user/userData.js

@@ -28,7 +28,7 @@ function UptadeProfile() {
 
 // блок пользовательских данных
 export default function BasicCard({ userData }) {
-    console.log(6775, userData)
+    // console.log(6775, userData)
 
     const urlAvatar = url.slice(0, -7) + userData?.avatar?.url