Skip to content

Commit

Permalink
Merge pull request #1 from irfanbozkurt/main
Browse files Browse the repository at this point in the history
Run it, test it, check it, review it.
  • Loading branch information
luloxi committed Jul 3, 2023
2 parents a9a8bf1 + ae3afdf commit 71ab3ae
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 48 deletions.
86 changes: 45 additions & 41 deletions packages/nextjs/pages/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -182,31 +182,29 @@ const Home: NextPage = () => {
},
});

const [, rerender] = useState<boolean>(false);

useScaffoldEventSubscriber({
contractName: "Sportsbook",
eventName: "UpdateRefereeRequest",
listener: (challengeId, proposingTeam, newReferee) => {
setUpdateRefereeRequestHistory(prevHistory => {
const newChallengeId = parseInt(challengeId.toString());

const updatedHistory = { ...prevHistory };

if (!updatedHistory[newChallengeId]) {
updatedHistory[newChallengeId] = {
challengeId: newChallengeId,
properties: [],
};
}

const newChallenge = {
proposingTeam,
newReferee,
if (prevHistory[newChallengeId]) return prevHistory;
prevHistory[newChallengeId] = {
challengeId: newChallengeId,
properties: [
{
proposingTeam,
newReferee,
},
],
};

updatedHistory[newChallengeId].properties.push(newChallenge);

return updatedHistory;
return prevHistory;
});

rerender(p => !p);
},
});

Expand All @@ -216,25 +214,21 @@ const Home: NextPage = () => {
listener: (challengeId, newReferee, updateAccepted) => {
setUpdateRefereeResponseHistory(prevHistory => {
const newChallengeId = parseInt(challengeId.toString());

const updatedHistory = { ...prevHistory };

if (!updatedHistory[newChallengeId]) {
updatedHistory[newChallengeId] = {
challengeId: newChallengeId,
properties: [],
};
}

const newChallenge = {
newReferee,
updateAccepted,
if (prevHistory[newChallengeId]) return prevHistory;
prevHistory[newChallengeId] = {
challengeId: newChallengeId,
properties: [
{
newReferee,
updateAccepted,
},
],
};

updatedHistory[newChallengeId].properties.push(newChallenge);

return updatedHistory;
return prevHistory;
});

rerender(p => !p);
},
});

Expand Down Expand Up @@ -336,29 +330,39 @@ const Home: NextPage = () => {
const challengeResult = challengeResultHistory.find(result => result.challengeId === challenge.challengeId);

const updateRefereeRequests = Array.isArray(updateRefereeRequestHistory)
? updateRefereeRequestHistory.filter(request => request && request.challengeId === challenge.challengeId)
? updateRefereeRequestHistory.filter(
request => request && request.challengeId.toString() === challenge.challengeId.toString(),
)
: [];
const updateRefereeResponses = Array.isArray(updateRefereeResponseHistory)
? updateRefereeResponseHistory.filter(response => response && response.challengeId === challenge.challengeId)
? updateRefereeResponseHistory.filter(
response => response && response.challengeId.toString() === challenge.challengeId.toString(),
)
: [];

const newestRequest = updateRefereeRequests
.filter(request => request.challengeId === challenge.challengeId)
.filter(request => request.challengeId.toString() === challenge.challengeId.toString())
.map(response => response.properties.find(event => event.newReferee))
.pop();

// console.log("Newest request", updateRefereeRequests);
console.log("Newest request", newestRequest);

const lastAcceptedResponse = updateRefereeResponses
.filter(response => response.challengeId === challenge.challengeId)
.filter(response => response.challengeId.toString() === challenge.challengeId.toString())
.map(response => response.properties.find(event => event.updateAccepted))
.pop();

console.log("lastAcceptedResponse", lastAcceptedResponse);

const eventToShow =
updateRefereeRequests.filter(request => request.challengeId === challenge.challengeId).length > 0 &&
updateRefereeResponses.filter(response => response.challengeId === challenge.challengeId).length > 0 &&
updateRefereeRequests.filter(request => request.challengeId === challenge.challengeId).length ===
updateRefereeResponses.filter(response => response.challengeId === challenge.challengeId).length
updateRefereeRequests.filter(request => request.challengeId.toString() === challenge.challengeId.toString())
.length > 0 &&
updateRefereeResponses.filter(response => response.challengeId.toString() === challenge.challengeId.toString())
.length > 0 &&
updateRefereeRequests.filter(request => request.challengeId.toString() === challenge.challengeId.toString())
.length ===
updateRefereeResponses.filter(response => response.challengeId.toString() === challenge.challengeId.toString())
.length
? {
response: lastAcceptedResponse ? lastAcceptedResponse : undefined,
}
Expand Down
20 changes: 13 additions & 7 deletions packages/nextjs/pages/sportsbook/ChallengeCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,32 +22,34 @@ const ChallengeCard = ({
const [completeChallengeTeam2Score, setCompleteChallengeTeam2Score] = useState<string>("");
const [refereeAddress, setRefereeAddress] = useState(challenge.referee);

const [challengeIdArg, setChallengeIdArg] = useState<string>(challenge.challengeId.toString());

const { address } = useAccount();

const { writeAsync: acceptChallenge } = useScaffoldContractWrite({
contractName: "Sportsbook",
functionName: "acceptChallenge",
args: [challenge.challengeId ? BigNumber.from(challenge.challengeId) : BigNumber.from(0)],
args: [challengeIdArg ? BigNumber.from(challengeIdArg) : BigNumber.from(0)],
value: challenge.bet ? ethers.utils.formatEther(challenge.bet.toString()) : undefined,
});

const { writeAsync: deleteChallenge } = useScaffoldContractWrite({
contractName: "Sportsbook",
functionName: "deleteChallenge",
args: [challenge.challengeId ? BigNumber.from(challenge.challengeId) : BigNumber.from(0)],
args: [challengeIdArg ? BigNumber.from(challengeIdArg) : BigNumber.from(0)],
});

const { writeAsync: startChallenge } = useScaffoldContractWrite({
contractName: "Sportsbook",
functionName: "startChallenge",
args: [challenge.challengeId ? BigNumber.from(challenge.challengeId) : undefined],
args: [challengeIdArg ? BigNumber.from(challengeIdArg) : undefined],
});

const { writeAsync: completeChallenge } = useScaffoldContractWrite({
contractName: "Sportsbook",
functionName: "completeChallenge",
args: [
challenge.challengeId ? BigNumber.from(challenge.challengeId) : undefined,
challengeIdArg ? BigNumber.from(challengeIdArg) : undefined,
completeChallengeTeam1Score ? parseInt(completeChallengeTeam1Score) : undefined,
completeChallengeTeam2Score ? parseInt(completeChallengeTeam2Score) : undefined,
],
Expand All @@ -56,19 +58,19 @@ const ChallengeCard = ({
const { writeAsync: updateReferee } = useScaffoldContractWrite({
contractName: "Sportsbook",
functionName: "updateReferee",
args: [challenge.challengeId ? BigNumber.from(challenge.challengeId) : BigNumber.from(0), updateRefereeAddress],
args: [challengeIdArg ? BigNumber.from(challengeIdArg) : undefined, updateRefereeAddress],
});

const { writeAsync: answerNoToUpdateReferee } = useScaffoldContractWrite({
contractName: "Sportsbook",
functionName: "answerUpdateReferee",
args: [challenge.challengeId ? BigNumber.from(challenge.challengeId) : undefined, false],
args: [challengeIdArg ? BigNumber.from(challengeIdArg) : undefined, false],
});

const { writeAsync: answerYesToUpdateReferee } = useScaffoldContractWrite({
contractName: "Sportsbook",
functionName: "answerUpdateReferee",
args: [challenge.challengeId ? BigNumber.from(challenge.challengeId) : undefined, true],
args: [challengeIdArg ? BigNumber.from(challengeIdArg) : undefined, true],
});

useEffect(() => {
Expand All @@ -79,6 +81,10 @@ const ChallengeCard = ({
}
}, [updateRefereeAccepted, challenge.referee]);

if (challenge && challenge.challengeId && challengeIdArg != challenge.challengeId.toString()) {
setChallengeIdArg(challenge.challengeId.toString());
}

return (
<div key={challenge.challengeId}>
<Card
Expand Down

0 comments on commit 71ab3ae

Please sign in to comment.