Skip to content

Commit 135ce4e

Browse files
committed
feat(ProductEdit): change paths of images to remote values
1 parent e81e4ff commit 135ce4e

File tree

3 files changed

+49
-16
lines changed

3 files changed

+49
-16
lines changed

src/actions/products.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export const UPDATED_PRODUCT = 'UPDATED_PRODUCT';
99
export const UPDATING_PRODUCT = 'UPDATING_PRODUCT';
1010
export const DELETED_PRODUCT = 'DELETED_PRODUCT';
1111
export const DELETING_PRODUCT = 'DELETING_PRODUCT';
12+
export const RECEIVED_IMAGES = 'RECEIVED_IMAGES';
1213

1314
export function getProductsRequest() {
1415
return (dispatch) => {
@@ -62,6 +63,22 @@ export function deleteProductRequest(payload) {
6263
};
6364
}
6465

66+
export function getProductsImagesRequest() {
67+
return (dispatch) => {
68+
axios.get('/products/images-list').then(res => {
69+
dispatch(receiveProductImages(res.data));
70+
})
71+
};
72+
}
73+
74+
export function receiveProductImages(payload) {
75+
return {
76+
type: RECEIVED_IMAGES,
77+
payload
78+
}
79+
}
80+
81+
6582
export function receiveProducts(payload) {
6683
return {
6784
type: RECEIVED_PRODUCTS,

src/pages/management/components/productEdit/ProductEdit.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,30 @@ import {
2020
PopoverBody
2121
} from "reactstrap";
2222

23-
import { loadProductRequest, receiveProduct, updateProduct, updateProductRequest, createProductRequest, deleteProductRequest } from '../../../../actions/products';
23+
import {
24+
loadProductRequest,
25+
receiveProduct,
26+
updateProduct,
27+
updateProductRequest,
28+
createProductRequest,
29+
deleteProductRequest,
30+
getProductsImagesRequest
31+
} from '../../../../actions/products';
2432
import Widget from '../../../../components/Widget';
2533
import Loader from '../../../../components/Loader';
2634
import s from './ProductEdit.module.scss';
2735
import img1 from "../../../../images/products/img1.jpg";
28-
import img2 from "../../../../images/products/img2.jpg";
29-
import img3 from "../../../../images/products/img3.jpg";
30-
import img4 from "../../../../images/products/img4.jpg";
31-
import img5 from "../../../../images/products/img5.jpeg";
32-
import img6 from "../../../../images/products/img6.jpg";
3336

3437
class ProductEdit extends React.Component {
3538
static propTypes = {
3639
products: PropTypes.array,
40+
images: PropTypes.array,
3741
dispatch: PropTypes.func.isRequired,
3842
};
3943

4044
static defaultProps = {
41-
products: []
45+
products: [],
46+
images: []
4247
};
4348

4449
constructor(props) {
@@ -131,6 +136,10 @@ class ProductEdit extends React.Component {
131136
});
132137
}
133138

139+
componentDidMount() {
140+
this.props.dispatch(getProductsImagesRequest());
141+
}
142+
134143
componentDidUpdate() {
135144
let product = this.findProduct(this.getId()) || {
136145
technology: []
@@ -166,7 +175,7 @@ class ProductEdit extends React.Component {
166175
<img className={s.productImage} alt="img" src={image}/>
167176
</DropdownToggle>
168177
<DropdownMenu>
169-
{[img1, img2, img3, img4, img5, img6].map(img => (
178+
{this.props.images.map(img => (
170179
<DropdownItem key={img} onClick={() => this.updateProduct(img, 'img')}>
171180
<img className={s.productImage} alt={img} src={img}/>
172181
</DropdownItem>
@@ -302,6 +311,7 @@ class ProductEdit extends React.Component {
302311
function mapStateToProps(state) {
303312
return {
304313
products: state.products.data,
314+
images: state.products.images,
305315
isReceiving: state.products.isReceiving,
306316
isUpdating: state.products.isUpdating,
307317
isDeleting: state.products.isDeleting,

src/reducers/products.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import {
2-
RECEIVED_PRODUCTS,
3-
RECEIVED_PRODUCT,
4-
UPDATED_PRODUCT,
5-
DELETED_PRODUCT,
6-
RECEIVING_PRODUCTS,
7-
RECEIVING_PRODUCT,
8-
UPDATING_PRODUCT,
9-
DELETING_PRODUCT
2+
RECEIVED_PRODUCTS,
3+
RECEIVED_PRODUCT,
4+
UPDATED_PRODUCT,
5+
DELETED_PRODUCT,
6+
RECEIVING_PRODUCTS,
7+
RECEIVING_PRODUCT,
8+
UPDATING_PRODUCT,
9+
DELETING_PRODUCT,
10+
RECEIVED_IMAGES
1011
} from '../actions/products';
1112

1213
const defaultState = {
1314
data: [],
15+
images: [],
1416
isReceiving: false,
1517
isUpdating: false,
1618
isDeleting: false,
@@ -63,6 +65,10 @@ export default function productsReducer(state = defaultState, action) {
6365
isDeleting: true,
6466
idToDelete: action.payload.id
6567
});
68+
case RECEIVED_IMAGES:
69+
return Object.assign({}, state, {
70+
images: action.payload,
71+
});
6672
default:
6773
return state;
6874
}

0 commit comments

Comments
 (0)