From 4a559da58c92accced011f5ef3e75ea96271858b Mon Sep 17 00:00:00 2001 From: SpikeHD Date: Mon, 16 May 2022 18:56:48 -0700 Subject: [PATCH] repo downloading --- lang/en.json | 6 +++ src/ui/components/menu/Downloads.tsx | 70 ++++++++++++++++++++++++++-- src/utils/download.ts | 6 ++- 3 files changed, 78 insertions(+), 4 deletions(-) diff --git a/lang/en.json b/lang/en.json index 313a5bf..e6a88f8 100644 --- a/lang/en.json +++ b/lang/en.json @@ -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": { diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 5a0a2f6..a720383 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -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 { 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 { 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 { unzip(folder + '\\grasscutter.zip', folder + '\\') }) + // Also add repo download + this.downloadGrasscutterDevRepo() + this.disableButtons() } @@ -110,7 +138,8 @@ export default class Downloads extends React.Component { // 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 {
- + { + this.state.grasscutter_set ? + : + }
@@ -129,7 +161,10 @@ export default class Downloads extends React.Component {
- + { + this.state.grasscutter_set ? + : + }
@@ -140,6 +175,35 @@ export default class Downloads extends React.Component { +
+
+ { + this.state.grasscutter_set ? + : + } +
+
+ + + +
+
+
+
+ { + this.state.grasscutter_set ? + : + } +
+
+ + + +
+
+ + +
diff --git a/src/utils/download.ts b/src/utils/download.ts index 697ddcc..680bacd 100644 --- a/src/utils/download.ts +++ b/src/utils/download.ts @@ -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 })