import PropTypes from 'prop-types'; import React, { Component } from 'react'; import Form from 'Components/Form/Form'; import FormGroup from 'Components/Form/FormGroup'; import FormInputButton from 'Components/Form/FormInputButton'; import FormInputGroup from 'Components/Form/FormInputGroup'; import FormLabel from 'Components/Form/FormLabel'; import Icon from 'Components/Icon'; import Button from 'Components/Link/Button'; import ClipboardButton from 'Components/Link/ClipboardButton'; import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; import { icons, inputTypes, kinds, sizes } from 'Helpers/Props'; import translate from 'Utilities/String/translate'; function getUrls(state) { const { unmonitored, asAllDay, tags } = state; let icalUrl = `${window.location.host}${window.Radarr.urlBase}/feed/calendar/Radarr.ics?`; if (unmonitored) { icalUrl += 'unmonitored=true&'; } if (asAllDay) { icalUrl += 'asAllDay=true&'; } if (tags.length) { icalUrl += `tags=${tags.toString()}&`; } icalUrl += `apikey=${window.Radarr.apiKey}`; const iCalHttpUrl = `${window.location.protocol}//${icalUrl}`; const iCalWebCalUrl = `webcal://${icalUrl}`; return { iCalHttpUrl, iCalWebCalUrl }; } class CalendarLinkModalContent extends Component { // // Lifecycle constructor(props, context) { super(props, context); const defaultState = { unmonitored: false, asAllDay: false, tags: [] }; const urls = getUrls(defaultState); this.state = { ...defaultState, ...urls }; } // // Listeners onInputChange = ({ name, value }) => { const state = { ...this.state, [name]: value }; const urls = getUrls(state); this.setState({ [name]: value, ...urls }); } onLinkFocus = (event) => { event.target.select(); } // // Render render() { const { onModalClose } = this.props; const { unmonitored, asAllDay, tags, iCalHttpUrl, iCalWebCalUrl } = this.state; return ( Radarr Calendar Feed
{translate('IncludeUnmonitored')} {translate('ShowAsAllDayEvents')} {translate('Tags')} {translate('ICalFeed')} , ]} onChange={this.onInputChange} onFocus={this.onLinkFocus} />
); } } CalendarLinkModalContent.propTypes = { tagList: PropTypes.arrayOf(PropTypes.object).isRequired, onModalClose: PropTypes.func.isRequired }; export default CalendarLinkModalContent;