Skip to content

Commit 831b77f

Browse files
SaraVieiraCompuIves
authored andcommitted
Email in feedback (codesandbox#1444)
Adds email for users not logged in and also adds URL to the table
1 parent d6a41f8 commit 831b77f

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

packages/app/src/app/pages/common/Modals/FeedbackModal/Feedback.js

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,35 @@ import Margin from 'common/components/spacing/Margin';
44
import Button from 'app/components/Button';
55

66
import AutosizeTextArea from 'common/components/AutosizeTextArea';
7+
import Input from 'common/components/Input';
78
import pushToAirtable from 'app/store/utils/pushToAirtable';
89

910
import { EmojiButton } from './elements';
1011

11-
function sendFeedback(props) {
12-
const { feedback, emoji, sandboxId, user } = props;
13-
const { username, email } = user || {};
14-
15-
return pushToAirtable({ feedback, emoji, sandboxId, username, email });
16-
}
17-
1812
class Feedback extends React.Component {
1913
state = {
2014
feedback: '',
15+
email: this.props.user,
2116
emoji: null,
2217
loading: false,
2318
};
2419

2520
onChange = e => {
26-
this.setState({ feedback: e.target.value });
21+
this.setState({ [e.target.name]: e.target.value });
2722
};
2823

2924
onSubmit = evt => {
3025
const { id, user, signals } = this.props;
31-
const { feedback, emoji } = this.state;
26+
const { feedback, emoji, email } = this.state;
3227
evt.preventDefault();
3328

3429
this.setState({ loading: true }, () => {
35-
sendFeedback({
30+
pushToAirtable({
3631
sandboxId: id,
3732
feedback,
3833
emoji,
39-
user,
34+
username: (user || {}).username,
35+
email,
4036
})
4137
.then(() => {
4238
this.setState(
@@ -76,18 +72,34 @@ class Feedback extends React.Component {
7672
};
7773

7874
render() {
79-
const { feedback, emoji } = this.state;
75+
const { feedback, emoji, email } = this.state;
8076
return (
8177
<form onSubmit={this.onSubmit}>
8278
<AutosizeTextArea
8379
css={`
8480
width: 100%;
8581
`}
82+
name="feedback"
8683
value={feedback}
8784
onChange={this.onChange}
8885
placeholder="What are your thoughts?"
8986
minRows={3}
87+
required
9088
/>
89+
{!this.props.user && (
90+
<Margin top={0.5}>
91+
<Input
92+
css={`
93+
width: 100%;
94+
`}
95+
type="email"
96+
name="email"
97+
value={email}
98+
onChange={this.onChange}
99+
placeholder="Email if you wish to be contacted"
100+
/>
101+
</Margin>
102+
)}
91103

92104
<Margin
93105
top={0.5}
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import Airtable from './setAirtable';
1+
export default async ({ feedback, emoji, sandboxId, username, email }) => {
2+
const Airtable = await import(/* webpackChunkName: 'airtable' */ './setAirtable');
3+
const base = Airtable.default.base('appzdQFPct2p9gFZi');
24

3-
const base = Airtable.base('appzdQFPct2p9gFZi');
4-
5-
export default ({ feedback, emoji, sandboxId, username, email }) =>
6-
new Promise((resolve, reject) => {
5+
return new Promise((resolve, reject) => {
76
base('feedback').create(
87
{
98
feedback,
109
emoji,
1110
sandboxId,
1211
username,
1312
email,
13+
url: window.location.pathname,
1414
},
1515
err => {
1616
if (err) {
@@ -22,3 +22,4 @@ export default ({ feedback, emoji, sandboxId, username, email }) =>
2222
}
2323
);
2424
});
25+
};

0 commit comments

Comments
 (0)