@@ -13,6 +13,8 @@ import {
1313} from './constants' ;
1414
1515import messages from './messages' ;
16+ import globalMessages from '../../messages' ;
17+ import { AxiosError } from 'axios' ;
1618
1719/** Interface for table mode actions for React's `useReducer` hook.
1820 *
@@ -163,6 +165,26 @@ const useEditActions = ({
163165 return true ;
164166 } ;
165167
168+ const getErrorMessage = ( error : unknown ) : string => {
169+ let errorMessage : string = '' ;
170+ if ( error instanceof AxiosError ) {
171+ const responseData = error . response ?. data ;
172+ const tagError = Object . entries ( responseData ) ?. find ( ( errItem : [ string , unknown ] ) => (
173+ [ 'tag' , 'value' , 'updated_tag_value' ] . includes ( errItem [ 0 ] . toLowerCase ( ) )
174+ ) ) ;
175+
176+ const errorMessages = tagError ? tagError [ 1 ] : (
177+ ( error as Error ) . message || intl . formatMessage ( globalMessages . unknownError )
178+ ) ;
179+ errorMessage = Array . isArray ( errorMessages ) ? errorMessages . join ( '; ' ) : String ( errorMessages ) ;
180+ } else {
181+ errorMessage = ( error as Error ) . message || intl . formatMessage ( globalMessages . unknownError ) ;
182+ }
183+
184+ errorMessage = errorMessage . replace ( / \. $ / , '' ) ; // Remove trailing period for better message formatting
185+ return errorMessage ;
186+ } ;
187+
166188 const handleCreateTag = async ( value : string , parentTagValue ?: string ) => {
167189 const trimmed = value . trim ( ) ;
168190
@@ -182,9 +204,9 @@ const useEditActions = ({
182204 setIsCreatingTopTag ( false ) ;
183205 setCreatingParentId ( null ) ;
184206 } catch ( error ) {
185- const message = intl . formatMessage ( messages . tagCreationErrorMessage , { errorMessage : ( error as Error ) ?. message } ) ;
186- setDraftError ( ( error as Error ) ?. message || intl . formatMessage ( messages . tagCreationErrorMessage , { errorMessage : '' } ) ) ;
187- setToast ( { show : true , message } ) ;
207+ const errorMessage = getErrorMessage ( error ) ;
208+ setDraftError ( errorMessage ) ;
209+ setToast ( { show : true , message : intl . formatMessage ( messages . tagCreationErrorMessage , { errorMessage } ) } ) ;
188210 }
189211 } ;
190212
@@ -211,9 +233,9 @@ const useEditActions = ({
211233 message : intl . formatMessage ( messages . tagUpdateSuccessMessage , { name : trimmed } ) ,
212234 } ) ;
213235 } catch ( error ) {
214- const message = intl . formatMessage ( messages . tagUpdateErrorMessage , { errorMessage : ( error as Error ) ?. message } ) ;
215- setDraftError ( ( error as Error ) ?. message || intl . formatMessage ( messages . tagUpdateErrorMessage , { errorMessage : '' } ) ) ;
216- setToast ( { show : true , message } ) ;
236+ const errorMessage = getErrorMessage ( error ) ;
237+ setDraftError ( errorMessage ) ;
238+ setToast ( { show : true , message : intl . formatMessage ( messages . tagUpdateErrorMessage , { errorMessage } ) } ) ;
217239 }
218240 } ;
219241
0 commit comments