Skip to content

const found = getState().usersState.users.some(el => el.uid === uid) #54

Open
@vinodseni

Description

@vinodseni

import { doc, getDoc, onSnapshot,collection ,getDocs, orderBy} from "@firebase/firestore"
import { USERS_DATA_POSTS_STATE_CHANGE, USERS_DATA_STATE_CHANGE, USER_FOLLOWING_STATE_CHANGE, USER_POSTS_STATE_CHANGE, USER_STATE_CHANGE } from "../constants"
import { db,auth } from "../../config/firebase"

export function fetchUser(){

return((dispatch)=>{

    getDoc(doc(db, "users",auth.currentUser.uid))
  
   .then((snapshot)=>{

    if(snapshot.exists){

dispatch({type:USER_STATE_CHANGE,currentUser:snapshot.data()})
}
else{
console.log('donst not exit data!!!')
}
})
})

}

export function fetchUserPosts(){

return((dispatch)=>{

    getDocs(collection(db, "Posts", auth.currentUser.uid, "userPost"))
   .then((snapshot)=>{
   const posts = snapshot.docs.map(doc=>{
    const data = doc.data();
    const id = doc.id;
    return {id ,...data}
   })
//    console.log('posts',posts) 

dispatch({type:USER_POSTS_STATE_CHANGE,posts})

   })
})

}

export function fetchUserFollwowing(){

return((dispatch)=>{

    onSnapshot(collection(db, "following", auth.currentUser.uid, "userFollowing"),

   (snapshot)=>{

   const following = snapshot.docs.map(doc=>{
       const id = doc.id;
       return id 
    })
    console.log(following)

dispatch({type:USER_FOLLOWING_STATE_CHANGE,following});
for (let i = 0; i < following.length; i++) {

dispatch(fetchUsersData(following[i]));

}

   })
})

}

export function fetchUsersData (uid){

return ((dispatch,getState)=>{
console.log('uid',uid)
const found = getState().usersState?.users.some(el => el.uid === uid);

if(!found){

getDoc(doc(db, "users",uid))
  
.then((snapshot)=>{
    
    if(snapshot.exists){
 
    let  user = snapshot.data();
    user.uid = snapshot.id;

dispatch({type:USERS_DATA_STATE_CHANGE,user});
dispatch(fetchUsersFollowingPosts(user.id));
}
else{
console.log('donst not exit data!!!')
}
})
}

})

}

export function fetchUsersFollowingPosts(uid){

return((dispatch,getState)=>{

    getDocs(collection(db, "Posts",uid, "userPost"))
    // .orderBy("timestamp","asc")
   .then((snapshot)=>{

    const  uid = snapshot.query.EP.path.segments[1];

console.log('segments',uid)
const user = getState().usersState.users.find(el => el.uid === uid);

   const posts = snapshot.docs.map(doc=>{
    const data = doc.data();
    const id = doc.id;
    return {id ,...data,user}
   })
   console.log('posts',posts) 

dispatch({type:USERS_DATA_POSTS_STATE_CHANGE,posts,uid})
console.log('posts',getState())

   })

Screenshot (17)

})

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions