|
1 | 1 | import { useReducer } from 'react'; |
| 2 | +import { AxiosError } from 'axios'; |
2 | 3 | import { useIntl } from '@edx/frontend-platform/i18n'; |
3 | 4 |
|
4 | 5 | import globalMessages from '@src/messages'; |
@@ -168,24 +169,34 @@ const useEditActions = ({ |
168 | 169 | return true; |
169 | 170 | }; |
170 | 171 |
|
171 | | - const getErrorMessage = (error: any): string => { |
172 | | - let errorMessage: string = ''; |
173 | | - if (error.name === 'AxiosError') { |
174 | | - const responseData = error.response?.data; |
175 | | - const tagError = Object.entries(responseData)?.find((errItem: [string, unknown]) => ( |
176 | | - ['tag', 'value', 'updated_tag_value'].includes(errItem[0].toLowerCase()) |
177 | | - )); |
178 | | - |
179 | | - const errorMessages = tagError ? tagError[1] : ( |
180 | | - (error as Error).message || intl.formatMessage(globalMessages.unknownError) |
181 | | - ); |
182 | | - errorMessage = Array.isArray(errorMessages) ? errorMessages.join('; ') : String(errorMessages); |
183 | | - } else { |
184 | | - errorMessage = (error as Error).message || intl.formatMessage(globalMessages.unknownError); |
| 172 | + const formatErrorMessage = (errorMessage: string): string => { |
| 173 | + // Remove trailing period for better message formatting |
| 174 | + return errorMessage.replace(/\.$/, ''); |
| 175 | + }; |
| 176 | + |
| 177 | + const getAxiosErrorMessage = (axiosError: AxiosError) => { |
| 178 | + const responseData = axiosError.response?.data; |
| 179 | + const tagError = responseData ? Object.entries(responseData)?.find((errItem: [string, unknown]) => ( |
| 180 | + ['tag', 'value', 'updated_tag_value'].includes(errItem[0].toLowerCase()) |
| 181 | + )) : null; |
| 182 | + |
| 183 | + const errorMessages = tagError ? tagError[1] : ( |
| 184 | + axiosError.message || intl.formatMessage(globalMessages.unknownError) |
| 185 | + ); |
| 186 | + const errorMessage = Array.isArray(errorMessages) ? errorMessages.join('; ') : String(errorMessages); |
| 187 | + return formatErrorMessage(errorMessage); |
| 188 | + }; |
| 189 | + |
| 190 | + const getErrorMessage = (error: unknown): string => { |
| 191 | + if (error instanceof AxiosError) { |
| 192 | + return getAxiosErrorMessage(error); |
| 193 | + } |
| 194 | + |
| 195 | + if (error instanceof Error && error.message) { |
| 196 | + return formatErrorMessage(error.message); |
185 | 197 | } |
186 | 198 |
|
187 | | - errorMessage = errorMessage.replace(/\.$/, ''); // Remove trailing period for better message formatting |
188 | | - return errorMessage; |
| 199 | + return intl.formatMessage(globalMessages.unknownError); |
189 | 200 | }; |
190 | 201 |
|
191 | 202 | const handleCreateTag = async (value: string, parentTagValue?: string) => { |
|
0 commit comments