import * as React from "react"; import Config from "../../config"; import { exportTimes, exportTimesAsHashParam } from "../../utils/exporter"; export interface UnsubmittedVideosListItemProps { videoID: string; children?: React.ReactNode; } export interface UnsubmittedVideosListItemState { } class UnsubmittedVideoListItem extends React.Component { constructor(props: UnsubmittedVideosListItemProps) { super(props); // Setup state this.state = { }; } render(): React.ReactElement { const segmentCount = Config.config.unsubmittedSegments[this.props.videoID]?.length ?? 0; return ( <> {this.props.videoID} {segmentCount}
{chrome.i18n.getMessage("exportSegments")}
{" "}
{chrome.i18n.getMessage("exportSegmentsAsURL")}
{" "}
{chrome.i18n.getMessage("clearTimes")}
); } clearSegments(): void { if (confirm(chrome.i18n.getMessage("clearThis"))) { delete Config.config.unsubmittedSegments[this.props.videoID]; Config.forceSyncUpdate("unsubmittedSegments"); } } exportSegments(): void { this.copyToClipboard(exportTimes(Config.config.unsubmittedSegments[this.props.videoID])); } exportSegmentsAsURL(): void { this.copyToClipboard(`https://youtube.com/watch?v=${this.props.videoID}${exportTimesAsHashParam(Config.config.unsubmittedSegments[this.props.videoID])}`) } copyToClipboard(text: string): void { navigator.clipboard.writeText(text) .then(() => { alert(chrome.i18n.getMessage("CopiedExclamation")); }) .catch(() => { alert(chrome.i18n.getMessage("copyDebugInformationFailed")); }); } } export default UnsubmittedVideoListItem;