diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/CurrentUsersReview.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/CurrentUsersReview.js
index eca40fc60e9..cee5a263f65 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/CurrentUsersReview.js
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/CurrentUsersReview.js
@@ -42,6 +42,15 @@ class CurrentUsersReview extends React.Component {
});
};
+ deleteCallback = () =>{
+ this.setState({
+ data: []
+ });
+ };
+
+ addCallBack =(review) =>{
+
+ };
render() {
const {data} = this.state;
@@ -60,7 +69,7 @@ class CurrentUsersReview extends React.Component {
dataSource={data}
renderItem={item => (
-
+
)}
>
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/Reviews.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/Reviews.js
index c01a859c6a1..a8d2fb4b1d5 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/Reviews.js
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/Reviews.js
@@ -86,6 +86,14 @@ class Reviews extends React.Component {
});
};
+ deleteCallback = () =>{
+ this.fetchData(0, limit, res => {
+ this.setState({
+ data: res,
+ });
+ });
+ };
+
render() {
const {loading, hasMore, data, loadMore} = this.state;
const {uuid} = this.props;
@@ -102,7 +110,7 @@ class Reviews extends React.Component {
dataSource={data}
renderItem={item => (
-
+
)}
>
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/singleReview/SingleReview.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/singleReview/SingleReview.js
index 8ca58208588..2ae260f51cc 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/singleReview/SingleReview.js
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/singleReview/SingleReview.js
@@ -1,48 +1,83 @@
import React from "react";
-import {Avatar} from "antd";
-import {List, Typography} from "antd";
+import {Avatar, notification} from "antd";
+import {List, Typography, Popconfirm} from "antd";
import StarRatings from "react-star-ratings";
import Twemoji from "react-twemoji";
import "./SingleReview.css";
import EditReview from "./editReview/EditReview";
+import axios from "axios";
+import config from "../../../../../../public/conf/config.json";
const {Text, Paragraph} = Typography;
-const colorList = ['#f0932b', '#badc58', '#6ab04c', '#eb4d4b', '#0abde3', '#9b59b6', '#3498db', '#22a6b3','#e84393','#f9ca24'];
+const colorList = ['#f0932b', '#badc58', '#6ab04c', '#eb4d4b', '#0abde3', '#9b59b6', '#3498db', '#22a6b3', '#e84393', '#f9ca24'];
class SingleReview extends React.Component {
+
+ static defaultProps = {
+ isPersonalReview: false
+ };
+
constructor(props) {
super(props);
+ const {username} = this.props.review;
+ const color = colorList[username.length % 10];
this.state = {
content: '',
rating: 0,
- color: '#f0932b'
+ color: color,
+ review: props.review
}
}
- componentDidMount() {
- const {content, rating, username} = this.props.review;
- const color = colorList[username.length%10];
+ updateCallback = (review) => {
this.setState({
- content,
- rating,
- color
+ review
});
- }
+ };
+ deleteReview = () => {
+ const {uuid} = this.props;
+ const {id} = this.state.review;
- updateCallback = (response) =>{
- console.log(response);
- const {rating, content} = response;
- this.setState({
- rating,
- content
+ let url = config.serverConfig.protocol + "://" + config.serverConfig.hostname + ':' +
+ config.serverConfig.httpsPort + config.serverConfig.invoker.uri + config.serverConfig.invoker.store;
+
+ // call as an admin api if the review is not a personal review
+ if (!this.props.isPersonalReview) {
+ url += "/admin";
+ }
+
+ url += "/reviews/" + uuid + "/" + id;
+
+ axios.delete(url).then(res => {
+ if (res.status === 200) {
+ notification["success"]({
+ message: 'Done!',
+ description:
+ 'The review has been deleted successfully.',
+ });
+
+ this.props.deleteCallback(id);
+ }
+ }).catch((error) => {
+ console.log(error);
+ if (error.hasOwnProperty("response") && error.response.status === 401) {
+ window.location.href = config.serverConfig.protocol + "://" + config.serverConfig.hostname + ':' + config.serverConfig.httpsPort + '/store/login';
+ } else {
+ notification["error"]({
+ message: 'Something went wrong',
+ description:
+ "We were unable to delete the review..",
+ });
+ }
});
+
};
render() {
- const {review, isEditable, isDeletable, uuid} = this.props;
- const {content, rating, color} = this.state;
- const {username} = review;
+ const {isEditable, isDeletable, uuid} = this.props;
+ const {color, review} = this.state;
+ const {content, rating, username} = review;
const avatarLetter = username.charAt(0).toUpperCase();
const body = (
@@ -55,19 +90,27 @@ class SingleReview extends React.Component {
name='rating'
/>
{review.createdAt}
-
-
- {content}
-
-
+
+
+ {content}
+
+
);
const title = (
- {review.username}
+ {review.username}
{isEditable && (
)}
- {isDeletable && (delete)}
+ {isDeletable && (
+
+ delete
+ )}
);