/* global showLoginModal */ import { h, Component } from 'preact'; import PropTypes from 'prop-types'; import { Button, ButtonGroup, Dropdown, FormField, RadioButton, } from '@crayons'; export const COMMENT_SUBSCRIPTION_TYPE = Object.freeze({ ALL: 'all_comments', TOP: 'top_level_comments', AUTHOR: 'only_author_comments', NOT_SUBSCRIBED: 'not_subscribed', }); export class CommentSubscription extends Component { constructor(props) { const { subscriptionType } = props; super(props); const subscribed = subscriptionType && (subscriptionType.length > 0 && subscriptionType) !== COMMENT_SUBSCRIPTION_TYPE.NOT_SUBSCRIBED; const initialState = { subscriptionType: subscribed ? subscriptionType : COMMENT_SUBSCRIPTION_TYPE.ALL, subscribed, showOptions: false, }; this.state = initialState; } commentSubscriptionClick = (event) => { this.setState({ subscriptionType: event.target.value, }); }; render() { const { subscriptionType, subscribed } = this.state; const { onSubscribe, onUnsubscribe, positionType = 'relative', isLoggedIn, } = this.props; const CogIcon = () => ( Preferences ); return (
{ this.buttonGroupElement = element; }} > {subscribed ? ( )}
); } } CommentSubscription.displayName = 'CommentSubscription'; CommentSubscription.propTypes = { positionType: PropTypes.oneOf(['absolute', 'relative', 'static']).isRequired, onSubscribe: PropTypes.func.isRequired, onUnsubscribe: PropTypes.func.isRequired, subscriptionType: PropTypes.oneOf( Object.entries(COMMENT_SUBSCRIPTION_TYPE).map(([, value]) => value), ).isRequired, isLoggedIn: PropTypes.bool.isRequired, };