Merge pull request #108 from ClaytonWWilson/send-microblog-loading

Send microblog loading
This commit is contained in:
Clayton Wilson 2019-12-05 13:38:53 -05:00 committed by GitHub
commit 76330fd234
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 88 additions and 33 deletions

View File

@ -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});
});
};

View File

@ -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'
/>
<Button
className={classes.button}
onClick={this.handleSubmit}
// disabled={loading}
disabled={this.state.loading}
variant="outlined"
color="primary"
>
Share Post
{this.state.loading && <CircularProgress size={30} className={classes.progress} />}
</Button>
</form>
</div>

View File

@ -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 {
<p>Loading post...</p>
);
return authenticated ? (
return (
authenticated ? (
this.state.loading ? (<CircularProgress size={60} style={{marginTop: "300px"}}></CircularProgress>) :
<Grid container>
<Grid item sm={4} xs={8}>
<Writing_Microblogs />
@ -183,23 +188,19 @@ class Home extends Component {
<Grid item sm={4} xs={8}>
{postMarkup}
</Grid>
</Grid>
) : loading ? (
<CircularProgress
size={60}
style={{ marginTop: "300px" }}
></CircularProgress>
) : (
<div>
<div>
<img src={logo} className="app-logo" alt="logo" />
<br />
<br />
<b>Welcome to Twistter!</b>
<br />
<br />
<b>See the most interesting topics people are following right now.</b>
</div>
</Grid>
) : loading ?
(<CircularProgress size={60} style={{marginTop: "300px"}}></CircularProgress>)
:
(
<div>
<div>
<img src={logo} className="app-logo" alt="logo" />
<br/><br/>
<b>Welcome to Twistter!</b>
<br/><br/>
<b>See the most interesting topics people are following right now.</b>
</div>
<br />
<br />

View File

@ -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 ? <CircularProgress size={60} style={{marginTop: "300px"}}></CircularProgress> :
<Grid container spacing={24}>
<Grid item sm={4} xs={8}>
{imageMarkup}

View File

@ -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 ? <CircularProgress size={60} style={{marginTop: "300px"}}></CircularProgress> :
<div>
{/* <Paper className={classes.paper}> */}
<Grid container direction="column">