From 33ddc36741c01110d524cce47c3683382315afc1 Mon Sep 17 00:00:00 2001
From: Thoronium <107363768+NotThorny@users.noreply.github.com>
Date: Wed, 5 Apr 2023 21:06:43 -0600
Subject: [PATCH 1/4] Only intercept game traffic Bump version
---
package.json | 2 +-
src-tauri/src/proxy.rs | 8 +++++++-
src-tauri/tauri.conf.json | 2 +-
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index 70c6d67..f969107 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "cultivation",
- "version": "1.0.23",
+ "version": "1.0.24",
"private": true,
"dependencies": {
"@tauri-apps/api": "^1.0.0-rc.5",
diff --git a/src-tauri/src/proxy.rs b/src-tauri/src/proxy.rs
index 20dfba2..aa7852a 100644
--- a/src-tauri/src/proxy.rs
+++ b/src-tauri/src/proxy.rs
@@ -86,7 +86,13 @@ impl HttpHandler for ProxyHandler {
}
async fn should_intercept(&mut self, _ctx: &HttpContext, _req: &Request
) -> bool {
- true
+ let uri = _req.uri().to_string();
+
+ if uri.contains("hoyoverse.com") || uri.contains("mihoyo.com") || uri.contains("yuanshen.com") {
+ true
+ } else {
+ false
+ }
}
}
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 1df0e36..f22b538 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -7,7 +7,7 @@
},
"package": {
"productName": "Cultivation",
- "version": "1.0.23"
+ "version": "1.0.24"
},
"tauri": {
"allowlist": {
From 77380e357c6183d9db994a1f29953468684df113 Mon Sep 17 00:00:00 2001
From: Thoronium <107363768+NotThorny@users.noreply.github.com>
Date: Wed, 5 Apr 2023 21:26:47 -0600
Subject: [PATCH 2/4] Show wrench instantly on setting 3dmigoto
---
src-tauri/src/system_helpers.rs | 4 +++-
src/ui/Main.tsx | 8 ++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src-tauri/src/system_helpers.rs b/src-tauri/src/system_helpers.rs
index 5eb249e..bed704e 100644
--- a/src-tauri/src/system_helpers.rs
+++ b/src-tauri/src/system_helpers.rs
@@ -97,7 +97,7 @@ pub fn install_location() -> String {
}
#[tauri::command]
-pub fn set_migoto_target(migoto_path: String) -> bool {
+pub fn set_migoto_target(window: tauri::Window, migoto_path: String) -> bool {
let mut migoto_pathbuf = PathBuf::from(migoto_path);
migoto_pathbuf.pop();
@@ -114,6 +114,8 @@ pub fn set_migoto_target(migoto_path: String) -> bool {
}
};
+ window.emit("migoto_set", &()).unwrap();
+
// Set options
conf
.with_section(Some("Loader"))
diff --git a/src/ui/Main.tsx b/src/ui/Main.tsx
index 37c50ce..61deed1 100644
--- a/src/ui/Main.tsx
+++ b/src/ui/Main.tsx
@@ -78,6 +78,14 @@ export class Main extends React.Component {
}
})
+ listen('migoto_set', async () => {
+ this.setState({
+ migotoSet: !!(await getConfigOption('migoto_path')),
+ })
+
+ window.location.reload()
+ })
+
// Emitted for automatic processes
listen('grasscutter_closed', async () => {
const autoService = await getConfigOption('auto_mongodb')
From d2e7759eec6612693fdbdea813016f96feb07dad Mon Sep 17 00:00:00 2001
From: nana <111808276+nana-qilin@users.noreply.github.com>
Date: Mon, 3 Apr 2023 10:40:19 -0300
Subject: [PATCH 3/4] Create pt-br.json
Adds a brazillian portuguese translation file.
---
src-tauri/lang/pt-br.json | 90 +++++++++++++++++++++++++++++++++++++++
1 file changed, 90 insertions(+)
create mode 100644 src-tauri/lang/pt-br.json
diff --git a/src-tauri/lang/pt-br.json b/src-tauri/lang/pt-br.json
new file mode 100644
index 0000000..cd22536
--- /dev/null
+++ b/src-tauri/lang/pt-br.json
@@ -0,0 +1,90 @@
+{
+ "lang_name": "Português Brasileiro",
+ "main": {
+ "title": "Cultivation: Edição Thorny",
+ "launch_button": "Iniciar",
+ "gc_enable": "Conectar ao Grasscutter",
+ "https_enable": "Usar HTTPS",
+ "ip_placeholder": "Endereço do Servidor...",
+ "port_placeholder": "Porta...",
+ "files_downloading": "Baixando Arquivos: ",
+ "files_extracting": "Extraindo Arquivos: "
+ },
+ "options": {
+ "enabled": "Habilitado",
+ "disabled": "Desabilitado",
+ "game_path": "Definir o Local de Instalação do Jogo",
+ "game_command": "Comando de Iniciação do Jogo",
+ "game_executable": "Definir o Executavel do Jogo",
+ "recover_rsa": "Exclusão de Emergencia de RSA",
+ "grasscutter_jar": "Definir o arquivo JAR do Grasscutter",
+ "toggle_encryption": "Ativar/Desativar Criptografia",
+ "install_certificate": "Instalar o Certificado de Proxy",
+ "java_path": "Definir um Local Customizado do Java",
+ "grasscutter_with_game": "Iniciar automaticamente o Grasscutter com o Jogo",
+ "language": "Selecionar Idioma",
+ "background": "Definir Fundo Customizado (link ou arquivo de imagem)",
+ "theme": "Definir Tema",
+ "patch_rsa": "Automaticamente Corrigir RSA",
+ "use_proxy": "Usar Proxy Interno",
+ "wipe_login": "Limpar Cache de Login",
+ "horny_mode": "Modo com tesão",
+ "auto_mongodb": "Iniciar MongoDB Automaticamente"
+ },
+ "downloads": {
+ "grasscutter_fullbuild": "Baixar o Grasscutter Tudo-em-Um",
+ "grasscutter_stable_data": "Baixar os Dados do Grasscutter Estável",
+ "grasscutter_latest_data": "Baixar os Dados do Grasscutter Mais Recente",
+ "grasscutter_stable_data_update": "Atualizar os Dados do Grasscutter Estável",
+ "grasscutter_latest_data_update": "Atualizar os Dados do Grasscutter Mais Recente",
+ "grasscutter_stable": "Baixar o Grasscutter Estável",
+ "grasscutter_latest": "Baixar o Grasscutter Mais Recente",
+ "grasscutter_stable_update": "Atualizar o Grasscutter Estável",
+ "grasscutter_latest_update": "Atualizar o Grasscutter Mais Recente",
+ "resources": "Baixar os Recursos do Grasscutter ",
+ "game": "Baixar o Jogo",
+ "aio_header": "Downloads Tudo-em-Um:",
+ "individual_header": "Downloads Individuais:"
+ },
+ "download_status": {
+ "downloading": "Baixando",
+ "extracting": "Extraindo",
+ "error": "Erro",
+ "finished": "Finalizado",
+ "stopped": "Parado"
+ },
+ "components": {
+ "select_file": "Selecione o arquivo ou pasta...",
+ "select_folder": "Selecione a pasta...",
+ "download": "Baixar",
+ "delete": "Deletar",
+ "install": "Instalar"
+ },
+ "news": {
+ "latest_commits": "Commits Recentes",
+ "latest_version": "Versão mais Recente"
+ },
+ "help": {
+ "port_help_text": "Certifique-se de que esta é a porta do servidor dispatch, não a porta do jogo. Ela é quase sempre '443'.",
+ "game_help_text": "Você não precisa de uma cópia do jogo separada para jogar com o Grasscutter. Isso é para, ou desatualizar para a 2.6, ou se você não tiver o jogo instalado.",
+ "gc_stable_jar": "Baixar a versão atual do Grasscutter estável, que inclui o arquivo jar e os arquivos de dados.",
+ "gc_fullbuild": "Baixar uma versão completa do Grasscutter, incluindo a repo, jar e recursos. Ela está totalmente configurada e não requer nenhum outro download deste menu.",
+ "gc_dev_jar": "Baixar a versão de desenvolvimento mais recente do Grasscutter, que inclui o arquivo jar e os arquivos de dados.",
+ "gc_stable_data": "Baixar os arquivos de dados da versão atual do Grasscutter estável, que não inclui o arquivo jar. Isso é útil para atualizações.",
+ "gc_dev_data": "Baixar os arquivos de dados da versão de desenvolvimento mais recente do Grasscutter, que não vem com um arquivo jar. Isso é útil para atualizações.",
+ "encryption": "Isso normalmente deve estar desativado.",
+ "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."
+ },
+ "swag": {
+ "akebi_name": "Akebi",
+ "migoto_name": "Migoto",
+ "reshade_name": "Reshade",
+ "akebi": "Definir o Executavel do Akebi/Acrepi",
+ "migoto": "Definir o Executavel do 3DMigoto",
+ "reshade": "Definir o Executavel do Reshade Injector"
+ }
+ }
+
\ No newline at end of file
From a920d70e5390428731463212b929b8615e93d1a0 Mon Sep 17 00:00:00 2001
From: Thoronium <107363768+NotThorny@users.noreply.github.com>
Date: Wed, 5 Apr 2023 22:06:54 -0600
Subject: [PATCH 4/4] Run prettier
---
src-tauri/lang/pt-br.json | 175 ++++++++++++-------------
src/ui/components/news/NewsSection.tsx | 78 +++++------
2 files changed, 126 insertions(+), 127 deletions(-)
diff --git a/src-tauri/lang/pt-br.json b/src-tauri/lang/pt-br.json
index cd22536..872faad 100644
--- a/src-tauri/lang/pt-br.json
+++ b/src-tauri/lang/pt-br.json
@@ -1,90 +1,89 @@
{
- "lang_name": "Português Brasileiro",
- "main": {
- "title": "Cultivation: Edição Thorny",
- "launch_button": "Iniciar",
- "gc_enable": "Conectar ao Grasscutter",
- "https_enable": "Usar HTTPS",
- "ip_placeholder": "Endereço do Servidor...",
- "port_placeholder": "Porta...",
- "files_downloading": "Baixando Arquivos: ",
- "files_extracting": "Extraindo Arquivos: "
- },
- "options": {
- "enabled": "Habilitado",
- "disabled": "Desabilitado",
- "game_path": "Definir o Local de Instalação do Jogo",
- "game_command": "Comando de Iniciação do Jogo",
- "game_executable": "Definir o Executavel do Jogo",
- "recover_rsa": "Exclusão de Emergencia de RSA",
- "grasscutter_jar": "Definir o arquivo JAR do Grasscutter",
- "toggle_encryption": "Ativar/Desativar Criptografia",
- "install_certificate": "Instalar o Certificado de Proxy",
- "java_path": "Definir um Local Customizado do Java",
- "grasscutter_with_game": "Iniciar automaticamente o Grasscutter com o Jogo",
- "language": "Selecionar Idioma",
- "background": "Definir Fundo Customizado (link ou arquivo de imagem)",
- "theme": "Definir Tema",
- "patch_rsa": "Automaticamente Corrigir RSA",
- "use_proxy": "Usar Proxy Interno",
- "wipe_login": "Limpar Cache de Login",
- "horny_mode": "Modo com tesão",
- "auto_mongodb": "Iniciar MongoDB Automaticamente"
- },
- "downloads": {
- "grasscutter_fullbuild": "Baixar o Grasscutter Tudo-em-Um",
- "grasscutter_stable_data": "Baixar os Dados do Grasscutter Estável",
- "grasscutter_latest_data": "Baixar os Dados do Grasscutter Mais Recente",
- "grasscutter_stable_data_update": "Atualizar os Dados do Grasscutter Estável",
- "grasscutter_latest_data_update": "Atualizar os Dados do Grasscutter Mais Recente",
- "grasscutter_stable": "Baixar o Grasscutter Estável",
- "grasscutter_latest": "Baixar o Grasscutter Mais Recente",
- "grasscutter_stable_update": "Atualizar o Grasscutter Estável",
- "grasscutter_latest_update": "Atualizar o Grasscutter Mais Recente",
- "resources": "Baixar os Recursos do Grasscutter ",
- "game": "Baixar o Jogo",
- "aio_header": "Downloads Tudo-em-Um:",
- "individual_header": "Downloads Individuais:"
- },
- "download_status": {
- "downloading": "Baixando",
- "extracting": "Extraindo",
- "error": "Erro",
- "finished": "Finalizado",
- "stopped": "Parado"
- },
- "components": {
- "select_file": "Selecione o arquivo ou pasta...",
- "select_folder": "Selecione a pasta...",
- "download": "Baixar",
- "delete": "Deletar",
- "install": "Instalar"
- },
- "news": {
- "latest_commits": "Commits Recentes",
- "latest_version": "Versão mais Recente"
- },
- "help": {
- "port_help_text": "Certifique-se de que esta é a porta do servidor dispatch, não a porta do jogo. Ela é quase sempre '443'.",
- "game_help_text": "Você não precisa de uma cópia do jogo separada para jogar com o Grasscutter. Isso é para, ou desatualizar para a 2.6, ou se você não tiver o jogo instalado.",
- "gc_stable_jar": "Baixar a versão atual do Grasscutter estável, que inclui o arquivo jar e os arquivos de dados.",
- "gc_fullbuild": "Baixar uma versão completa do Grasscutter, incluindo a repo, jar e recursos. Ela está totalmente configurada e não requer nenhum outro download deste menu.",
- "gc_dev_jar": "Baixar a versão de desenvolvimento mais recente do Grasscutter, que inclui o arquivo jar e os arquivos de dados.",
- "gc_stable_data": "Baixar os arquivos de dados da versão atual do Grasscutter estável, que não inclui o arquivo jar. Isso é útil para atualizações.",
- "gc_dev_data": "Baixar os arquivos de dados da versão de desenvolvimento mais recente do Grasscutter, que não vem com um arquivo jar. Isso é útil para atualizações.",
- "encryption": "Isso normalmente deve estar desativado.",
- "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."
- },
- "swag": {
- "akebi_name": "Akebi",
- "migoto_name": "Migoto",
- "reshade_name": "Reshade",
- "akebi": "Definir o Executavel do Akebi/Acrepi",
- "migoto": "Definir o Executavel do 3DMigoto",
- "reshade": "Definir o Executavel do Reshade Injector"
- }
+ "lang_name": "Português Brasileiro",
+ "main": {
+ "title": "Cultivation: Edição Thorny",
+ "launch_button": "Iniciar",
+ "gc_enable": "Conectar ao Grasscutter",
+ "https_enable": "Usar HTTPS",
+ "ip_placeholder": "Endereço do Servidor...",
+ "port_placeholder": "Porta...",
+ "files_downloading": "Baixando Arquivos: ",
+ "files_extracting": "Extraindo Arquivos: "
+ },
+ "options": {
+ "enabled": "Habilitado",
+ "disabled": "Desabilitado",
+ "game_path": "Definir o Local de Instalação do Jogo",
+ "game_command": "Comando de Iniciação do Jogo",
+ "game_executable": "Definir o Executavel do Jogo",
+ "recover_rsa": "Exclusão de Emergencia de RSA",
+ "grasscutter_jar": "Definir o arquivo JAR do Grasscutter",
+ "toggle_encryption": "Ativar/Desativar Criptografia",
+ "install_certificate": "Instalar o Certificado de Proxy",
+ "java_path": "Definir um Local Customizado do Java",
+ "grasscutter_with_game": "Iniciar automaticamente o Grasscutter com o Jogo",
+ "language": "Selecionar Idioma",
+ "background": "Definir Fundo Customizado (link ou arquivo de imagem)",
+ "theme": "Definir Tema",
+ "patch_rsa": "Automaticamente Corrigir RSA",
+ "use_proxy": "Usar Proxy Interno",
+ "wipe_login": "Limpar Cache de Login",
+ "horny_mode": "Modo com tesão",
+ "auto_mongodb": "Iniciar MongoDB Automaticamente"
+ },
+ "downloads": {
+ "grasscutter_fullbuild": "Baixar o Grasscutter Tudo-em-Um",
+ "grasscutter_stable_data": "Baixar os Dados do Grasscutter Estável",
+ "grasscutter_latest_data": "Baixar os Dados do Grasscutter Mais Recente",
+ "grasscutter_stable_data_update": "Atualizar os Dados do Grasscutter Estável",
+ "grasscutter_latest_data_update": "Atualizar os Dados do Grasscutter Mais Recente",
+ "grasscutter_stable": "Baixar o Grasscutter Estável",
+ "grasscutter_latest": "Baixar o Grasscutter Mais Recente",
+ "grasscutter_stable_update": "Atualizar o Grasscutter Estável",
+ "grasscutter_latest_update": "Atualizar o Grasscutter Mais Recente",
+ "resources": "Baixar os Recursos do Grasscutter ",
+ "game": "Baixar o Jogo",
+ "aio_header": "Downloads Tudo-em-Um:",
+ "individual_header": "Downloads Individuais:"
+ },
+ "download_status": {
+ "downloading": "Baixando",
+ "extracting": "Extraindo",
+ "error": "Erro",
+ "finished": "Finalizado",
+ "stopped": "Parado"
+ },
+ "components": {
+ "select_file": "Selecione o arquivo ou pasta...",
+ "select_folder": "Selecione a pasta...",
+ "download": "Baixar",
+ "delete": "Deletar",
+ "install": "Instalar"
+ },
+ "news": {
+ "latest_commits": "Commits Recentes",
+ "latest_version": "Versão mais Recente"
+ },
+ "help": {
+ "port_help_text": "Certifique-se de que esta é a porta do servidor dispatch, não a porta do jogo. Ela é quase sempre '443'.",
+ "game_help_text": "Você não precisa de uma cópia do jogo separada para jogar com o Grasscutter. Isso é para, ou desatualizar para a 2.6, ou se você não tiver o jogo instalado.",
+ "gc_stable_jar": "Baixar a versão atual do Grasscutter estável, que inclui o arquivo jar e os arquivos de dados.",
+ "gc_fullbuild": "Baixar uma versão completa do Grasscutter, incluindo a repo, jar e recursos. Ela está totalmente configurada e não requer nenhum outro download deste menu.",
+ "gc_dev_jar": "Baixar a versão de desenvolvimento mais recente do Grasscutter, que inclui o arquivo jar e os arquivos de dados.",
+ "gc_stable_data": "Baixar os arquivos de dados da versão atual do Grasscutter estável, que não inclui o arquivo jar. Isso é útil para atualizações.",
+ "gc_dev_data": "Baixar os arquivos de dados da versão de desenvolvimento mais recente do Grasscutter, que não vem com um arquivo jar. Isso é útil para atualizações.",
+ "encryption": "Isso normalmente deve estar desativado.",
+ "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."
+ },
+ "swag": {
+ "akebi_name": "Akebi",
+ "migoto_name": "Migoto",
+ "reshade_name": "Reshade",
+ "akebi": "Definir o Executavel do Akebi/Acrepi",
+ "migoto": "Definir o Executavel do 3DMigoto",
+ "reshade": "Definir o Executavel do Reshade Injector"
}
-
\ No newline at end of file
+}
diff --git a/src/ui/components/news/NewsSection.tsx b/src/ui/components/news/NewsSection.tsx
index bc544b0..761b93c 100644
--- a/src/ui/components/news/NewsSection.tsx
+++ b/src/ui/components/news/NewsSection.tsx
@@ -60,51 +60,51 @@ export default class NewsSection extends React.Component {
}
async showLatestCommits() {
- // Just use official API
+ // Just use official API
+ const response: string = await invoke('req_get', {
+ url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits',
+ })
+ let grasscutterApiResponse: GrasscutterAPIResponse | null = null
+
+ try {
+ grasscutterApiResponse = JSON.parse(response)
+ } catch (e) {
+ grasscutterApiResponse = null
+ }
+
+ let commits: CommitResponse[]
+ if (grasscutterApiResponse?.commits == null) {
+ // If it didn't work, try again anyways
const response: string = await invoke('req_get', {
url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits',
})
- let grasscutterApiResponse: GrasscutterAPIResponse | null = null
+ commits = JSON.parse(response)
+ } else {
+ commits = grasscutterApiResponse.commits.gc_stable
+ }
- try {
- grasscutterApiResponse = JSON.parse(response)
- } catch (e) {
- grasscutterApiResponse = null
- }
+ // Probably rate-limited
+ if (!Array.isArray(commits)) return
- let commits: CommitResponse[]
- if (grasscutterApiResponse?.commits == null) {
- // If it didn't work, try again anyways
- const response: string = await invoke('req_get', {
- url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits',
- })
- commits = JSON.parse(response)
- } else {
- commits = grasscutterApiResponse.commits.gc_stable
- }
+ // Get only first 5
+ const commitsList = commits.slice(0, 10)
+ const commitsListHtml = commitsList.map((commitResponse: CommitResponse) => {
+ return (
+
+ |
+ {commitResponse.commit.author.name}
+ |
+
+ {commitResponse.commit.message}
+ |
+
+ )
+ })
- // Probably rate-limited
- if (!Array.isArray(commits)) return
-
- // Get only first 5
- const commitsList = commits.slice(0, 10)
- const commitsListHtml = commitsList.map((commitResponse: CommitResponse) => {
- return (
-
- |
- {commitResponse.commit.author.name}
- |
-
- {commitResponse.commit.message}
- |
-
- )
- })
-
- this.setState({
- commitList: commitsListHtml,
- news: <>{commitsListHtml}>,
- })
+ this.setState({
+ commitList: commitsListHtml,
+ news: <>{commitsListHtml}>,
+ })
return this.state.commitList
}