repo downloading

This commit is contained in:
SpikeHD
2022-05-16 18:56:48 -07:00
parent 3f9aa48bc2
commit 4a559da58c
3 changed files with 78 additions and 4 deletions

View File

@@ -16,8 +16,14 @@
"grasscutter_with_game": "Automatically launch Grasscutter with game"
},
"downloads": {
"grasscutter_stable_data": "Download Grasscutter Stable Data",
"grasscutter_dev_data": "Download Grasscutter Latest Data",
"grasscutter_stable_data_update": "Update Grasscutter Stable Data",
"grasscutter_dev_data_update": "Update Grasscutter Latest Data",
"grasscutter_stable": "Download Grasscutter Stable",
"grasscutter_latest": "Download Grasscutter Latest",
"grasscutter_stable_update": "Update Grasscutter Stable",
"grasscutter_latest_update": "Update Grasscutter Latest",
"resources": "Download Grasscutter Resources"
},
"download_status": {

View File

@@ -10,6 +10,8 @@ import Divider from './Divider'
import { getConfigOption } from '../../../utils/configuration'
import { invoke } from '@tauri-apps/api'
const STABLE_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/stable.zip'
const DEV_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/development.zip'
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'
@@ -22,6 +24,7 @@ interface IProps {
interface IState {
grasscutter_downloading: boolean
resources_downloading: boolean
repo_downloading: boolean
grasscutter_set: boolean
resources_exist: boolean
}
@@ -33,6 +36,7 @@ export default class Downloads extends React.Component<IProps, IState> {
this.state = {
grasscutter_downloading: this.props.downloadManager.downloadingJar(),
resources_downloading: this.props.downloadManager.downloadingResources(),
repo_downloading: this.props.downloadManager.downloadingRepo(),
grasscutter_set: false,
resources_exist: false
}
@@ -73,12 +77,33 @@ export default class Downloads extends React.Component<IProps, IState> {
return folderPath
}
async downloadGrasscutterStableRepo() {
const folder = await this.getGrasscutterFolder()
this.props.downloadManager.addDownload(STABLE_REPO_DOWNLOAD, folder + '\\grasscutter_repo.zip', () =>{
unzip(folder + '\\grasscutter_repo.zip', folder + '\\')
})
this.disableButtons()
}
async downloadGrasscutterDevRepo() {
const folder = await this.getGrasscutterFolder()
this.props.downloadManager.addDownload(DEV_REPO_DOWNLOAD, folder + '\\grasscutter_repo.zip', () =>{
unzip(folder + '\\grasscutter_repo.zip', folder + '\\')
})
this.disableButtons()
}
async downloadGrasscutterStable() {
const folder = await this.getGrasscutterFolder()
this.props.downloadManager.addDownload(STABLE_DOWNLOAD, folder + '\\grasscutter.zip', () =>{
unzip(folder + '\\grasscutter.zip', folder + '\\')
})
// Also add repo download
this.downloadGrasscutterStableRepo()
this.disableButtons()
}
@@ -88,6 +113,9 @@ export default class Downloads extends React.Component<IProps, IState> {
unzip(folder + '\\grasscutter.zip', folder + '\\')
})
// Also add repo download
this.downloadGrasscutterDevRepo()
this.disableButtons()
}
@@ -110,7 +138,8 @@ export default class Downloads extends React.Component<IProps, IState> {
// 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()
resources_downloading: this.props.downloadManager.downloadingResources(),
repo_downloading: this.props.downloadManager.downloadingRepo()
})
}
@@ -119,7 +148,10 @@ export default class Downloads extends React.Component<IProps, IState> {
<Menu closeFn={this.props.closeFn} className="Downloads" heading="Downloads">
<div className='DownloadMenuSection'>
<div className='DownloadLabel'>
<Tr text="downloads.grasscutter_stable" />
{
this.state.grasscutter_set ?
<Tr text="downloads.grasscutter_stable_update" /> : <Tr text="downloads.grasscutter_stable" />
}
</div>
<div className='DownloadValue'>
<BigButton disabled={this.state.grasscutter_downloading} onClick={this.downloadGrasscutterStable} id="grasscutterStableBtn" >
@@ -129,7 +161,10 @@ export default class Downloads extends React.Component<IProps, IState> {
</div>
<div className='DownloadMenuSection'>
<div className='DownloadLabel'>
<Tr text="downloads.grasscutter_latest" />
{
this.state.grasscutter_set ?
<Tr text="downloads.grasscutter_latest_update" /> : <Tr text="downloads.grasscutter_latest" />
}
</div>
<div className='DownloadValue'>
<BigButton disabled={this.state.grasscutter_downloading} onClick={this.downloadGrasscutterLatest} id="grasscutterLatestBtn" >
@@ -140,6 +175,35 @@ export default class Downloads extends React.Component<IProps, IState> {
<Divider />
<div className='DownloadMenuSection'>
<div className='DownloadLabel'>
{
this.state.grasscutter_set ?
<Tr text="downloads.grasscutter_stable_data_update" /> : <Tr text="downloads.grasscutter_stable_data" />
}
</div>
<div className='DownloadValue'>
<BigButton disabled={this.state.repo_downloading} onClick={this.downloadGrasscutterStableRepo} id="grasscutterStableRepo" >
<Tr text="components.download" />
</BigButton>
</div>
</div>
<div className='DownloadMenuSection'>
<div className='DownloadLabel'>
{
this.state.grasscutter_set ?
<Tr text="downloads.grasscutter_dev_data_update" /> : <Tr text="downloads.grasscutter_dev_data" />
}
</div>
<div className='DownloadValue'>
<BigButton disabled={this.state.repo_downloading} onClick={this.downloadGrasscutterStableRepo} id="grasscutterDevRepo" >
<Tr text="components.download" />
</BigButton>
</div>
</div>
<Divider />
<div className='DownloadMenuSection'>
<div className='DownloadLabel'>
<Tr text="downloads.resources" />

View File

@@ -85,7 +85,7 @@ export default class DownloadHandler {
downloadingJar() {
// Kinda hacky but it works
return this.downloads.some(d => d.path.includes('grasscutter'))
return this.downloads.some(d => d.path.includes('grasscutter.zip'))
}
downloadingResources() {
@@ -93,6 +93,10 @@ export default class DownloadHandler {
return this.downloads.some(d => d.path.includes('resources'))
}
downloadingRepo() {
return this.downloads.some(d => d.path.includes('grasscutter_repo.zip'))
}
addDownload(url: string, path: string, onFinish?: () => void) {
// Begin download from rust backend, don't add if the download addition fails
invoke('download_file', { url, path })