From ba2c610c6ff3738888649fe48bf3f15a0a7b51be Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Sat, 18 Nov 2023 23:38:39 +0100 Subject: [PATCH] Added new functions to the GroupContext.jsx --- client/src/common/contexts/GroupContext.jsx | 37 +++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/client/src/common/contexts/GroupContext.jsx b/client/src/common/contexts/GroupContext.jsx index 122c8d0..552a8a4 100644 --- a/client/src/common/contexts/GroupContext.jsx +++ b/client/src/common/contexts/GroupContext.jsx @@ -5,17 +5,48 @@ export const GroupContext = createContext({}); export const GroupProvider = ({children}) => { + const [allGroups, setAllGroups] = useState([]); const [groups, setGroups] = useState([]); + const [round, setRound] = useState([]); const handleJoin = (group) => { - console.log(group) - setGroups(groups => [...groups, group]); + setGroups(groups => [...groups, {...group, capital: 25000}]); + } + + const getGroupById = (id) => { + return groups.find(group => group.id === id); + } + + const handleRound = (round) => { + setRound(current => [...current, round].sort((a, b) => a.price - b.price)); } const handleLeave = (group) => { + if (group.capital !== 25000) { + setGroups(groups_ => { + const current = groups_.find(g => g.id === group.id); + if (current) setAllGroups(all => [...all, current]); + return groups_; + }); + } setGroups(groups => groups.filter(g => g.id !== group.id)); } + const updateCapital = (groupId, newCapital) => { + socket.emit("UPDATE_CAPITAL", {id: groupId, capital: newCapital}); + + setGroups(groups => groups.map(g => { + if (g.id === groupId) { + return {...g, capital: newCapital}; + } + return g; + })); + } + + const endRound = () => { + setRound([]); + } + useEffect(() => { socket.on("JOINED", handleJoin); socket.on("LEFT", handleLeave); @@ -27,7 +58,7 @@ export const GroupProvider = ({children}) => { }, []); return ( - + {children} )