DRY Violation — Duplicated Logic
Problem
extractErrorMessage is defined identically in 4 separate action hooks:
client/src/pages/users/hooks/useUserActions.js:4
client/src/pages/cars/hooks/useCarActions.js:4
client/src/pages/messages/hooks/useMessageActions.js:7
client/src/pages/servicesAdmin/hooks/useServiceActions.js:3
All four files contain the exact same line:
```js
const extractErrorMessage = (err) => err?.response?.data?.message ?? err?.message ?? String(err);
```
Fix
Add to client/src/utils/handlerUtils.js:
```js
export const extractErrorMessage = (err) =>
err?.response?.data?.message ?? err?.message ?? String(err);
```
Then replace the local declaration in each of the 4 hook files with:
```js
import { extractErrorMessage } from "../../../utils/handlerUtils";
```
Effort: S (under 30 min)
DRY Violation — Duplicated Logic
Problem
extractErrorMessageis defined identically in 4 separate action hooks:client/src/pages/users/hooks/useUserActions.js:4client/src/pages/cars/hooks/useCarActions.js:4client/src/pages/messages/hooks/useMessageActions.js:7client/src/pages/servicesAdmin/hooks/useServiceActions.js:3All four files contain the exact same line:
```js
const extractErrorMessage = (err) => err?.response?.data?.message ?? err?.message ?? String(err);
```
Fix
Add to
client/src/utils/handlerUtils.js:```js
export const extractErrorMessage = (err) =>
err?.response?.data?.message ?? err?.message ?? String(err);
```
Then replace the local declaration in each of the 4 hook files with:
```js
import { extractErrorMessage } from "../../../utils/handlerUtils";
```
Effort: S (under 30 min)