import React from 'react'; import { axios } from '../../services'; import './downloader.scss'; interface State { fileType: string; url: string; message: string; downloadLink: string; downLoadFileName: string; dataLoading: boolean; dataLoaded: boolean; } export class Downloader extends React.Component { constructor(props: unknown) { 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(`/api/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} )}
); } }