Files
astuto/app/javascript/components/Comments/NewComment.tsx

84 lines
2.2 KiB
TypeScript
Raw Normal View History

2019-09-18 13:40:00 +02:00
import * as React from 'react';
import I18n from 'i18n-js';
2019-10-02 15:26:32 +02:00
import Gravatar from 'react-gravatar';
2019-09-18 13:40:00 +02:00
import NewCommentUpdateSection from './NewCommentUpdateSection';
2019-09-18 13:40:00 +02:00
import Button from '../shared/Button';
2019-09-20 18:43:24 +02:00
import Spinner from '../shared/Spinner';
import { DangerText } from '../shared/CustomTexts';
2019-09-18 13:40:00 +02:00
interface Props {
body: string;
parentId: number;
postUpdateFlagValue: boolean;
2019-09-20 18:43:24 +02:00
isSubmitting: boolean;
error: string;
handleChange(e: React.FormEvent): void;
handlePostUpdateFlag(): void;
handleSubmit(
body: string,
parentId: number,
isPostUpdate: boolean
): void;
2019-09-20 18:43:24 +02:00
isLoggedIn: boolean;
isPowerUser: boolean;
2019-10-02 15:26:32 +02:00
userEmail: string;
2019-09-18 13:40:00 +02:00
}
const NewComment = ({
body,
parentId,
postUpdateFlagValue,
2019-09-20 18:43:24 +02:00
isSubmitting,
error,
2019-09-18 13:40:00 +02:00
handleChange,
handlePostUpdateFlag,
2019-09-18 13:40:00 +02:00
handleSubmit,
2019-09-20 18:43:24 +02:00
isLoggedIn,
isPowerUser,
2019-10-02 15:26:32 +02:00
userEmail,
2019-09-18 13:40:00 +02:00
}: Props) => (
<React.Fragment>
<div className="newCommentForm">
{
isLoggedIn ?
<React.Fragment>
<div className="commentBodyForm">
<Gravatar email={userEmail} size={48} className="currentUserAvatar" />
<textarea
value={body}
onChange={handleChange}
placeholder={I18n.t('post.new_comment.body_placeholder')}
className="newCommentBody"
/>
<Button
onClick={() => handleSubmit(body, parentId, postUpdateFlagValue)}
className="submitCommentButton">
{ isSubmitting ? <Spinner color="light" /> : I18n.t('post.new_comment.submit_button') }
</Button>
</div>
{
isPowerUser && parentId == null ?
<NewCommentUpdateSection
postUpdateFlagValue={postUpdateFlagValue}
handlePostUpdateFlag={handlePostUpdateFlag}
/>
:
null
}
</React.Fragment>
:
<a href="/users/sign_in" className="loginInfo">
{I18n.t('post.new_comment.not_logged_in')}
</a>
}
</div>
{ error ? <DangerText>{error}</DangerText> : null }
</React.Fragment>
2019-09-18 13:40:00 +02:00
);
export default NewComment;