diff --git a/functions/handlers/post.js b/functions/handlers/post.js
index 2f5ce4f..788c64e 100644
--- a/functions/handlers/post.js
+++ b/functions/handlers/post.js
@@ -56,7 +56,7 @@ exports.getallPostsforUser = (req, res) => {
.catch(function(err) {
return res
.status(500)
- .json("Failed to retrieve user's posts from database.", err);
+ .json({message: "Failed to retrieve user's posts from database.", error: err});
});
};
diff --git a/twistter-frontend/src/Writing_Microblogs.js b/twistter-frontend/src/Writing_Microblogs.js
index 70b67d0..2b31bb5 100644
--- a/twistter-frontend/src/Writing_Microblogs.js
+++ b/twistter-frontend/src/Writing_Microblogs.js
@@ -8,6 +8,7 @@ import TextField from '@material-ui/core/TextField';
// import Typography from '@material-ui/core/Typography';
import Button from '@material-ui/core/Button';
import withStyles from "@material-ui/styles/withStyles";
+import CircularProgress from "@material-ui/core/CircularProgress";
const styles = {
container: {
@@ -21,6 +22,13 @@ const styles = {
},
textField: {
marginBottom: 15
+ },
+ progress: {
+ position: "absolute"
+ },
+ button: {
+ positon: "relative",
+ marginBottom: 30
}
}
@@ -31,7 +39,8 @@ class Writing_Microblogs extends Component {
value: "",
title: "",
topics: "",
- characterCount: 250
+ characterCount: 250,
+ loading: false
};
this.handleChange = this.handleChange.bind(this);
@@ -56,11 +65,15 @@ class Writing_Microblogs extends Component {
microBlogTitle: this.state.title,
microBlogTopics: this.state.topics.split(", ")
};
+
+ this.setState({
+ loading: true
+ })
const headers = {
headers: { "Content-Type": "application/json" }
};
- axios
+ let postPromise = axios
.post("/putPost", postData, headers) // TODO: add topics
.then(res => {
// alert("Post was shared successfully!");
@@ -71,8 +84,9 @@ class Writing_Microblogs extends Component {
console.error(err);
});
console.log(postData.microBlogTopics);
+ let topicPromises = [];
postData.microBlogTopics.forEach(topic => {
- axios
+ topicPromises.push(axios
.post("/putTopic", {
following: topic
})
@@ -81,10 +95,24 @@ class Writing_Microblogs extends Component {
})
.catch(err => {
console.error(err);
- });
+ })
+ )
});
event.preventDefault();
- this.setState({ value: "", title: "", characterCount: 250, topics: "" });
+ topicPromises.push(postPromise);
+ Promise.all(topicPromises)
+ .then(() => {
+ this.setState({
+ value: "",
+ title: "",
+ characterCount: 250,
+ topics: "",
+ loading: false
+ });
+ })
+ .catch((error) => {
+ console.log(error);
+ })
}
handleChangeforPost(event) {
@@ -149,12 +177,14 @@ class Writing_Microblogs extends Component {
autoComplete='off'
/>
diff --git a/twistter-frontend/src/pages/Home.js b/twistter-frontend/src/pages/Home.js
index 55cc7a8..44ae553 100644
--- a/twistter-frontend/src/pages/Home.js
+++ b/twistter-frontend/src/pages/Home.js
@@ -35,11 +35,13 @@ const styles = {
class Home extends Component {
state = {
likes: [],
+ loading: false,
following: null,
topics: null
};
componentDidMount() {
+ this.setState({loading: true});
axios
.get("/user")
.then(res => {
@@ -55,7 +57,8 @@ class Home extends Component {
.then(res => {
// console.log(res.data);
this.setState({
- posts: res.data
+ posts: res.data,
+ loading: false
});
})
.catch(err => console.log(err));
@@ -175,7 +178,9 @@ class Home extends Component {
Loading post...
);
- return authenticated ? (
+ return (
+ authenticated ? (
+ this.state.loading ? () :
@@ -183,23 +188,19 @@ class Home extends Component {
{postMarkup}
-
- ) : loading ? (
-
- ) : (
-
-
-

-
-
-
Welcome to Twistter!
-
-
-
See the most interesting topics people are following right now.
-
+
+ ) : loading ?
+ (
)
+ :
+ (
+
+
+

+
+
Welcome to Twistter!
+
+
See the most interesting topics people are following right now.
+
diff --git a/twistter-frontend/src/pages/otherUser.js b/twistter-frontend/src/pages/otherUser.js
index a7b4935..a9ec494 100644
--- a/twistter-frontend/src/pages/otherUser.js
+++ b/twistter-frontend/src/pages/otherUser.js
@@ -22,6 +22,7 @@ import AddCircle from "@material-ui/icons/AddCircle";
import TextField from "@material-ui/core/TextField";
import VerifiedIcon from "@material-ui/icons/CheckSharp";
import DoneIcon from "@material-ui/icons/Done";
+import CircularProgress from "@material-ui/core/CircularProgress";
// component
import "../App.css";
@@ -77,7 +78,8 @@ class user extends Component {
user: null,
following: null,
posts: null,
- myTopics: null
+ myTopics: null,
+ loading: false
};
}
@@ -114,7 +116,8 @@ class user extends Component {
};
componentDidMount() {
- axios
+ this.setState({loading: true});
+ let otherUserPromise = axios
.post("/getUserDetails", {
handle: this.state.profile
})
@@ -126,7 +129,7 @@ class user extends Component {
})
.catch(err => console.log(err));
- axios
+ let userPromise = axios
.get("/user")
.then(res => {
this.setState({
@@ -138,7 +141,7 @@ class user extends Component {
})
.catch(err => console.log(err));
- axios
+ let posts = axios
.post("/getOtherUsersPosts", {
handle: this.state.profile
})
@@ -149,6 +152,14 @@ class user extends Component {
});
})
.catch(err => console.log(err));
+
+ Promise.all([otherUserPromise, userPromise, posts])
+ .then(() => {
+ this.setState({loading: false});
+ })
+ .catch((error) => {
+ console.log(error);
+ })
}
render() {
@@ -254,6 +265,7 @@ class user extends Component {
);
return (
+ this.state.loading ?
:
{imageMarkup}
diff --git a/twistter-frontend/src/pages/user.js b/twistter-frontend/src/pages/user.js
index 6a189b6..59c096e 100644
--- a/twistter-frontend/src/pages/user.js
+++ b/twistter-frontend/src/pages/user.js
@@ -13,6 +13,7 @@ import CardMedia from "@material-ui/core/CardMedia";
import CardContent from "@material-ui/core/CardContent";
import Button from "@material-ui/core/Button";
import Grid from "@material-ui/core/Grid";
+import CircularProgress from "@material-ui/core/CircularProgress";
import Chip from "@material-ui/core/Chip";
import Typography from "@material-ui/core/Typography";
@@ -76,7 +77,8 @@ class user extends Component {
profile: null,
imageUrl: null,
topics: null,
- newTopic: ""
+ newTopic: "",
+ loading: false
};
}
@@ -127,7 +129,8 @@ class user extends Component {
}
componentDidMount() {
- axios
+ this.setState({loading: true})
+ let userPromise = axios
.get("/user")
.then(res => {
this.setState({
@@ -141,7 +144,7 @@ class user extends Component {
})
.catch(err => console.log(err));
- axios
+ let postsPromise = axios
.get("/getallPostsforUser")
.then(res => {
// console.log(res.data);
@@ -150,6 +153,14 @@ class user extends Component {
});
})
.catch(err => console.log(err));
+
+ Promise.all([userPromise, postsPromise])
+ .then(() => {
+ this.setState({loading: false});
+ })
+ .catch((error) => {
+ console.log(error)
+ })
}
formatDate(dateString) {
@@ -259,6 +270,7 @@ class user extends Component {
) : null;
return (
+ this.state.loading ? :