From 649b7e08a812940458580af9a177de3b5677b345 Mon Sep 17 00:00:00 2001 From: Dylan Justice Date: Tue, 22 Jun 2021 17:33:33 -0400 Subject: [PATCH] Additional safeguards for re-renders and error types --- src/hooks/use-page-errors.ts | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/hooks/use-page-errors.ts b/src/hooks/use-page-errors.ts index 98e7b21..93bef26 100644 --- a/src/hooks/use-page-errors.ts +++ b/src/hooks/use-page-errors.ts @@ -1,5 +1,5 @@ import { useState, useCallback } from "react"; -import { ResultRecord } from "andculturecode-javascript-core"; +import { CollectionUtils, ResultRecord } from "andculturecode-javascript-core"; /** * Hook to bundle common page error handling functionality @@ -7,20 +7,27 @@ import { ResultRecord } from "andculturecode-javascript-core"; export function usePageErrors() { const [pageErrors, setPageErrors] = useState>([]); - const handlePageLoadError = useCallback( - (result: string | ResultRecord) => { - if (typeof result === "string") { - setPageErrors((e) => [...e, result]); - return; - } + const handlePageLoadError = useCallback((result: any) => { + if (result instanceof ResultRecord) { + setPageErrors((errors: string[]) => [ + ...errors, + ...result.listErrorMessages(), + ]); + return; + } - setPageErrors((e) => [...e, ...result.listErrorMessages()]); - }, - [] - ); + if (typeof result === "string") { + setPageErrors((errors: string[]) => [...errors, result]); + return; + } + + setPageErrors((errors: string[]) => [...errors, result.toString()]); + }, []); const resetPageErrors = useCallback(() => { - setPageErrors([]); + setPageErrors((prevState) => + CollectionUtils.hasValues(prevState) ? [] : prevState + ); }, []); return {