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;
};