fix: prevent TypeError when challengeErrors is not iterable in challenge verification

This commit is contained in:
plebeius
2025-07-29 17:16:04 +02:00
parent 4dbe751272
commit b2e1dd54a4
+25 -2
View File
@@ -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);
}