import { withFormik } from 'formik';
import PropTypes from 'prop-types';
import React from 'react';
-import { Button, Col, Form, Modal, Row } from 'react-bootstrap';
+import { Alert, Button, Col, Form, Modal, Row } from 'react-bootstrap';
import { useTranslation } from 'react-i18next';
import EpisodePart from './EpisodePart';
};
const EpisodeForm = ({
+ episode,
errors,
handleBlur,
handleChange,
<Row>
<Col className="border-end" xl={6}>
<Modal.Body>
+ {episode?.ext_id ?
+ <Alert variant="warning">
+ {t('episodes.extSyncWarning')}
+ </Alert>
+ : null}
<EpisodePart
errors={errors}
handleBlur={handleBlur}
};
EpisodeForm.propTypes = {
+ episode: PropTypes.shape({
+ ext_id: PropTypes.string,
+ }),
errors: PropTypes.shape({
comment: PropTypes.string,
confirmed: PropTypes.string,
episode && channel && episode.channels && episode.channels.find(c => c.id === channel.id);
export const mayEditEpisode = (user, episode) =>
- user && episode && !episode.ext_id && user.event_crews &&
+ user && episode && user.event_crews &&
user.event_crews.find(c => c.role === 'admin' && c.event_id === episode.event_id);
export const mayRestreamEpisodes = user => isAnyChannelAdmin(user);
estimate: 'Geschätzte Laufzeit',
estimatePreview: '{{ estimate }} Std.',
estimatePreviewWithEnd: '{{ estimate }} Std. (endet {{ end, LL LT }} Uhr)',
+ extSyncWarning: 'Achtung: Diese Episopde wird mit einer externen Datenquelle synchronisiert und Änderungen können überschrieben werden!',
missingStreams: 'Fehlende Runner-Streams',
players: {
name_override: 'Abweichender Name',
estimate: 'Estimated runtime',
estimatePreview: '{{ estimate }}h',
estimatePreviewWithEnd: '{{ estimate }}h (ends {{ end, LL LT }})',
+ extSyncWarning: 'Warning: This episode is synchronized to an external data source. Changes may be overwritten!',
missingStreams: 'Missing runner streams',
players: {
name_override: 'Name override',