mirror of
https://github.com/Grasscutters/Cultivation.git
synced 2026-02-04 09:25:16 +01:00
repo downloading
This commit is contained in:
@@ -16,8 +16,14 @@
|
|||||||
"grasscutter_with_game": "Automatically launch Grasscutter with game"
|
"grasscutter_with_game": "Automatically launch Grasscutter with game"
|
||||||
},
|
},
|
||||||
"downloads": {
|
"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_stable": "Download Grasscutter Stable",
|
||||||
"grasscutter_latest": "Download Grasscutter Latest",
|
"grasscutter_latest": "Download Grasscutter Latest",
|
||||||
|
"grasscutter_stable_update": "Update Grasscutter Stable",
|
||||||
|
"grasscutter_latest_update": "Update Grasscutter Latest",
|
||||||
"resources": "Download Grasscutter Resources"
|
"resources": "Download Grasscutter Resources"
|
||||||
},
|
},
|
||||||
"download_status": {
|
"download_status": {
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import Divider from './Divider'
|
|||||||
import { getConfigOption } from '../../../utils/configuration'
|
import { getConfigOption } from '../../../utils/configuration'
|
||||||
import { invoke } from '@tauri-apps/api'
|
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 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 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'
|
const RESOURCES_DOWNLOAD = 'https://github.com/Koko-boya/Grasscutter_Resources/archive/refs/heads/main.zip'
|
||||||
@@ -22,6 +24,7 @@ interface IProps {
|
|||||||
interface IState {
|
interface IState {
|
||||||
grasscutter_downloading: boolean
|
grasscutter_downloading: boolean
|
||||||
resources_downloading: boolean
|
resources_downloading: boolean
|
||||||
|
repo_downloading: boolean
|
||||||
grasscutter_set: boolean
|
grasscutter_set: boolean
|
||||||
resources_exist: boolean
|
resources_exist: boolean
|
||||||
}
|
}
|
||||||
@@ -33,6 +36,7 @@ export default class Downloads extends React.Component<IProps, IState> {
|
|||||||
this.state = {
|
this.state = {
|
||||||
grasscutter_downloading: this.props.downloadManager.downloadingJar(),
|
grasscutter_downloading: this.props.downloadManager.downloadingJar(),
|
||||||
resources_downloading: this.props.downloadManager.downloadingResources(),
|
resources_downloading: this.props.downloadManager.downloadingResources(),
|
||||||
|
repo_downloading: this.props.downloadManager.downloadingRepo(),
|
||||||
grasscutter_set: false,
|
grasscutter_set: false,
|
||||||
resources_exist: false
|
resources_exist: false
|
||||||
}
|
}
|
||||||
@@ -73,12 +77,33 @@ export default class Downloads extends React.Component<IProps, IState> {
|
|||||||
return folderPath
|
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() {
|
async downloadGrasscutterStable() {
|
||||||
const folder = await this.getGrasscutterFolder()
|
const folder = await this.getGrasscutterFolder()
|
||||||
this.props.downloadManager.addDownload(STABLE_DOWNLOAD, folder + '\\grasscutter.zip', () =>{
|
this.props.downloadManager.addDownload(STABLE_DOWNLOAD, folder + '\\grasscutter.zip', () =>{
|
||||||
unzip(folder + '\\grasscutter.zip', folder + '\\')
|
unzip(folder + '\\grasscutter.zip', folder + '\\')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Also add repo download
|
||||||
|
this.downloadGrasscutterStableRepo()
|
||||||
|
|
||||||
this.disableButtons()
|
this.disableButtons()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,6 +113,9 @@ export default class Downloads extends React.Component<IProps, IState> {
|
|||||||
unzip(folder + '\\grasscutter.zip', folder + '\\')
|
unzip(folder + '\\grasscutter.zip', folder + '\\')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Also add repo download
|
||||||
|
this.downloadGrasscutterDevRepo()
|
||||||
|
|
||||||
this.disableButtons()
|
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
|
// Set states since we know we are downloading something if this is called
|
||||||
this.setState({
|
this.setState({
|
||||||
grasscutter_downloading: this.props.downloadManager.downloadingJar(),
|
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">
|
<Menu closeFn={this.props.closeFn} className="Downloads" heading="Downloads">
|
||||||
<div className='DownloadMenuSection'>
|
<div className='DownloadMenuSection'>
|
||||||
<div className='DownloadLabel'>
|
<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>
|
||||||
<div className='DownloadValue'>
|
<div className='DownloadValue'>
|
||||||
<BigButton disabled={this.state.grasscutter_downloading} onClick={this.downloadGrasscutterStable} id="grasscutterStableBtn" >
|
<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>
|
||||||
<div className='DownloadMenuSection'>
|
<div className='DownloadMenuSection'>
|
||||||
<div className='DownloadLabel'>
|
<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>
|
||||||
<div className='DownloadValue'>
|
<div className='DownloadValue'>
|
||||||
<BigButton disabled={this.state.grasscutter_downloading} onClick={this.downloadGrasscutterLatest} id="grasscutterLatestBtn" >
|
<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 />
|
<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='DownloadMenuSection'>
|
||||||
<div className='DownloadLabel'>
|
<div className='DownloadLabel'>
|
||||||
<Tr text="downloads.resources" />
|
<Tr text="downloads.resources" />
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ export default class DownloadHandler {
|
|||||||
|
|
||||||
downloadingJar() {
|
downloadingJar() {
|
||||||
// Kinda hacky but it works
|
// 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() {
|
downloadingResources() {
|
||||||
@@ -93,6 +93,10 @@ export default class DownloadHandler {
|
|||||||
return this.downloads.some(d => d.path.includes('resources'))
|
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) {
|
addDownload(url: string, path: string, onFinish?: () => void) {
|
||||||
// Begin download from rust backend, don't add if the download addition fails
|
// Begin download from rust backend, don't add if the download addition fails
|
||||||
invoke('download_file', { url, path })
|
invoke('download_file', { url, path })
|
||||||
|
|||||||
Reference in New Issue
Block a user