From b2e1dd54a4022add5dce744f796c5f5b07cd127f Mon Sep 17 00:00:00 2001 From: plebeius Date: Tue, 29 Jul 2025 17:16:04 +0200 Subject: [PATCH] fix: prevent TypeError when challengeErrors is not iterable in challenge verification --- src/lib/utils/challenge-utils.ts | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/lib/utils/challenge-utils.ts b/src/lib/utils/challenge-utils.ts index f0692746..9106f1d8 100644 --- a/src/lib/utils/challenge-utils.ts +++ b/src/lib/utils/challenge-utils.ts @@ -2,8 +2,31 @@ import { ChallengeVerification } from '@plebbit/plebbit-react-hooks'; export const alertChallengeVerificationFailed = (challengeVerification: ChallengeVerification, publication: any) => { if (challengeVerification?.challengeSuccess === false) { - console.warn(challengeVerification, publication); - alert(`p/${publication?.subplebbitAddress} challenge error: ${[...(challengeVerification?.challengeErrors || []), challengeVerification?.reason].join(' ')}`); + console.warn('Challenge Verification Failed:', challengeVerification, 'Publication:', publication); + + let errorMessages: string[] = []; + if (challengeVerification?.challengeErrors) { + if ( + typeof challengeVerification.challengeErrors === 'object' && + challengeVerification.challengeErrors !== null && + !Array.isArray(challengeVerification.challengeErrors) + ) { + // Handle challengeErrors as object (extract values and filter for strings) + errorMessages = Object.values(challengeVerification.challengeErrors).filter((val): val is string => typeof val === 'string'); + } else if (Array.isArray(challengeVerification.challengeErrors)) { + // Handle challengeErrors as array + errorMessages = [...challengeVerification.challengeErrors]; + } else { + console.warn('challengeVerification.challengeErrors is not an object or array:', challengeVerification.challengeErrors); + } + } + + if (challengeVerification?.reason) { + errorMessages.push(challengeVerification.reason); + } + + const finalMessage = errorMessages.filter(Boolean).join(' '); + alert(`p/${publication?.subplebbitAddress} challenge error: ${finalMessage || 'unknown error'}`); } else { console.log(challengeVerification, publication); }