134 lines
4 KiB
JavaScript
134 lines
4 KiB
JavaScript
import React, { Fragment } from 'react';
|
|
import Button from 'component/button';
|
|
import { FormField } from 'component/common/form';
|
|
import { doToast } from 'redux/actions/notifications';
|
|
import { Lbryio } from 'lbryinc';
|
|
import Page from 'component/page';
|
|
import Card from 'component/common/card';
|
|
import I18nMessage from 'component/i18nMessage';
|
|
|
|
class ReportPage extends React.Component {
|
|
constructor(props) {
|
|
super(props);
|
|
|
|
this.state = {
|
|
submitting: false,
|
|
message: '',
|
|
};
|
|
}
|
|
|
|
onMessageChange(event) {
|
|
this.setState({
|
|
message: event.target.value,
|
|
});
|
|
}
|
|
|
|
submitMessage() {
|
|
const { message } = this.state;
|
|
if (message) {
|
|
this.setState({
|
|
submitting: true,
|
|
});
|
|
Lbryio.call('event', 'desktop_error', { error_message: message }).then(() => {
|
|
this.setState({
|
|
submitting: false,
|
|
});
|
|
|
|
// Display global notice
|
|
const action = doToast({
|
|
message: __('Message received! Thanks for helping.'),
|
|
});
|
|
window.app.store.dispatch(action);
|
|
});
|
|
|
|
this.setState({ message: '' });
|
|
}
|
|
}
|
|
|
|
render() {
|
|
return (
|
|
<Page>
|
|
<div className="card-stack">
|
|
<Card
|
|
title={__('Report an issue or request a feature')}
|
|
subtitle={__(
|
|
'Please describe the problem you experienced or the feature you want to see and any information you think might be useful to us. Links to screenshots are great!'
|
|
)}
|
|
actions={
|
|
<Fragment>
|
|
<FormField
|
|
type="textarea"
|
|
rows="10"
|
|
name="message"
|
|
stretch
|
|
value={this.state.message}
|
|
onChange={event => {
|
|
this.onMessageChange(event);
|
|
}}
|
|
placeholder={__('Description of your issue or feature request')}
|
|
/>
|
|
|
|
<div className="section__actions">
|
|
<Button
|
|
button="primary"
|
|
onClick={event => {
|
|
this.submitMessage(event);
|
|
}}
|
|
className={`button-block button-primary ${this.state.submitting ? 'disabled' : ''}`}
|
|
>
|
|
{this.state.submitting ? __('Submitting...') : __('Submit Report')}
|
|
</Button>
|
|
</div>
|
|
</Fragment>
|
|
}
|
|
/>
|
|
|
|
<Card
|
|
title={__('Developer?')}
|
|
actions={
|
|
<Fragment>
|
|
<div dir="auto" className="markdown-preview">
|
|
<p>{__('You can also:')}</p>
|
|
<ul>
|
|
<li>
|
|
<Button
|
|
button="link"
|
|
href="https://github.com/lbryio/lbry-desktop/issues"
|
|
label={__('Submit an issue on GitHub')}
|
|
/>
|
|
.
|
|
</li>
|
|
<li>
|
|
<I18nMessage
|
|
tokens={{
|
|
technical_resources: (
|
|
<Button button="link" href="https://lbry.tech" label={__('technical resources')} />
|
|
),
|
|
}}
|
|
>
|
|
Explore our %technical_resources%
|
|
</I18nMessage>
|
|
.
|
|
</li>
|
|
<li>
|
|
<I18nMessage
|
|
tokens={{
|
|
tech_forum: <Button button="link" href="https://forum.lbry.tech" label={__('tech forum')} />,
|
|
}}
|
|
>
|
|
Join our %tech_forum%
|
|
</I18nMessage>
|
|
.
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</Fragment>
|
|
}
|
|
/>
|
|
</div>
|
|
</Page>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default ReportPage;
|