Skip to content

Commit

Permalink
#25 Add 1 to follower/following if follow btn pressed
Browse files Browse the repository at this point in the history
  • Loading branch information
SandraBergstrom committed Jun 29, 2023
1 parent 162276e commit 7a60f4d
Showing 1 changed file with 51 additions and 8 deletions.
59 changes: 51 additions & 8 deletions src/contexts/TravelerDataContext.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ export const TravelerDataContext = createContext();
export const SetTravelerDataContext = createContext();

export const useTravelerData = () => useContext(TravelerDataContext);
export const useSetTravelerData = () =>
useContext(SetTravelerDataContext);
export const useSetTravelerData = () => useContext(SetTravelerDataContext);

export const TravelerDataProvider = ({ children }) => {
const [travelerData, setTravelerData] = useState({
Expand All @@ -19,13 +18,55 @@ export const TravelerDataProvider = ({ children }) => {

const handleFollow = async (clickedTraveler) => {
try {
const {data} = await axiosRes.post('/followers/', {
followed: clickedTraveler.id
})
const { data } = await axiosRes.post("/followers/", {
followed: clickedTraveler.id,
});

setTravelerData((prevState) => ({
...prevState,
pageTraveler: {
results: prevState.pageTraveler.results.map((traveler) => {
return traveler.id === clickedTraveler.id
? // If this is the traveler I clicked on, update its followers
// count and set its following id
{
...traveler,
followers_count: traveler.followers_count + 1,
following_id: data.id,
}
: traveler.is_owner
? // If this is logged in user, update it's following count
{ ...traveler, following_count: traveler.following_count + 1 }
: // if this is not the clicked on traveler or the logged
// in users own, just return it unchanged
traveler;
}),
},

popularTravelers: {
...prevState.popularTravelers,
results: prevState.popularTravelers.results.map((traveler) => {
return traveler.id === clickedTraveler.id
? // If this is the traveler I clicked on, update its followers
// count and set its following id
{
...traveler,
followers_count: traveler.followers_count + 1,
following_id: data.id,
}
: traveler.is_owner
? // If this is logged in user, update it's following count
{ ...traveler, following_count: traveler.following_count + 1 }
: // if this is not the clicked on traveler or the logged
// in users own, just return it unchanged
traveler;
}),
},
}));
} catch (err) {
console.log(err)
console.log(err);
}
}
};

useEffect(() => {
const handleMount = async () => {
Expand All @@ -47,7 +88,9 @@ export const TravelerDataProvider = ({ children }) => {

return (
<TravelerDataContext.Provider value={travelerData}>
<SetTravelerDataContext.Provider value={{setTravelerData, handleFollow}}>
<SetTravelerDataContext.Provider
value={{ setTravelerData, handleFollow }}
>
{children}
</SetTravelerDataContext.Provider>
</TravelerDataContext.Provider>
Expand Down

0 comments on commit 7a60f4d

Please sign in to comment.