mirror of
https://github.com/Grasscutters/Cultivation.git
synced 2025-12-14 16:14:48 +01:00
remove test download button
This commit is contained in:
@@ -27,19 +27,6 @@ interface IState {
|
||||
|
||||
const downloadHandler = new DownloadHandler()
|
||||
|
||||
async function download(url: string, filename: string, path: string) {
|
||||
const completePath = `${path}/${filename}`
|
||||
downloadHandler.addDownload(url, completePath)
|
||||
}
|
||||
|
||||
async function TESTDOWNLOAD() {
|
||||
download(
|
||||
'https://github.com/Koko-boya/Grasscutter_Resources/archive/refs/heads/main.zip',
|
||||
'resources.zip',
|
||||
'S:\\Cultivation'
|
||||
)
|
||||
}
|
||||
|
||||
class App extends React.Component<IProps, IState> {
|
||||
constructor(props: IProps) {
|
||||
super(props)
|
||||
@@ -90,8 +77,6 @@ class App extends React.Component<IProps, IState> {
|
||||
this.state.optionsOpen ? <Options closeFn={() => this.setState({ optionsOpen: !this.state.optionsOpen })}/> : null
|
||||
}
|
||||
|
||||
<button onClick={TESTDOWNLOAD}>download file test</button>
|
||||
|
||||
<ServerLaunchSection />
|
||||
|
||||
<div id="DownloadProgress"
|
||||
|
||||
@@ -5,22 +5,39 @@ interface IProps {
|
||||
children: React.ReactNode;
|
||||
onClick: () => any;
|
||||
id: string;
|
||||
disabled?: boolean;
|
||||
}
|
||||
|
||||
export default class BigButton extends React.Component<IProps, never> {
|
||||
interface IState {
|
||||
disabled?: boolean;
|
||||
}
|
||||
|
||||
export default class BigButton extends React.Component<IProps, IState> {
|
||||
constructor(props: IProps) {
|
||||
super(props)
|
||||
|
||||
this.state = {
|
||||
disabled: this.props.disabled
|
||||
}
|
||||
|
||||
this.handleClick = this.handleClick.bind(this)
|
||||
}
|
||||
|
||||
static getDerivedStateFromProps(props: IProps, state: IState) {
|
||||
return {
|
||||
disabled: props.disabled
|
||||
}
|
||||
}
|
||||
|
||||
handleClick() {
|
||||
if (this.state.disabled) return
|
||||
|
||||
this.props.onClick()
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div className="BigButton" onClick={this.handleClick} id={this.props.id}>
|
||||
<div className={'BigButton ' + (this.state.disabled ? 'disabled' : '')} onClick={this.handleClick} id={this.props.id}>
|
||||
<div className="BigButtonText">{this.props.children}</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.DownloadSection {
|
||||
.DownloadMenuSection {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
|
||||
@@ -6,6 +6,11 @@ import BigButton from '../common/BigButton'
|
||||
|
||||
import './Downloads.css'
|
||||
import Divider from './Divider'
|
||||
import { getConfigOption } from '../../../utils/configuration'
|
||||
|
||||
const STABLE_DOWNLOAD = 'https://nightly.link/Grasscutters/Grasscutter/workflows/build/stable/Grasscutter.zip'
|
||||
const DEV_DOWNLOAD = 'https://nightly.link/Grasscutters/Grasscutter/workflows/build/development/Grasscutter.zip'
|
||||
const RESOURCES_DOWNLOAD = 'https://github.com/Koko-boya/Grasscutter_Resources/archive/refs/heads/main.zip'
|
||||
|
||||
interface IProps {
|
||||
closeFn: () => void;
|
||||
@@ -22,30 +27,69 @@ export default class Downloads extends React.Component<IProps, IState> {
|
||||
super(props)
|
||||
|
||||
this.state = {
|
||||
grasscutter_downloading: false,
|
||||
resources_downloading: false
|
||||
grasscutter_downloading: this.props.downloadManager.downloadingJar(),
|
||||
resources_downloading: this.props.downloadManager.downloadingResources()
|
||||
}
|
||||
|
||||
this.getGrasscutterFolder = this.getGrasscutterFolder.bind(this)
|
||||
this.downloadGrasscutterStable = this.downloadGrasscutterStable.bind(this)
|
||||
this.downloadGrasscutterLatest = this.downloadGrasscutterLatest.bind(this)
|
||||
this.downloadResources = this.downloadResources.bind(this)
|
||||
}
|
||||
|
||||
async getGrasscutterFolder() {
|
||||
const path = await getConfigOption('grasscutter_path')
|
||||
let folderPath
|
||||
|
||||
if (path.includes('/')) {
|
||||
folderPath = path.substring(0, path.lastIndexOf('/'))
|
||||
} else {
|
||||
folderPath = path.substring(0, path.lastIndexOf('\\'))
|
||||
}
|
||||
|
||||
// Set states since we know we are downloading something if this is called
|
||||
this.setState({
|
||||
grasscutter_downloading: this.props.downloadManager.downloadingJar(),
|
||||
resources_downloading: this.props.downloadManager.downloadingResources()
|
||||
})
|
||||
|
||||
return folderPath
|
||||
}
|
||||
|
||||
async downloadGrasscutterStable() {
|
||||
const folder = await this.getGrasscutterFolder()
|
||||
this.props.downloadManager.addDownload(STABLE_DOWNLOAD, folder + '\\grasscutter.jar')
|
||||
}
|
||||
|
||||
async downloadGrasscutterLatest() {
|
||||
const folder = await this.getGrasscutterFolder()
|
||||
this.props.downloadManager.addDownload(DEV_DOWNLOAD, folder + '\\grasscutter.jar')
|
||||
}
|
||||
|
||||
async downloadResources() {
|
||||
const folder = await this.getGrasscutterFolder()
|
||||
this.props.downloadManager.addDownload(RESOURCES_DOWNLOAD, folder + '\\resources.zip')
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<Menu closeFn={this.props.closeFn} className="Downloads" heading="Downloads">
|
||||
<div className='DownloadSection'>
|
||||
<div className='DownloadMenuSection'>
|
||||
<div className='DownloadLabel'>
|
||||
<Tr text="downloads.grasscutter_stable" />
|
||||
</div>
|
||||
<div className='DownloadValue'>
|
||||
<BigButton onClick={() => console.log('download')} id="grasscutterStableBtn" >
|
||||
<BigButton disabled={this.state.grasscutter_downloading} onClick={this.downloadGrasscutterStable} id="grasscutterStableBtn" >
|
||||
<Tr text="components.download" />
|
||||
</BigButton>
|
||||
</div>
|
||||
</div>
|
||||
<div className='DownloadSection'>
|
||||
<div className='DownloadMenuSection'>
|
||||
<div className='DownloadLabel'>
|
||||
<Tr text="downloads.grasscutter_latest" />
|
||||
</div>
|
||||
<div className='DownloadValue'>
|
||||
<BigButton onClick={() => console.log('download')} id="grasscutterLatestBtn" >
|
||||
<BigButton disabled={this.state.grasscutter_downloading} onClick={this.downloadGrasscutterLatest} id="grasscutterLatestBtn" >
|
||||
<Tr text="components.download" />
|
||||
</BigButton>
|
||||
</div>
|
||||
@@ -53,12 +97,12 @@ export default class Downloads extends React.Component<IProps, IState> {
|
||||
|
||||
<Divider />
|
||||
|
||||
<div className='DownloadSection'>
|
||||
<div className='DownloadMenuSection'>
|
||||
<div className='DownloadLabel'>
|
||||
<Tr text="downloads.resources" />
|
||||
</div>
|
||||
<div className='DownloadValue'>
|
||||
<BigButton onClick={() => console.log('download')} id="resourcesBtn" >
|
||||
<BigButton disabled={this.state.resources_downloading} onClick={this.downloadResources} id="resourcesBtn" >
|
||||
<Tr text="components.download" />
|
||||
</BigButton>
|
||||
</div>
|
||||
|
||||
@@ -64,6 +64,16 @@ export default class DownloadHandler {
|
||||
return this.downloads
|
||||
}
|
||||
|
||||
downloadingJar() {
|
||||
// Kinda hacky but it works
|
||||
return this.downloads.some(d => d.path.includes('grasscutter'))
|
||||
}
|
||||
|
||||
downloadingResources() {
|
||||
// Kinda hacky but it works
|
||||
return this.downloads.some(d => d.path.includes('resources'))
|
||||
}
|
||||
|
||||
addDownload(url: string, path: string) {
|
||||
// Begin download from rust backend, don't add if the download addition fails
|
||||
invoke('download_file', { url, path })
|
||||
|
||||
Reference in New Issue
Block a user