import * as React from "react"; import Config from "../config" import { ContentContainer } from "../types"; import NoticeComponent from "./NoticeComponent"; import NoticeTextSelectionComponent from "./NoticeTextSectionComponent"; import SponsorTimeEditComponent from "./SponsorTimeEditComponent"; export interface SubmissionNoticeProps { // Contains functions and variables from the content script needed by the skip notice contentContainer: ContentContainer; callback: () => any; } export interface SubmissionNoticeeState { noticeTitle: string, messages: string[], idSuffix: string; } class SubmissionNoticeComponent extends React.Component { // Contains functions and variables from the content script needed by the skip notice contentContainer: ContentContainer; callback: () => any; noticeRef: React.MutableRefObject; timeEditRefs: React.RefObject[]; constructor(props: SubmissionNoticeProps) { super(props); this.noticeRef = React.createRef(); this.contentContainer = props.contentContainer; this.callback = props.callback; let noticeTitle = chrome.i18n.getMessage("confirmNoticeTitle"); // Setup state this.state = { noticeTitle, messages: [], idSuffix: "SubmissionNotice" } } render() { let noticeStyle: React.CSSProperties = {}; if (this.contentContainer().onMobileYouTube) { noticeStyle.bottom = "4em"; noticeStyle.transform = "scale(0.8) translate(10%, 10%)"; } return ( {/* Text Boxes */} {this.getMessageBoxes()} {/* Sponsor Time List */} {this.getSponsorTimeMessages()} {/* Last Row */} {/* Cancel Button */} {/* Submit Button */} ); } getSponsorTimeMessages(): JSX.Element[] | JSX.Element { let elements: JSX.Element[] = []; this.timeEditRefs = []; let sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting; for (let i = 0; i < sponsorTimes.length; i++) { let timeRef = React.createRef(); elements.push( ); this.timeEditRefs.push(timeRef); } return elements; } getMessageBoxes(): JSX.Element[] | JSX.Element { let elements: JSX.Element[] = []; for (let i = 0; i < this.state.messages.length; i++) { elements.push( ); } return elements; } cancel() { this.noticeRef.current.close(true); this.contentContainer().resetSponsorSubmissionNotice(); } submit() { // save all items for (const ref of this.timeEditRefs) { ref.current.saveEditTimes(); } this.props.callback(); this.cancel(); } } export default SubmissionNoticeComponent;