Skip to content

Commit 366e20f

Browse files
authored
added active state for saving button while waiting for pins (#26)
1 parent 2cb4673 commit 366e20f

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

src/components/Main.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Main extends React.Component {
2727
codeStyle: "darcula"
2828
},
2929
justSaved: false,
30+
saving: false,
3031
justLoaded: false,
3132
error: null
3233
};
@@ -83,17 +84,19 @@ class Main extends React.Component {
8384
evt.preventDefault();
8485
const { preferences } = this.state;
8586
if (preferences) {
87+
this.setState({ saving: true });
8688
let cid;
8789
try {
8890
cid = await savePreferences(preferences);
8991
} catch (error) {
90-
this.setState({ error: error.toString() });
92+
this.setState({ error: error.toString(), saving: false });
9193
return;
9294
}
9395
localStorage.setItem("preferenceCID", cid);
9496
this.setState({
9597
cid,
9698
justSaved: true,
99+
saving: false,
97100
ipfsLoaded: true
98101
});
99102
}
@@ -119,6 +122,7 @@ class Main extends React.Component {
119122
cid={this.state.cid}
120123
preferences={this.state.preferences}
121124
justSaved={this.state.justSaved}
125+
saving={this.state.saving}
122126
justLoaded={this.state.justLoaded}
123127
onCIDChange={this.handleCIDChange}
124128
onPrefChange={this.handlePrefChange}

src/components/PreferenceForm.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class PreferenceForm extends React.Component {
2626
};
2727

2828
render() {
29-
const { preferences, justSaved, justLoaded, classes } = this.props;
29+
const { preferences, justSaved, saving, justLoaded, classes } = this.props;
3030

3131
return (
3232
<Paper className={classes.root}>
@@ -97,8 +97,10 @@ class PreferenceForm extends React.Component {
9797
<SubmitButton
9898
textNormal="Save"
9999
textSubmitted="Saved"
100+
textActive="Saving..."
100101
icon={<SaveIcon />}
101102
submitted={justSaved}
103+
active={saving}
102104
/>
103105
</form>
104106
</Paper>
@@ -110,6 +112,7 @@ PreferenceForm.propTypes = {
110112
cid: PropTypes.string.isRequired,
111113
preferences: PrefPropType.isRequired,
112114
justSaved: PropTypes.bool.isRequired,
115+
saving: PropTypes.bool.isRequired,
113116
justLoaded: PropTypes.bool.isRequired,
114117
onCIDChange: PropTypes.func.isRequired,
115118
onPrefChange: PropTypes.func.isRequired,

src/components/SubmitButton.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,17 @@ import Button from "@material-ui/core/Button";
55
import CheckIcon from "@material-ui/icons/Check";
66

77
const SubmitButton = props => {
8-
const { submitted, textNormal, textSubmitted } = props;
9-
const text = submitted ? textSubmitted : textNormal;
10-
const icon = submitted ? <CheckIcon /> : props.icon;
8+
const { submitted, active, textNormal, textSubmitted, textActive } = props;
9+
let text, icon;
10+
if (active) {
11+
text = textActive;
12+
} else if (submitted) {
13+
text = textSubmitted;
14+
icon = <CheckIcon />;
15+
} else {
16+
text = textNormal;
17+
icon = props.icon;
18+
}
1119

1220
return (
1321
<Button
@@ -26,8 +34,10 @@ const SubmitButton = props => {
2634
SubmitButton.propTypes = {
2735
textNormal: PropTypes.string.isRequired,
2836
textSubmitted: PropTypes.string.isRequired,
37+
textActive: PropTypes.string,
2938
icon: PropTypes.element,
3039
submitted: PropTypes.bool,
40+
active: PropTypes.bool,
3141
classes: PropTypes.objectOf(PropTypes.string)
3242
};
3343

0 commit comments

Comments
 (0)