From cf6ec3da8296ecb4bdce6bc29ed0d8580d01fa22 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Wed, 5 Apr 2023 23:10:05 -0600 Subject: [PATCH 1/9] Test permission change for setting proxy --- src-tauri/src/proxy.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/proxy.rs b/src-tauri/src/proxy.rs index aa7852a..b751b21 100644 --- a/src-tauri/src/proxy.rs +++ b/src-tauri/src/proxy.rs @@ -171,7 +171,8 @@ pub fn connect_to_proxy(proxy_port: u16) { let settings = Hive::CurrentUser .open( r"Software\Microsoft\Windows\CurrentVersion\Internet Settings", - Security::Write, + // Only write should be needed but too many cases of Culti not being able to read/write proxy settings + Security::AllAccess, ) .unwrap(); @@ -218,7 +219,7 @@ pub fn disconnect_from_proxy() { let settings = Hive::CurrentUser .open( r"Software\Microsoft\Windows\CurrentVersion\Internet Settings", - Security::Write, + Security::AllAccess, ) .unwrap(); From 891dbb41aa4ea019e05435fa1d0bf4fe56ed8d0d Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Thu, 6 Apr 2023 22:32:53 -0600 Subject: [PATCH 2/9] Add delay button for 3dmigoto --- src-tauri/lang/chs.json | 3 +- src-tauri/lang/cht.json | 3 +- src-tauri/lang/de.json | 3 +- src-tauri/lang/en.json | 3 +- src-tauri/lang/es.json | 3 +- src-tauri/lang/fr.json | 3 +- src-tauri/lang/id.json | 3 +- src-tauri/lang/ko.json | 3 +- src-tauri/lang/lv.json | 3 +- src-tauri/lang/nl.json | 3 +- src-tauri/lang/pt-br.json | 3 +- src-tauri/lang/ru.json | 3 +- src-tauri/lang/vi.json | 3 +- src-tauri/src/main.rs | 1 + src-tauri/src/system_helpers.rs | 36 ++++++++++++++++++++++ src/ui/components/common/DirInput.css | 2 +- src/ui/components/common/SmallButton.css | 32 +++++++++++++++++++ src/ui/components/common/SmallButton.tsx | 39 ++++++++++++++++++++++++ src/ui/components/menu/Options.tsx | 10 ++++++ 19 files changed, 145 insertions(+), 14 deletions(-) create mode 100644 src/ui/components/common/SmallButton.css create mode 100644 src/ui/components/common/SmallButton.tsx diff --git a/src-tauri/lang/chs.json b/src-tauri/lang/chs.json index d80490f..b3badeb 100644 --- a/src-tauri/lang/chs.json +++ b/src-tauri/lang/chs.json @@ -76,7 +76,8 @@ "resources": "资源文件在运行 Grasscutter 服务器时是必要的。此选项在已经存在资源文件时不可选。", "emergency_rsa": "在出现意外情况时自动将 RSA 恢复到原始版本", "use_proxy": "使用 Cultivation 的内置代理。除非你使用 Fiddler 等软件,否则应启用此项。", - "patch_rsa": "自动修改和恢复 RSA 补丁。 除非您玩的是旧版/非官方版本,或者您手动修改了 RSA,否则应该启用此功能。" + "patch_rsa": "自动修改和恢复 RSA 补丁。 除非您玩的是旧版/非官方版本,或者您手动修改了 RSA,否则应该启用此功能。", + "add_delay": "在 3dmigoto 加载程序中设置延迟! \n这应该可以解决加载问题,但会在启动游戏时加载 3dmigoto 时增加一点延迟。 \n您现在可以再次使用 3dmigoto 启动。" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/cht.json b/src-tauri/lang/cht.json index 74642f0..2904049 100644 --- a/src-tauri/lang/cht.json +++ b/src-tauri/lang/cht.json @@ -76,7 +76,8 @@ "resources": "資源文件在架設一個Grasscutter伺服器時是必要的。 這個選項會在您已經有裡面有檔案的資源資料夾時不可選。", "emergency_rsa": "一旦有東西出了問題,此選項可以把您的rsa恢復成官方版本。", "use_proxy": "使用Cultivation內建的代理伺服器。此選項應該被啟用,除非你使用其他的代理伺服器。", - "patch_rsa": "自動修補和恢復RSA。除非您的遊戲版本是舊的或者是非官方的,此選項應該被啟用。" + "patch_rsa": "自動修補和恢復RSA。除非您的遊戲版本是舊的或者是非官方的,此選項應該被啟用。", + "add_delay": "在 3dmigoto 加載程序中設置延遲! \n這應該可以解決加載問題,但會在啟動遊戲時加載 3dmigoto 時增加一點延遲。 \n您現在可以再次使用 3dmigoto 啟動。" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/de.json b/src-tauri/lang/de.json index 991a4cf..73af904 100644 --- a/src-tauri/lang/de.json +++ b/src-tauri/lang/de.json @@ -74,7 +74,8 @@ "resources": "Diese werden auch benötigt, um einen Grasscutter-Server auszuführen. Diese Schaltfläche ist grau, wenn Sie einen bestehenden Ressourcenordner mit Inhalten haben", "emergency_rsa": "Im Fall, dass etwas schief laufen sollte, kannst du deine RSA auf die letzte offizielle Version zurücksetzen", "use_proxy": "Nutze den internen Proxy von Cultivation. Du solltest dies aktivieren, es sei denn du nutzt Programme wie Fiddler", - "patch_rsa": "Patche und aktualisiere deine RSA automatisch. Solange du nicht mit einer alten/nicht offiziellen Version spielst oder deine RSA manuell gepatcht hast, sollte dies aktiviert sein." + "patch_rsa": "Patche und aktualisiere deine RSA automatisch. Solange du nicht mit einer alten/nicht offiziellen Version spielst oder deine RSA manuell gepatcht hast, sollte dies aktiviert sein.", + "add_delay": "Verzögerung im 3dmigoto-Lader einstellen! \nDies sollte die Ladeprobleme beheben, führt aber zu einer kleinen Verzögerung, wenn 3dmigoto beim Start des Spiels geladen wird. \nSie können nun wieder mit 3dmigoto starten." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/en.json b/src-tauri/lang/en.json index 755186f..e905f24 100644 --- a/src-tauri/lang/en.json +++ b/src-tauri/lang/en.json @@ -76,7 +76,8 @@ "resources": "These are also required to run a Grasscutter server. This button will be grey if you have an existing resources folder with contents inside", "emergency_rsa": "In case something went wrong, force delete RSA patch.", "use_proxy": "Use the Cultivation internal proxy. You should have this enabled unless you use something like Fiddler", - "patch_rsa": "Patch and unpatch your game RSA automatically. Unless playing with old/non-official versions (3.0 and older), this should be enabled." + "patch_rsa": "Patch and unpatch your game RSA automatically. Unless playing with old/non-official versions (3.0 and older), this should be enabled.", + "add_delay": "Set delay in 3dmigoto loader! \nThis should fix loading issues, but will add a small delay to when 3dmigoto is loaded upon launching the game. \nYou can now launch with 3dmigoto again." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/es.json b/src-tauri/lang/es.json index b7c1e66..45a9dcc 100644 --- a/src-tauri/lang/es.json +++ b/src-tauri/lang/es.json @@ -72,7 +72,8 @@ "gc_dev_jar": "Descargue la última versión de Desarrollo de Grasscutter, que incluye archivos jar y archivos de datos.", "gc_stable_data": "Descargue los archivos de Datos Estables actuales de Grasscutter, que no vienen con un archivo jar. Esto es útil para actualizar.", "gc_dev_data": "Descargue los últimos archivos de Datos de Desarrollo de Grasscutter, que no vienen con un archivo jar. Esto es útil para actualizar.", - "resources": "Estos también son necesarios para ejecutar un servidor Grasscutter. Este botón estará gris si tiene una carpeta de recursos existente con contenido dentro." + "resources": "Estos también son necesarios para ejecutar un servidor Grasscutter. Este botón estará gris si tiene una carpeta de recursos existente con contenido dentro.", + "add_delay": "¡Retraso en el cargador de 3dmigoto! \nEsto debería solucionar los problemas de carga, pero añadirá un pequeño retraso cuando 3dmigoto se cargue al iniciar el juego. \nAhora puede iniciar con 3dmigoto de nuevo." }, "swag": { "akebi": "Establecer el ejecutable de Akebi" diff --git a/src-tauri/lang/fr.json b/src-tauri/lang/fr.json index 0ae207c..1372e9c 100644 --- a/src-tauri/lang/fr.json +++ b/src-tauri/lang/fr.json @@ -71,6 +71,7 @@ "gc_dev_jar": "Telecharger le dernier build en development de Grasscutter, ce qui inclut le fichier jar et les fichiers de donnees", "gc_stable_data": "Telecharger le dernier build stable de Grasscutter, ce qui n'inclut pasle fichier jar. Cela est utile pour mettre a jour", "gc_dev_data": "Telecharger le dernier build en development de Grasscutter, ce qui n'inclut pasle fichier jar. Cela est utile pour mettre a jour", - "resources": "Les ressources sont aussi necessaires pour lancer un serveur Grasscutter. Ce bouton deviendra gris si vous avez deja un fichier ressources avec les donnees dedans." + "resources": "Les ressources sont aussi necessaires pour lancer un serveur Grasscutter. Ce bouton deviendra gris si vous avez deja un fichier ressources avec les donnees dedans.", + "add_delay": "Définir un délai dans le chargeur de 3dmigoto ! \nCela devrait résoudre les problèmes de chargement, mais ajoutera un petit délai au chargement de 3dmigoto lors du lancement du jeu. \nVous pouvez maintenant lancer le jeu avec 3dmigoto." } } diff --git a/src-tauri/lang/id.json b/src-tauri/lang/id.json index 48a0c45..5a2bbaf 100644 --- a/src-tauri/lang/id.json +++ b/src-tauri/lang/id.json @@ -69,6 +69,7 @@ "gc_dev_jar": "Unduh Build Development Grasscutter saat ini, Dimana Ada Jar File Dan Data File.", "gc_stable_data": "Unduh file data Grasscutter stabil saat ini, dimana Tidak Ada JAR file. Ini Berguna Untuk memperbarui.", "gc_dev_data": "Unduh file data Grasscutter Development saat ini, dimana Tidak Ada JAR file. Ini Berguna Untuk memperbarui.", - "resources": "Ini juga diperlukan untuk menjalankan server Grasscutter. Tombol ini akan berwarna abu-abu jika Anda memiliki folder Resource yang ada dengan File di dalamnya" + "resources": "Ini juga diperlukan untuk menjalankan server Grasscutter. Tombol ini akan berwarna abu-abu jika Anda memiliki folder Resource yang ada dengan File di dalamnya", + "add_delay": "Atur penundaan di pemuat 3dmigoto! \nIni akan memperbaiki masalah pemuatan, tetapi akan menambah sedikit penundaan ketika 3dmigoto dimuat saat meluncurkan game. \nAnda sekarang dapat meluncurkan dengan 3dmigoto lagi." } } diff --git a/src-tauri/lang/ko.json b/src-tauri/lang/ko.json index 4c2fd98..6ac1c17 100644 --- a/src-tauri/lang/ko.json +++ b/src-tauri/lang/ko.json @@ -76,7 +76,8 @@ "resources": "또한 Grasscutter 서버를 실행하는 데도 필요합니다. 내용이 포함된 기존 리소스 폴더가 있는 경우 이 버튼은 회색으로 표시됩니다", "emergency_rsa": "문제가 있는 경우 RSA 패치를 제거하십시오.", "use_proxy": "Culturation 내부 프록시를 사용합니다. 피들러와 같은 것을 사용하지 않는 한 이 기능을 활성화해야 합니다", - "patch_rsa": "게임 RSA를 자동으로 패치 및 패치 해제합니다. 이전/비공식 버전을 사용하거나 RSA를 수동으로 패치하지 않은 경우 이 기능을 활성화해야 합니다." + "patch_rsa": "게임 RSA를 자동으로 패치 및 패치 해제합니다. 이전/비공식 버전을 사용하거나 RSA를 수동으로 패치하지 않은 경우 이 기능을 활성화해야 합니다.", + "add_delay": "3dmigoto 로더에서 지연을 설정하세요! \n이렇게하면 로딩 문제가 해결되지만 게임을 시작할 때 3dmigoto가로드되는시기에 약간의 지연이 추가됩니다. \n이제 3dmigoto로 다시 시작할 수 있습니다." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/lv.json b/src-tauri/lang/lv.json index b693641..3303ac7 100644 --- a/src-tauri/lang/lv.json +++ b/src-tauri/lang/lv.json @@ -68,6 +68,7 @@ "gc_dev_jar": "Lejupielādējiet jaunāko izstrāde Grasscutter versiju, kuram ir jar failu un datu failus.", "gc_stable_data": "Lejupielādējiet pašreizējos stabilos Grasscutter datu failus, kuriem nav jar fails. Tas ir noderīgi atjaunināšanai.", "gc_dev_data": "Lejupielādējiet jaunāko izstrāde Grasscutter datu failus, kuriem nav pievienots jar fails. Tas ir noderīgi atjaunināšanai.", - "resources": "Tie ir nepieciešami arī Grasscutter servera darbināšanai. Šī poga būs pelēka, ja jums ir resursu mape ar saturu." + "resources": "Tie ir nepieciešami arī Grasscutter servera darbināšanai. Šī poga būs pelēka, ja jums ir resursu mape ar saturu.", + "add_delay": "Iestatiet kavēšanos 3dmigoto iekrāvē! \nTam vajadzētu novērst ielādes problēmas, bet tas nedaudz aizkavēs 3dmigoto ielādēšanu, uzsākot spēli. \nTagad atkal varat sākt ar 3dmigoto." } } diff --git a/src-tauri/lang/nl.json b/src-tauri/lang/nl.json index 7090d50..4a0cc6b 100644 --- a/src-tauri/lang/nl.json +++ b/src-tauri/lang/nl.json @@ -75,7 +75,8 @@ "resources": "Deze zijn ook nodig om een Grasscutter server te draaien. Deze knop zal grijs zijn als u een bestaande resources map heeft met inhoud erin", "emergency_rsa": "Voor het geval er iets fout is gegaan, herstel uw rsa naar de laatste offici�le versies rsa.", "use_proxy": "Gebruik de Cultivation interne proxy. U zou dit ingeschakeld moeten hebben, tenzij u iets als Fiddler gebruikt", - "patch_rsa": "Patch en unpatch je spel rsa automatisch. Tenzij je met oude/niet-offici�le versies speelt, of je hebt je rsa handmatig gepatcht, zou dit ingeschakeld moeten zijn." + "patch_rsa": "Patch en unpatch je spel rsa automatisch. Tenzij je met oude/niet-offici�le versies speelt, of je hebt je rsa handmatig gepatcht, zou dit ingeschakeld moeten zijn.", + "add_delay": "Vertraging instellen in 3dmigoto loader! \nDit zou laadproblemen moeten oplossen, maar zal een kleine vertraging toevoegen aan het laden van 3dmigoto bij het opstarten van het spel. \nJe kunt nu weer starten met 3dmigoto." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/pt-br.json b/src-tauri/lang/pt-br.json index 872faad..3197d25 100644 --- a/src-tauri/lang/pt-br.json +++ b/src-tauri/lang/pt-br.json @@ -76,7 +76,8 @@ "resources": "Esses também são necessários para usar o Grasscutter. Esse botão ficará cinza caso você já tenha uma pasta resources com coisas dentro.", "emergency_rsa": "Caso algo dê errado, força a exclusão da correção RSA.", "use_proxy": "Usa o proxy interno do Cultivation. Isso deveria estar habilitado a não ser que você utilize algo como o Fiddler.", - "patch_rsa": "Corrigir e 'descorrigir' o RSA do seu jogo automaticamente. Isso deve estar habilitado a não ser que você esteja jogando com versões antigas (3.0 ou mais antigas) ou não oficiais." + "patch_rsa": "Corrigir e 'descorrigir' o RSA do seu jogo automaticamente. Isso deve estar habilitado a não ser que você esteja jogando com versões antigas (3.0 ou mais antigas) ou não oficiais.", + "add_delay": "Atraso definido na carregadeira 3dmigoto! \nIsto deve resolver os problemas de carregamento, mas acrescentará um pequeno atraso quando o 3dmigoto for carregado no lançamento do jogo. \nAgora você pode lançar novamente com o 3dmigoto." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/ru.json b/src-tauri/lang/ru.json index 151c89b..19ed185 100644 --- a/src-tauri/lang/ru.json +++ b/src-tauri/lang/ru.json @@ -75,7 +75,8 @@ "resources": "Это необходимо для запуска сервера Grasscutter. Эта кнопка будет серой, если у Вас уже есть не пустая папка с ресурсами.", "emergency_rsa": "Если что-то пошло не так, восстановит RSA до последней официальной версии.", "use_proxy": "Использовать встроенный Прокси. Отключите если используете Fiddler или подобную программу", - "patch_rsa": "Патчит и восстанавливает RSA автоматически. Если вы не играете на старых/модифицированых версиях, или сами в ручную патчите Метаданные, эта опция должна быть включена." + "patch_rsa": "Патчит и восстанавливает RSA автоматически. Если вы не играете на старых/модифицированых версиях, или сами в ручную патчите Метаданные, эта опция должна быть включена.", + "add_delay": "Установите задержку в загрузчике 3dmigoto! \nЭто должно исправить проблемы с загрузкой, но добавит небольшую задержку в момент загрузки 3dmigoto при запуске игры. \nТеперь вы снова можете запускать игру с помощью 3dmigoto." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/vi.json b/src-tauri/lang/vi.json index 23ade69..11eced5 100644 --- a/src-tauri/lang/vi.json +++ b/src-tauri/lang/vi.json @@ -76,7 +76,8 @@ "resources": "Tài nguyên được yêu cầu để chạy máy chủ Grasscutter. Nút này sẽ có màu xám nếu bạn đã có sẵn một thư mục tài nguyên (resources) có nội dung bên trong", "emergency_rsa": "Trong trường hợp gặp vấn đề, khôi phục lại RSA về phiên bản chính thức mới nhất.", "use_proxy": "Sử dụng proxy nội bộ của Cultivation. Nên bật tùy chọn này trừ khi bạn đang sử dụng một ứng dụng khác, như Fiddler", - "patch_rsa": "Tự động vá và sửa lại RSA của game. Tùy chọn này nên được bật trừ khi bạn đang sử dụng phiên bản cũ, phiên bản không chính thức hoặc bạn đã tự vá rsa rồi." + "patch_rsa": "Tự động vá và sửa lại RSA của game. Tùy chọn này nên được bật trừ khi bạn đang sử dụng phiên bản cũ, phiên bản không chính thức hoặc bạn đã tự vá rsa rồi.", + "add_delay": "Đặt độ trễ trong trình tải 3dmigoto! \nĐiều này sẽ khắc phục sự cố tải, nhưng sẽ thêm một độ trễ nhỏ khi 3dmigoto được tải khi khởi chạy trò chơi. \nBây giờ bạn có thể khởi chạy lại với 3dmigoto." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index c2e0fe7..163b11f 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -102,6 +102,7 @@ fn main() { system_helpers::install_location, system_helpers::is_elevated, system_helpers::set_migoto_target, + system_helpers::set_migoto_delay, system_helpers::wipe_registry, system_helpers::get_platform, proxy::set_proxy_addr, diff --git a/src-tauri/src/system_helpers.rs b/src-tauri/src/system_helpers.rs index bed704e..a681ecd 100644 --- a/src-tauri/src/system_helpers.rs +++ b/src-tauri/src/system_helpers.rs @@ -134,6 +134,42 @@ pub fn set_migoto_target(window: tauri::Window, migoto_path: String) -> bool { } } +#[tauri::command] +pub fn set_migoto_delay(migoto_path: String) -> bool { + let mut migoto_pathbuf = PathBuf::from(migoto_path); + + migoto_pathbuf.pop(); + migoto_pathbuf.push("d3dx.ini"); + + let mut conf = match Ini::load_from_file(&migoto_pathbuf) { + Ok(c) => { + println!("Loaded migoto ini"); + c + } + Err(e) => { + println!("Error loading migoto config: {}", e); + return false; + } + }; + + // Set options + conf + .with_section(Some("Loader")) + .set("delay", "20"); + + // Write file + match conf.write_to_file(&migoto_pathbuf) { + Ok(_) => { + println!("Wrote delay!"); + true + } + Err(e) => { + println!("Error writing delay: {}", e); + false + } + } +} + #[cfg(windows)] #[tauri::command] pub fn wipe_registry(exec_name: String) { diff --git a/src/ui/components/common/DirInput.css b/src/ui/components/common/DirInput.css index 5d88404..b15c927 100644 --- a/src/ui/components/common/DirInput.css +++ b/src/ui/components/common/DirInput.css @@ -1,5 +1,5 @@ .DirInput { - display: flex; + display:inline-flex; flex-direction: row; align-items: center; justify-content: center; diff --git a/src/ui/components/common/SmallButton.css b/src/ui/components/common/SmallButton.css new file mode 100644 index 0000000..051fa03 --- /dev/null +++ b/src/ui/components/common/SmallButton.css @@ -0,0 +1,32 @@ +.SmallButtonSection { + display: inline-block; + margin-left: 20px; + vertical-align: middle; +} + +.SmallButtonButton { + height: 20px; + filter: drop-shadow(0px 0px 5px rgb(0 0 0 / 20%)); +} + +.SmallButtonButton:hover { + cursor: pointer; +} + +.SmallButtonButton img { + height: 100%; +} + +.SmallButtonContents { + text-align: center; + position: relative; +} + +.SmallButtonContents .MiniDialog { + position: absolute; + + bottom: 40px; + right: -450%; + width: 200px; + height: 120px; +} diff --git a/src/ui/components/common/SmallButton.tsx b/src/ui/components/common/SmallButton.tsx new file mode 100644 index 0000000..4fafd04 --- /dev/null +++ b/src/ui/components/common/SmallButton.tsx @@ -0,0 +1,39 @@ +import React from 'react' + +import './SmallButton.css' +import Wrench from '../../../resources/icons/wrench.svg' +import { translate } from '../../../utils/language' + +interface IProps { + children?: React.ReactNode[] | React.ReactNode + onClick: () => unknown + id?: string + contents?: string +} + +export default class SmallButton extends React.Component { + constructor(props: IProps) { + super(props) + + this.handleClick = this.handleClick.bind(this) + } + + async showAlert() { + if (this.props.contents) alert(await translate(this.props.contents)) + } + + handleClick() { + this.props.onClick() + this.showAlert() + } + + render() { + return ( +
+
+ +
+
+ ) + } +} diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index 1d0a9b3..f78fa68 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -16,6 +16,7 @@ import DownloadHandler from '../../../utils/download' import * as meta from '../../../utils/rsa' import HelpButton from '../common/HelpButton' import TextInput from '../common/TextInput' +import SmallButton from '../common/SmallButton' interface IProps { closeFn: () => void @@ -85,6 +86,7 @@ export default class Options extends React.Component { this.setCustomBackground = this.setCustomBackground.bind(this) this.toggleEncryption = this.toggleEncryption.bind(this) this.removeRSA = this.removeRSA.bind(this) + this.addMigotoDelay = this.addMigotoDelay.bind(this) } async componentDidMount() { @@ -278,6 +280,12 @@ export default class Options extends React.Component { await meta.unpatchGame() } + async addMigotoDelay() { + invoke('set_migoto_delay', { + migotoPath: this.state.migoto_path, + }) + } + async installCert() { await invoke('generate_ca_files', { path: (await dataDir()) + 'cultivation', @@ -422,6 +430,8 @@ export default class Options extends React.Component { From db11cf7907546e0b30c7bf419c30bb709bbd36d5 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Thu, 6 Apr 2023 23:29:31 -0600 Subject: [PATCH 3/9] Change encryption to checkbox --- src/ui/components/menu/Options.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index f78fa68..d2b7948 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -111,7 +111,7 @@ export default class Options extends React.Component { bg_url_or_path: config.customBackground || '', themes: (await getThemeList()).map((t) => t.name), theme: config.theme || 'default', - encryption: await translate(encEnabled ? 'options.enabled' : 'options.disabled'), + encryption: encEnabled || false, patch_rsa: config.patch_rsa || false, use_internal_proxy: config.use_internal_proxy || false, wipe_login: config.wipe_login || false, @@ -162,7 +162,7 @@ export default class Options extends React.Component { // Update encryption button when setting new jar this.setState({ - encryption: await translate(encEnabled ? 'options.enabled' : 'options.disabled'), + encryption: encEnabled, }) window.location.reload() @@ -264,8 +264,8 @@ export default class Options extends React.Component { await server.toggleEncryption(folderPath + '/config.json') this.setState({ - encryption: await translate( - (await server.encryptionEnabled(folderPath + '/config.json')) ? 'options.enabled' : 'options.disabled' + encryption: ( + (await server.encryptionEnabled(folderPath + '/config.json')) ), }) @@ -399,9 +399,11 @@ export default class Options extends React.Component { + + {this.state.swag && ( + <> + +
+ +
+
+
+ + +
+
+ + + +
+
+ + )} ) } diff --git a/src/utils/download.ts b/src/utils/download.ts index c9ed7c6..496e6b6 100644 --- a/src/utils/download.ts +++ b/src/utils/download.ts @@ -117,6 +117,10 @@ export default class DownloadHandler { downloadingRepo() { return this.downloads.some((d) => d.path.includes('grasscutter_repo.zip')) } + + downloadingMigoto() { + return this.downloads.some((d) => d.path.includes('3dmigoto')) + } addDownload(url: string, path: string, onFinish?: () => void) { // Begin download from rust backend, don't add if the download addition fails From 82f40186fe1123210e7bec60542caaa98401d035 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Fri, 7 Apr 2023 10:41:16 -0600 Subject: [PATCH 6/9] Translations for new help text --- src-tauri/lang/chs.json | 4 +++- src-tauri/lang/cht.json | 3 ++- src-tauri/lang/de.json | 3 ++- src-tauri/lang/es.json | 3 ++- src-tauri/lang/fr.json | 3 ++- src-tauri/lang/id.json | 3 ++- src-tauri/lang/ko.json | 3 ++- src-tauri/lang/lv.json | 3 ++- src-tauri/lang/nl.json | 3 ++- src-tauri/lang/pt-br.json | 3 ++- src-tauri/lang/ru.json | 3 ++- src-tauri/lang/vi.json | 3 ++- 12 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src-tauri/lang/chs.json b/src-tauri/lang/chs.json index 264e72c..59379bc 100644 --- a/src-tauri/lang/chs.json +++ b/src-tauri/lang/chs.json @@ -79,7 +79,9 @@ "emergency_rsa": "在出现意外情况时自动将 RSA 恢复到原始版本", "use_proxy": "使用 Cultivation 的内置代理。除非你使用 Fiddler 等软件,否则应启用此项。", "patch_rsa": "自动修改和恢复 RSA 补丁。 除非您玩的是旧版/非官方版本,或者您手动修改了 RSA,否则应该启用此功能。", - "add_delay": "在 3dmigoto 加载程序中设置延迟! \n这应该可以解决加载问题,但会在启动游戏时加载 3dmigoto 时增加一点延迟。 \n您现在可以再次使用 3dmigoto 启动。" + "add_delay": "在 3dmigoto 加载程序中设置延迟! \n这应该可以解决加载问题,但会在启动游戏时加载 3dmigoto 时增加一点延迟。 \n您现在可以再次使用 3dmigoto 启动。", + "migoto": "用于从 GameBanana 导入模型" + }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/cht.json b/src-tauri/lang/cht.json index ee42a02..0d1b080 100644 --- a/src-tauri/lang/cht.json +++ b/src-tauri/lang/cht.json @@ -79,7 +79,8 @@ "emergency_rsa": "一旦有東西出了問題,此選項可以把您的rsa恢復成官方版本。", "use_proxy": "使用Cultivation內建的代理伺服器。此選項應該被啟用,除非你使用其他的代理伺服器。", "patch_rsa": "自動修補和恢復RSA。除非您的遊戲版本是舊的或者是非官方的,此選項應該被啟用。", - "add_delay": "在 3dmigoto 加載程序中設置延遲! \n這應該可以解決加載問題,但會在啟動遊戲時加載 3dmigoto 時增加一點延遲。 \n您現在可以再次使用 3dmigoto 啟動。" + "add_delay": "在 3dmigoto 加載程序中設置延遲! \n這應該可以解決加載問題,但會在啟動遊戲時加載 3dmigoto 時增加一點延遲。 \n您現在可以再次使用 3dmigoto 啟動。", + "migoto": "用於從 GameBanana 導入模型" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/de.json b/src-tauri/lang/de.json index f605e83..4bc9402 100644 --- a/src-tauri/lang/de.json +++ b/src-tauri/lang/de.json @@ -77,7 +77,8 @@ "emergency_rsa": "Im Fall, dass etwas schief laufen sollte, kannst du deine RSA auf die letzte offizielle Version zurücksetzen", "use_proxy": "Nutze den internen Proxy von Cultivation. Du solltest dies aktivieren, es sei denn du nutzt Programme wie Fiddler", "patch_rsa": "Patche und aktualisiere deine RSA automatisch. Solange du nicht mit einer alten/nicht offiziellen Version spielst oder deine RSA manuell gepatcht hast, sollte dies aktiviert sein.", - "add_delay": "Verzögerung im 3dmigoto-Lader einstellen! \nDies sollte die Ladeprobleme beheben, führt aber zu einer kleinen Verzögerung, wenn 3dmigoto beim Start des Spiels geladen wird. \nSie können nun wieder mit 3dmigoto starten." + "add_delay": "Verzögerung im 3dmigoto-Lader einstellen! \nDies sollte die Ladeprobleme beheben, führt aber zu einer kleinen Verzögerung, wenn 3dmigoto beim Start des Spiels geladen wird. \nSie können nun wieder mit 3dmigoto starten.", + "migoto": "Zum Importieren von Modellen von GameBanana" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/es.json b/src-tauri/lang/es.json index ffdf1ff..0a5bec5 100644 --- a/src-tauri/lang/es.json +++ b/src-tauri/lang/es.json @@ -75,7 +75,8 @@ "gc_stable_data": "Descargue los archivos de Datos Estables actuales de Grasscutter, que no vienen con un archivo jar. Esto es útil para actualizar.", "gc_dev_data": "Descargue los últimos archivos de Datos de Desarrollo de Grasscutter, que no vienen con un archivo jar. Esto es útil para actualizar.", "resources": "Estos también son necesarios para ejecutar un servidor Grasscutter. Este botón estará gris si tiene una carpeta de recursos existente con contenido dentro.", - "add_delay": "¡Retraso en el cargador de 3dmigoto! \nEsto debería solucionar los problemas de carga, pero añadirá un pequeño retraso cuando 3dmigoto se cargue al iniciar el juego. \nAhora puede iniciar con 3dmigoto de nuevo." + "add_delay": "¡Retraso en el cargador de 3dmigoto! \nEsto debería solucionar los problemas de carga, pero añadirá un pequeño retraso cuando 3dmigoto se cargue al iniciar el juego. \nAhora puede iniciar con 3dmigoto de nuevo.", + "migoto": "Para importar modelos de GameBanana" }, "swag": { "akebi": "Establecer el ejecutable de Akebi" diff --git a/src-tauri/lang/fr.json b/src-tauri/lang/fr.json index dcc03f6..43a2dbd 100644 --- a/src-tauri/lang/fr.json +++ b/src-tauri/lang/fr.json @@ -74,6 +74,7 @@ "gc_stable_data": "Telecharger le dernier build stable de Grasscutter, ce qui n'inclut pasle fichier jar. Cela est utile pour mettre a jour", "gc_dev_data": "Telecharger le dernier build en development de Grasscutter, ce qui n'inclut pasle fichier jar. Cela est utile pour mettre a jour", "resources": "Les ressources sont aussi necessaires pour lancer un serveur Grasscutter. Ce bouton deviendra gris si vous avez deja un fichier ressources avec les donnees dedans.", - "add_delay": "Définir un délai dans le chargeur de 3dmigoto ! \nCela devrait résoudre les problèmes de chargement, mais ajoutera un petit délai au chargement de 3dmigoto lors du lancement du jeu. \nVous pouvez maintenant lancer le jeu avec 3dmigoto." + "add_delay": "Définir un délai dans le chargeur de 3dmigoto ! \nCela devrait résoudre les problèmes de chargement, mais ajoutera un petit délai au chargement de 3dmigoto lors du lancement du jeu. \nVous pouvez maintenant lancer le jeu avec 3dmigoto.", + "migoto": "Pour importer des modèles depuis GameBanana" } } diff --git a/src-tauri/lang/id.json b/src-tauri/lang/id.json index 45c8609..a56e70a 100644 --- a/src-tauri/lang/id.json +++ b/src-tauri/lang/id.json @@ -72,6 +72,7 @@ "gc_stable_data": "Unduh file data Grasscutter stabil saat ini, dimana Tidak Ada JAR file. Ini Berguna Untuk memperbarui.", "gc_dev_data": "Unduh file data Grasscutter Development saat ini, dimana Tidak Ada JAR file. Ini Berguna Untuk memperbarui.", "resources": "Ini juga diperlukan untuk menjalankan server Grasscutter. Tombol ini akan berwarna abu-abu jika Anda memiliki folder Resource yang ada dengan File di dalamnya", - "add_delay": "Atur penundaan di pemuat 3dmigoto! \nIni akan memperbaiki masalah pemuatan, tetapi akan menambah sedikit penundaan ketika 3dmigoto dimuat saat meluncurkan game. \nAnda sekarang dapat meluncurkan dengan 3dmigoto lagi." + "add_delay": "Atur penundaan di pemuat 3dmigoto! \nIni akan memperbaiki masalah pemuatan, tetapi akan menambah sedikit penundaan ketika 3dmigoto dimuat saat meluncurkan game. \nAnda sekarang dapat meluncurkan dengan 3dmigoto lagi.", + "migoto": "Untuk mengimpor model dari GameBanana" } } diff --git a/src-tauri/lang/ko.json b/src-tauri/lang/ko.json index 33a7e8a..872c4f8 100644 --- a/src-tauri/lang/ko.json +++ b/src-tauri/lang/ko.json @@ -79,7 +79,8 @@ "emergency_rsa": "문제가 있는 경우 RSA 패치를 제거하십시오.", "use_proxy": "Culturation 내부 프록시를 사용합니다. 피들러와 같은 것을 사용하지 않는 한 이 기능을 활성화해야 합니다", "patch_rsa": "게임 RSA를 자동으로 패치 및 패치 해제합니다. 이전/비공식 버전을 사용하거나 RSA를 수동으로 패치하지 않은 경우 이 기능을 활성화해야 합니다.", - "add_delay": "3dmigoto 로더에서 지연을 설정하세요! \n이렇게하면 로딩 문제가 해결되지만 게임을 시작할 때 3dmigoto가로드되는시기에 약간의 지연이 추가됩니다. \n이제 3dmigoto로 다시 시작할 수 있습니다." + "add_delay": "3dmigoto 로더에서 지연을 설정하세요! \n이렇게하면 로딩 문제가 해결되지만 게임을 시작할 때 3dmigoto가로드되는시기에 약간의 지연이 추가됩니다. \n이제 3dmigoto로 다시 시작할 수 있습니다.", + "migoto": "GameBanana에서 모델 가져오기" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/lv.json b/src-tauri/lang/lv.json index 8915d2f..d8fa91b 100644 --- a/src-tauri/lang/lv.json +++ b/src-tauri/lang/lv.json @@ -71,6 +71,7 @@ "gc_stable_data": "Lejupielādējiet pašreizējos stabilos Grasscutter datu failus, kuriem nav jar fails. Tas ir noderīgi atjaunināšanai.", "gc_dev_data": "Lejupielādējiet jaunāko izstrāde Grasscutter datu failus, kuriem nav pievienots jar fails. Tas ir noderīgi atjaunināšanai.", "resources": "Tie ir nepieciešami arī Grasscutter servera darbināšanai. Šī poga būs pelēka, ja jums ir resursu mape ar saturu.", - "add_delay": "Iestatiet kavēšanos 3dmigoto iekrāvē! \nTam vajadzētu novērst ielādes problēmas, bet tas nedaudz aizkavēs 3dmigoto ielādēšanu, uzsākot spēli. \nTagad atkal varat sākt ar 3dmigoto." + "add_delay": "Iestatiet kavēšanos 3dmigoto iekrāvē! \nTam vajadzētu novērst ielādes problēmas, bet tas nedaudz aizkavēs 3dmigoto ielādēšanu, uzsākot spēli. \nTagad atkal varat sākt ar 3dmigoto.", + "migoto": "Modeļu importēšanai no GameBanana" } } diff --git a/src-tauri/lang/nl.json b/src-tauri/lang/nl.json index 833fbf4..20aac3a 100644 --- a/src-tauri/lang/nl.json +++ b/src-tauri/lang/nl.json @@ -78,7 +78,8 @@ "emergency_rsa": "Voor het geval er iets fout is gegaan, herstel uw rsa naar de laatste offici�le versies rsa.", "use_proxy": "Gebruik de Cultivation interne proxy. U zou dit ingeschakeld moeten hebben, tenzij u iets als Fiddler gebruikt", "patch_rsa": "Patch en unpatch je spel rsa automatisch. Tenzij je met oude/niet-offici�le versies speelt, of je hebt je rsa handmatig gepatcht, zou dit ingeschakeld moeten zijn.", - "add_delay": "Vertraging instellen in 3dmigoto loader! \nDit zou laadproblemen moeten oplossen, maar zal een kleine vertraging toevoegen aan het laden van 3dmigoto bij het opstarten van het spel. \nJe kunt nu weer starten met 3dmigoto." + "add_delay": "Vertraging instellen in 3dmigoto loader! \nDit zou laadproblemen moeten oplossen, maar zal een kleine vertraging toevoegen aan het laden van 3dmigoto bij het opstarten van het spel. \nJe kunt nu weer starten met 3dmigoto.", + "migoto": "Voor het importeren van modellen uit GameBanana" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/pt-br.json b/src-tauri/lang/pt-br.json index e8f1932..555337f 100644 --- a/src-tauri/lang/pt-br.json +++ b/src-tauri/lang/pt-br.json @@ -79,7 +79,8 @@ "emergency_rsa": "Caso algo dê errado, força a exclusão da correção RSA.", "use_proxy": "Usa o proxy interno do Cultivation. Isso deveria estar habilitado a não ser que você utilize algo como o Fiddler.", "patch_rsa": "Corrigir e 'descorrigir' o RSA do seu jogo automaticamente. Isso deve estar habilitado a não ser que você esteja jogando com versões antigas (3.0 ou mais antigas) ou não oficiais.", - "add_delay": "Atraso definido na carregadeira 3dmigoto! \nIsto deve resolver os problemas de carregamento, mas acrescentará um pequeno atraso quando o 3dmigoto for carregado no lançamento do jogo. \nAgora você pode lançar novamente com o 3dmigoto." + "add_delay": "Atraso definido na carregadeira 3dmigoto! \nIsto deve resolver os problemas de carregamento, mas acrescentará um pequeno atraso quando o 3dmigoto for carregado no lançamento do jogo. \nAgora você pode lançar novamente com o 3dmigoto.", + "migoto": "Para importação de modelos da GameBanana" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/ru.json b/src-tauri/lang/ru.json index 42b3e52..c637ee8 100644 --- a/src-tauri/lang/ru.json +++ b/src-tauri/lang/ru.json @@ -78,7 +78,8 @@ "emergency_rsa": "Если что-то пошло не так, восстановит RSA до последней официальной версии.", "use_proxy": "Использовать встроенный Прокси. Отключите если используете Fiddler или подобную программу", "patch_rsa": "Патчит и восстанавливает RSA автоматически. Если вы не играете на старых/модифицированых версиях, или сами в ручную патчите Метаданные, эта опция должна быть включена.", - "add_delay": "Установите задержку в загрузчике 3dmigoto! \nЭто должно исправить проблемы с загрузкой, но добавит небольшую задержку в момент загрузки 3dmigoto при запуске игры. \nТеперь вы снова можете запускать игру с помощью 3dmigoto." + "add_delay": "Установите задержку в загрузчике 3dmigoto! \nЭто должно исправить проблемы с загрузкой, но добавит небольшую задержку в момент загрузки 3dmigoto при запуске игры. \nТеперь вы снова можете запускать игру с помощью 3dmigoto.", + "migoto": "Для импорта моделей из GameBanana" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/vi.json b/src-tauri/lang/vi.json index 7f51bc6..b664a29 100644 --- a/src-tauri/lang/vi.json +++ b/src-tauri/lang/vi.json @@ -79,7 +79,8 @@ "emergency_rsa": "Trong trường hợp gặp vấn đề, khôi phục lại RSA về phiên bản chính thức mới nhất.", "use_proxy": "Sử dụng proxy nội bộ của Cultivation. Nên bật tùy chọn này trừ khi bạn đang sử dụng một ứng dụng khác, như Fiddler", "patch_rsa": "Tự động vá và sửa lại RSA của game. Tùy chọn này nên được bật trừ khi bạn đang sử dụng phiên bản cũ, phiên bản không chính thức hoặc bạn đã tự vá rsa rồi.", - "add_delay": "Đặt độ trễ trong trình tải 3dmigoto! \nĐiều này sẽ khắc phục sự cố tải, nhưng sẽ thêm một độ trễ nhỏ khi 3dmigoto được tải khi khởi chạy trò chơi. \nBây giờ bạn có thể khởi chạy lại với 3dmigoto." + "add_delay": "Đặt độ trễ trong trình tải 3dmigoto! \nĐiều này sẽ khắc phục sự cố tải, nhưng sẽ thêm một độ trễ nhỏ khi 3dmigoto được tải khi khởi chạy trò chơi. \nBây giờ bạn có thể khởi chạy lại với 3dmigoto.", + "migoto": "Để nhập mô hình từ GameBanana" }, "swag": { "akebi_name": "Akebi", From 19db69646fa6c28d6f44e545be757b9e3f01b164 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Fri, 7 Apr 2023 10:42:30 -0600 Subject: [PATCH 7/9] Remove whitespace --- src-tauri/lang/chs.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src-tauri/lang/chs.json b/src-tauri/lang/chs.json index 59379bc..9ac180a 100644 --- a/src-tauri/lang/chs.json +++ b/src-tauri/lang/chs.json @@ -81,7 +81,6 @@ "patch_rsa": "自动修改和恢复 RSA 补丁。 除非您玩的是旧版/非官方版本,或者您手动修改了 RSA,否则应该启用此功能。", "add_delay": "在 3dmigoto 加载程序中设置延迟! \n这应该可以解决加载问题,但会在启动游戏时加载 3dmigoto 时增加一点延迟。 \n您现在可以再次使用 3dmigoto 启动。", "migoto": "用于从 GameBanana 导入模型" - }, "swag": { "akebi_name": "Akebi", From 68f0cce154cc6f212aae170bb081b5b7fd1f5970 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Fri, 7 Apr 2023 11:23:00 -0600 Subject: [PATCH 8/9] Run prettier --- src/ui/components/common/DirInput.css | 2 +- src/ui/components/menu/Downloads.tsx | 16 ++++++---------- src/ui/components/menu/Options.tsx | 13 +++---------- src/ui/components/mods/ModTile.tsx | 6 +++--- src/utils/download.ts | 2 +- 5 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/ui/components/common/DirInput.css b/src/ui/components/common/DirInput.css index b15c927..309d895 100644 --- a/src/ui/components/common/DirInput.css +++ b/src/ui/components/common/DirInput.css @@ -1,5 +1,5 @@ .DirInput { - display:inline-flex; + display: inline-flex; flex-direction: row; align-items: center; justify-content: center; diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 13a8b8c..d83ace4 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -19,7 +19,8 @@ const DEV_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/r 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://gitlab.com/YuukiPS/GC-Resources/-/archive/3.5/GC-Resources-3.5.zip' // Use Yuuki res as grasscutter crepe res are broken -const MIGOTO_DOWNLOAD = 'https://github.com/SilentNightSound/GI-Model-Importer/releases/download/V6.0/3dmigoto-GIMI-for-playing-mods.zip' +const MIGOTO_DOWNLOAD = + 'https://github.com/SilentNightSound/GI-Model-Importer/releases/download/V6.0/3dmigoto-GIMI-for-playing-mods.zip' interface IProps { closeFn: () => void @@ -125,8 +126,7 @@ export default class Downloads extends React.Component { } async getCultivationFolder() { - - const folderPath = await dataDir() + 'cultivation' + const folderPath = (await dataDir()) + 'cultivation' return folderPath } @@ -220,9 +220,9 @@ export default class Downloads extends React.Component { } async downloadMigoto() { - const folder = await this.getCultivationFolder() + '\\3dmigoto' + const folder = (await this.getCultivationFolder()) + '\\3dmigoto' await invoke('dir_create', { - path: folder + path: folder, }) this.props.downloadManager.addDownload(MIGOTO_DOWNLOAD, folder + '\\GIMI-3dmigoto.zip', async () => { @@ -382,11 +382,7 @@ export default class Downloads extends React.Component {
- +
diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index cfcd829..25168de 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -264,9 +264,7 @@ export default class Options extends React.Component { await server.toggleEncryption(folderPath + '/config.json') this.setState({ - encryption: ( - (await server.encryptionEnabled(folderPath + '/config.json')) - ), + encryption: await server.encryptionEnabled(folderPath + '/config.json'), }) // Check if Grasscutter is running, and restart if so to apply changes @@ -399,11 +397,7 @@ export default class Options extends React.Component { diff --git a/src/ui/components/mods/ModTile.tsx b/src/ui/components/mods/ModTile.tsx index d918c9d..41b0122 100644 --- a/src/ui/components/mods/ModTile.tsx +++ b/src/ui/components/mods/ModTile.tsx @@ -53,7 +53,7 @@ export class ModTile extends React.Component { // Partial mod this.setState({ modEnabled: await modIsEnabled(this.props.mod.name), - horny + horny, }) return @@ -61,7 +61,7 @@ export class ModTile extends React.Component { this.setState({ modEnabled: await modIsEnabled(String(this.props.mod.id)), - horny + horny, }) } @@ -73,7 +73,7 @@ export class ModTile extends React.Component { this.setState( { modEnabled: !this.state.modEnabled, - horny: !this.state.horny + horny: !this.state.horny, }, () => { if (this.state.modEnabled) { diff --git a/src/utils/download.ts b/src/utils/download.ts index 496e6b6..1c47ff4 100644 --- a/src/utils/download.ts +++ b/src/utils/download.ts @@ -117,7 +117,7 @@ export default class DownloadHandler { downloadingRepo() { return this.downloads.some((d) => d.path.includes('grasscutter_repo.zip')) } - + downloadingMigoto() { return this.downloads.some((d) => d.path.includes('3dmigoto')) } From 096992572c3b14843684b70d6bd9314f4fef798f Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Fri, 7 Apr 2023 13:10:00 -0600 Subject: [PATCH 9/9] Add 7z support --- src-tauri/Cargo.lock | 218 ++++++++++++++++++++++++++++++++++++----- src-tauri/Cargo.toml | 1 + src-tauri/src/unzip.rs | 23 ++++- 3 files changed, 214 insertions(+), 28 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 0b1bad7..3a89e50 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -258,6 +258,21 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bitflags" version = "1.3.2" @@ -270,6 +285,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + [[package]] name = "block-buffer" version = "0.10.2" @@ -620,6 +644,21 @@ dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" + [[package]] name = "crc32fast" version = "1.3.2" @@ -759,6 +798,7 @@ dependencies = [ "rustls-pemfile", "serde", "serde_json", + "sevenz-rust", "sudo", "sysinfo", "tauri", @@ -885,13 +925,22 @@ dependencies = [ "syn", ] +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + [[package]] name = "digest" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ - "block-buffer", + "block-buffer 0.10.2", "crypto-common", "subtle", ] @@ -1052,14 +1101,25 @@ checksum = "31a7a908b8f32538a2143e59a6e4e2508988832d5d4d6f7c156b3cbc762643a5" [[package]] name = "filetime" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" +checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" dependencies = [ "cfg-if", "libc", "redox_syscall", - "windows-sys 0.36.1", + "windows-sys 0.48.0", +] + +[[package]] +name = "filetime_creation" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d961767622336521cc48b3de810fce4edbf02d0c21079d78f3a6eeaf45b9450" +dependencies = [ + "cfg-if", + "filetime", + "windows-sys 0.48.0", ] [[package]] @@ -1567,7 +1627,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.6", ] [[package]] @@ -1907,9 +1967,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.58" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -2001,6 +2061,15 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "lzma-rust" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808dc37ccba979c213304880eadaab444bb522a5fe79acca9e90ec62377125c2" +dependencies = [ + "byteorder", +] + [[package]] name = "mac" version = "0.1.1" @@ -2663,10 +2732,10 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" dependencies = [ - "digest", + "digest 0.10.6", "hmac", "password-hash", - "sha2", + "sha2 0.10.2", ] [[package]] @@ -3619,6 +3688,22 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "sevenz-rust" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12eea80650ae08d8fe6f657d6249d757298bc7a241e00d190ac57cef0e74e02" +dependencies = [ + "bit-set", + "byteorder", + "crc", + "filetime_creation", + "js-sys", + "lzma-rust", + "sha2 0.9.9", + "wasm-bindgen", +] + [[package]] name = "sha-1" version = "0.10.1" @@ -3627,7 +3712,7 @@ checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.6", ] [[package]] @@ -3638,7 +3723,20 @@ checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.6", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", ] [[package]] @@ -3649,7 +3747,7 @@ checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.6", ] [[package]] @@ -4065,7 +4163,7 @@ dependencies = [ "semver 1.0.12", "serde", "serde_json", - "sha2", + "sha2 0.10.2", "tauri-utils", "thiserror", "time 0.3.11", @@ -4703,9 +4801,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4713,13 +4811,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", "syn", @@ -4740,9 +4838,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4750,9 +4848,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", @@ -4763,9 +4861,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "web-sys" @@ -5027,7 +5125,16 @@ version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets", + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", ] [[package]] @@ -5036,15 +5143,30 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm", + "windows_aarch64_gnullvm 0.42.2", "windows_aarch64_msvc 0.42.2", "windows_i686_gnu 0.42.2", "windows_i686_msvc 0.42.2", "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm", + "windows_x86_64_gnullvm 0.42.2", "windows_x86_64_msvc 0.42.2", ] +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + [[package]] name = "windows-tokens" version = "0.37.0" @@ -5057,6 +5179,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + [[package]] name = "windows_aarch64_msvc" version = "0.32.0" @@ -5081,6 +5209,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + [[package]] name = "windows_i686_gnu" version = "0.24.0" @@ -5111,6 +5245,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + [[package]] name = "windows_i686_msvc" version = "0.24.0" @@ -5141,6 +5281,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + [[package]] name = "windows_x86_64_gnu" version = "0.24.0" @@ -5171,12 +5317,24 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + [[package]] name = "windows_x86_64_msvc" version = "0.24.0" @@ -5207,6 +5365,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + [[package]] name = "winreg" version = "0.10.1" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a46e6d7..1832063 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -33,6 +33,7 @@ sysinfo = "0.24.6" zip-extract = "0.1.1" unrar = "0.4.4" zip = "0.6.2" +sevenz-rust = "0.2.9" # For creating a "global" downloads list. once_cell = "1.13.0" diff --git a/src-tauri/src/unzip.rs b/src-tauri/src/unzip.rs index ac16f06..bdc111c 100644 --- a/src-tauri/src/unzip.rs +++ b/src-tauri/src/unzip.rs @@ -72,6 +72,10 @@ pub fn unzip( let archive = Archive::new(zipfile.clone()); name = archive.list().unwrap().next().unwrap().unwrap().filename; + } else if zipfile.ends_with(".7z") { + success = extract_7z(&zipfile, &f, &full_path, top_level.unwrap_or(true)); + + name = String::from("banana"); } else { success = extract_zip(&zipfile, &f, &full_path, top_level.unwrap_or(true)); @@ -103,7 +107,7 @@ pub fn unzip( .unwrap(); } - if zipfile.contains("3dmigoto") { + if zipfile.contains("GIMI") { window .emit("migoto_extracted", destpath.to_string() + "3DMigoto Loader.exe") .unwrap(); @@ -175,3 +179,20 @@ fn extract_zip(_zipfile: &str, f: &File, full_path: &path::Path, top_level: bool } } } + +fn extract_7z(sevenzfile: &str, _f: &File, full_path: &path::Path, _top_level: bool) -> bool { + match sevenz_rust::decompress_file(sevenzfile, full_path) { + Ok(_) => { + println!( + "Extracted 7zip file to: {}", + full_path.to_str().unwrap_or("Error") + ); + + true + } + Err(e) => { + println!("Failed to extract 7zip file: {}", e); + false + } + } +}