diff --git a/packages/react-app/src/components/modals/optout-modal.tsx b/packages/react-app/src/components/modals/optout-modal.tsx index 3673cd70..750202fa 100644 --- a/packages/react-app/src/components/modals/optout-modal.tsx +++ b/packages/react-app/src/components/modals/optout-modal.tsx @@ -99,7 +99,7 @@ export default function OptoutModal({ questData, onClose = noop }: Props) { message: 'Opting out quest', status: TransactionStatus.WaitingForSignature, type: TransactionType.QuestUnplay, - args: { questAddress: questData.address, player: values.player || walletAddress }, + args: { questAddress: questData.address, players: [values.player || walletAddress] }, }; setTransaction(txPayload); const txReceipt = await QuestService.unplayQuest( diff --git a/packages/react-app/src/components/modals/play-modal.tsx b/packages/react-app/src/components/modals/play-modal.tsx index b2197132..be1ea5e6 100644 --- a/packages/react-app/src/components/modals/play-modal.tsx +++ b/packages/react-app/src/components/modals/play-modal.tsx @@ -110,7 +110,7 @@ export default function PlayModal({ questData, onClose = noop }: Props) { message: 'Playing quest (2/2)', status: TransactionStatus.WaitingForSignature, type: TransactionType.QuestPlay, - args: { questAddress: questData.address, player: values.player || walletAddress }, + args: { questAddress: questData.address, players: [values.player || walletAddress] }, }; if (!isMountedRef.current) return; setTransaction(txPayload); diff --git a/packages/react-app/src/components/modals/player-list-modal.tsx b/packages/react-app/src/components/modals/player-list-modal.tsx index 2e92c3ce..bb5b677f 100644 --- a/packages/react-app/src/components/modals/player-list-modal.tsx +++ b/packages/react-app/src/components/modals/player-list-modal.tsx @@ -102,13 +102,18 @@ export default function PlayerListModal({ type: TransactionType.QuestSetWhitelist, }; setTransaction(whitelistTxPayload); - await setWhitelist(walletAddress, players, questData.address!, (txHash) => { + const receipt = await setWhitelist(walletAddress, players, questData.address!, (txHash) => { whitelistTxPayload = { ...whitelistTxPayload, hash: txHash }; setTransaction({ ...whitelistTxPayload, status: TransactionStatus.Pending, }); }); + setTransaction({ + ...whitelistTxPayload, + status: receipt?.status ? TransactionStatus.Confirmed : TransactionStatus.Failed, + args: { questAddress: questData.address, players }, + }); onSubmit(); } }; diff --git a/packages/react-app/src/components/quest.tsx b/packages/react-app/src/components/quest.tsx index 73e7750b..2a5c026c 100644 --- a/packages/react-app/src/components/quest.tsx +++ b/packages/react-app/src/components/quest.tsx @@ -194,13 +194,20 @@ export default function Quest({ if (transaction?.status === TransactionStatus.Confirmed) { switch (transaction?.type) { case TransactionType.QuestPlay: - if (transaction.args?.player) { - setPlayers((prev) => [...prev, transaction.args!.player!]); + if (transaction.args?.players?.length) { + setPlayers((prev) => [...prev, transaction.args!.players![0]]); } break; case TransactionType.QuestUnplay: - if (transaction.args?.player) { - setPlayers((prev) => prev?.filter((_player) => _player !== transaction.args!.player)); + if (transaction.args?.players?.length) { + setPlayers((prev) => + prev?.filter((_player) => _player !== transaction.args!.players![0]), + ); + } + break; + case TransactionType.QuestSetWhitelist: + if (transaction.args?.players) { + setPlayers(transaction.args?.players); } break; case TransactionType.ClaimChallengeResolve: @@ -462,13 +469,11 @@ export default function Quest({ <> {((players.length > 0 && !isSummary) || walletAddress === questData.creatorAddress) && ( - // )} - {/* */} {(((!isPlayingQuest || questData.creatorAddress === walletAddress) && questData.isWhitelist) || diff --git a/packages/react-app/src/models/transaction.model.ts b/packages/react-app/src/models/transaction.model.ts index fe85a406..1a920e7f 100644 --- a/packages/react-app/src/models/transaction.model.ts +++ b/packages/react-app/src/models/transaction.model.ts @@ -10,8 +10,7 @@ export type TransactionModel = { questAddress?: string; containerId?: string; disputeState?: number; - player?: string; - players?: string; + players?: string[]; }; type: TransactionType; };