import React from 'react'; import axios from 'axios'; import './Downloader.scss'; interface Props { } interface State { fileType: string; url: string; message: string; downloadLink: string; downLoadFileName: string; dataLoading: boolean; dataLoaded: boolean; } export class Downloader extends React.Component { constructor(props: Props) { super(props); this.state = { fileType: "mp3", url: "", message: "", dataLoaded: false, downloadLink: "", downLoadFileName: "", dataLoading: false, }; } sendRequest() { if (this.state.url === "") { this.setState({ message: "Invalid URL", }); return; } this.setState({ message: "", url: "", dataLoaded: false, dataLoading: true, }); axios.get(`/ytdownloader`, { params: { fileType: this.state.fileType, url: this.state.url, } }).then((res) => { this.setState({ dataLoaded: true, dataLoading: false, downloadLink: `/public/youtube/${res.data.fileName}`, downLoadFileName: res.data.fileName, }); }).catch(() => { this.setState({ message: "Internal error.", dataLoading: false, }); }); } render() { return (
Youtube to MP3
this.setState({url: event.target.value})}/> {/*
*/}
{this.state.message !== "" &&
{this.state.message}
} {this.state.dataLoaded && {this.state.downLoadFileName}}
); } }