Skip to content

Commit e74cfbf

Browse files
Fix the issue with unnecessary api call if the data already present in the redux store
1 parent 13bf7e9 commit e74cfbf

24 files changed

+125
-109
lines changed

client/src/actions/index.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
LOAD_FILTER_PRODUCTS,
99
LOAD_FILTER_ATTRIBUTES,
1010
INTERNAL_SERVER_ERROR_CODE,
11-
BAD_REQUEST_ERROR_CODE,
11+
BAD_REQUEST_ERROR_CODE, SAVE_QUERY_STATE, SAVE_QUERY_STATUS,
1212
} from './types';
1313
import authApi from "../api/authServiceApi";
1414
import history from "../history";
@@ -87,7 +87,7 @@ export const signUp = formValues => async (dispatch) => {
8787
export const getDataViaAPI = (type, uri) => async dispatch => {
8888
log.info(`[ACTION]: invokeAndDispatchAPIData Calling API = ${uri}.`)
8989

90-
if(uri) {
90+
if (uri) {
9191
commonServiceApi.defaults.timeout = 15000;
9292
uri = uri.replace(/\s/g, '')
9393
let responseError = false
@@ -108,7 +108,7 @@ export const getDataViaAPI = (type, uri) => async dispatch => {
108108
type: type, payload:
109109
{isLoading: false, data: JSON.parse(JSON.stringify(response.data))}
110110
});
111-
if(LOAD_FILTER_PRODUCTS.localeCompare(type) === 0) {
111+
if (LOAD_FILTER_PRODUCTS.localeCompare(type) === 0) {
112112
window.history.pushState('', '', uri)
113113
}
114114
} else {
@@ -121,11 +121,26 @@ export const loadFilterAttributes = filterQuery => async dispatch => {
121121
log.info(`[ACTION]: loadFilterAttributes Calling Filter API filterQuery = ${filterQuery}`)
122122

123123
if (filterQuery) {
124-
let uri = `/filter${filterQuery.replace(/\s/g, '')}`
124+
let removedSpacesFromFilterQuery = filterQuery.replace(/\s/g, '')
125+
let uri = `/filter${removedSpacesFromFilterQuery}`
125126
const response = await commonServiceApi.get(uri);
126127
if (response != null) {
127128
log.trace(`[ACTION]: Filter = ${JSON.stringify(response.data)}`)
128-
dispatch({type: LOAD_FILTER_ATTRIBUTES, payload: JSON.parse(JSON.stringify(response.data))});
129+
130+
const extractRequiredParams = removedSpacesFromFilterQuery.slice(3)
131+
132+
dispatch({
133+
type: LOAD_FILTER_ATTRIBUTES,
134+
payload: JSON.parse(JSON.stringify(
135+
{...response.data,
136+
"query": removedSpacesFromFilterQuery.slice(3)}))
137+
});
138+
139+
dispatch({
140+
type: SAVE_QUERY_STATUS,
141+
payload: extractRequiredParams
142+
});
143+
129144
return JSON.parse(JSON.stringify(response.data))
130145
} else {
131146
log.info(`[ACTION]: unable to fetch response for Filter API`)

client/src/actions/types.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ export const SELECT_PRODUCT_DETAIL = "SELECT_PRODUCT_DETAIL";
2020
export const ADD_TO_CART = "ADD_TO_CART";
2121
export const CART_TOTAL = "CART_TOTAL";
2222

23-
export const SAVE_FILTER_QUERY = "SAVE_FILTER_QUERY";
24-
export const DELETE_FILTER_QUERY = "DELETE_FILTER_QUERY";
23+
export const SAVE_QUERY_STATUS = "SAVE_QUERY_STATUS";
2524
export const ADD_SELECTED_CATEGORY = "ADD_SELECTED_CATEGORY";
2625
export const REMOVE_SELECTED_CATEGORY = "REMOVE_SELECTED_CATEGORY";
2726
export const SAVE_SORT_LIST = "SAVE_SORT_LIST";

client/src/components/routes/checkout/checkout.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {withStyles} from '@material-ui/core/styles';
88
import MuiAccordion from '@material-ui/core/Accordion';
99
import MuiAccordionSummary from '@material-ui/core/AccordionSummary';
1010
import MuiAccordionDetails from '@material-ui/core/AccordionDetails';
11-
import {useBackButton} from "../../backButtonHook";
11+
import {useBackButton} from "../../../hooks/backButtonHook";
1212

1313
const checkoutBgColor = "#80808033"
1414

client/src/components/routes/checkout/shippingAddress.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,14 @@ function ShippingAddress() {
7272
{renderTextField("Address Line 2 (optional)", false)}
7373

7474
<Grid item container>
75-
<Grid container xs={6} sm={6} style={{paddingRight: 15}}>
75+
<Grid item container xs={6} sm={6} style={{paddingRight: 15}}>
7676
<TextField label="Zip Code" variant="outlined"
7777
size="medium" required
7878
fullWidth
7979
style={textFieldStyles}/>
8080
</Grid>
8181

82-
<Grid container xs={6} sm={6}>
82+
<Grid item container xs={6} sm={6}>
8383
<TextField
8484
id="state-code"
8585
select

client/src/components/routes/checkout/shippingOptions.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ function ShippingOptions() {
3030

3131
const renderRadioBtnLabel = (lblText, helperText, price) => {
3232
return (
33-
<Grid container xs={12} sm={12} style={{width: "inherit", paddingTop: 20}}>
33+
<Grid item container xs={12} sm={12} style={{width: "inherit", paddingTop: 20}}>
3434

3535
<Grid item sm={5}>
3636
<Grid item style={{fontWeight: "bolder", fontSize: "1.1rem"}}>
@@ -53,13 +53,13 @@ function ShippingOptions() {
5353

5454
return (
5555
<Grid item style={{width: "100%", height: 400}}>
56-
<Grid container sm={10} wrap="wrap" spacing={1}
56+
<Grid item container sm={10} wrap="wrap" spacing={1}
5757
style={{padding: "25px 0 0 30px", height: 80}}>
5858
<Grid item sm={2}>
5959
<img src=".." alt="image" width={65} height={80}/>
6060
</Grid>
6161
</Grid>
62-
<Grid container sm={12} justify="center">
62+
<Grid item container sm={12} justify="center">
6363
<FormControl component="fieldset" style={{width: "inherit"}}>
6464
<RadioGroup aria-label="gender" name="gender1" value={value}
6565
onChange={handleRadioBtnChange} style={{width: "inherit"}}>
@@ -81,7 +81,7 @@ function ShippingOptions() {
8181
</RadioGroup>
8282
</FormControl>
8383
</Grid>
84-
<Grid container justify="center" sm={12}
84+
<Grid item container justify="center" sm={12}
8585
style={{paddingTop: 20}}>
8686
<Divider style={{height: 1, width: "inherit"}}/>
8787
</Grid>

client/src/components/routes/detail/productDetails.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {makeStyles} from "@material-ui/core/styles";
1818
import Spinner from "../../ui/spinner";
1919
import {InternalServerError} from "../../ui/error/internalServerError";
2020
import {BadRequest} from "../../ui/error/badRequest";
21-
import {useBackButton} from "../../backButtonHook";
21+
import {useBackButton} from "../../../hooks/backButtonHook";
2222

2323
export const useButtonStyles = makeStyles(() => ({
2424
buttonStartIcon: {

client/src/components/routes/home/home.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import Spinner from "../../ui/spinner";
1414
import {HTTPError} from "../../ui/error/httpError";
1515
import {LOAD_HOME_PAGE, HOME_PAGE_DATA_API, HOME_PAGE_API_OBJECT_LEN} from "../../../actions/types";
1616
import {BadRequest} from "../../ui/error/badRequest";
17-
import {useBackButton} from "../../backButtonHook";
17+
import {useBackButton} from "../../../hooks/backButtonHook";
1818

1919
const Home = props => {
2020
const {hover} = useSelector(state => state.tabHoverEventReducer)

client/src/components/routes/login.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Icon from "semantic-ui-react/dist/commonjs/elements/Icon";
88
import {Typography} from "@material-ui/core";
99
import {Link} from "react-router-dom";
1010
import log from "loglevel";
11-
import {useBackButton} from "../backButtonHook";
11+
import {useBackButton} from "../../hooks/backButtonHook";
1212

1313
const Login = (props) => {
1414

client/src/components/routes/navbar/sideBar.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {makeStyles} from "@material-ui/core/styles";
33
import AccordionSection from "./accordionSection";
44
import Drawer from "@material-ui/core/Drawer";
55
import log from 'loglevel';
6-
import {useClickAway} from "./clickAwayHook";
6+
import {useClickAway} from "../../../hooks/clickAwayHook";
77

88
export const useSideBarStyles = makeStyles((theme) => ({
99
root: {

client/src/components/routes/product/filterPagination.js

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,14 @@ import log from 'loglevel';
44
import {useDispatch, useSelector} from "react-redux";
55
import {SELECT_PRODUCT_PAGE} from "../../../actions/types";
66
import Pagination from "@material-ui/lab/Pagination";
7-
import {INITIAL_PAGINATION_STATE, MAX_PRODUCTS_PER_PAGE} from "../../../constants/constants";
7+
import {MAX_PRODUCTS_PER_PAGE} from "../../../constants/constants";
88

99
export default function FilterPagination() {
1010
const dispatch = useDispatch()
1111
const selectedPage = useSelector(state => state.selectPageReducer)
1212
const filterProductsReducer = useSelector(state => state.filterProductsReducer)
13-
const selectedFilterAttributes = useSelector(state => state.selectedFilterAttributesReducer)
1413
let totalProducts = 0
1514

16-
useEffect(() => {
17-
log.info("[FilterPagination] Component will mount...")
18-
dispatch({
19-
type: SELECT_PRODUCT_PAGE,
20-
payload: INITIAL_PAGINATION_STATE
21-
})
22-
23-
// eslint-disable-next-line
24-
},[selectedFilterAttributes])
25-
2615
const handleChangePage = (event, page) => {
2716
log.info(`[FilterPagination] dispatching SELECT_PRODUCT_PAGE for page = ${page}`)
2817
dispatch({

0 commit comments

Comments
 (0)