mirror of
https://github.com/Grasscutters/Cultivation.git
synced 2025-12-14 16:14:48 +01:00
proper setting and getting local files
This commit is contained in:
@@ -48,7 +48,6 @@ fn main() {
|
|||||||
system_helpers::run_program,
|
system_helpers::run_program,
|
||||||
system_helpers::run_jar,
|
system_helpers::run_jar,
|
||||||
system_helpers::open_in_browser,
|
system_helpers::open_in_browser,
|
||||||
system_helpers::get_local_bg_path,
|
|
||||||
system_helpers::copy_file,
|
system_helpers::copy_file,
|
||||||
proxy::set_proxy_addr,
|
proxy::set_proxy_addr,
|
||||||
proxy::generate_ca_files,
|
proxy::generate_ca_files,
|
||||||
@@ -144,8 +143,8 @@ async fn req_get(url: String) -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
async fn get_bg_file(bg_path: String) -> String {
|
async fn get_bg_file(bg_path: String, appdata: String) -> String {
|
||||||
let install_loc = system_helpers::install_location();
|
let copy_loc = appdata;
|
||||||
let query = web::query("https://api.grasscutters.xyz/cultivation/query").await;
|
let query = web::query("https://api.grasscutters.xyz/cultivation/query").await;
|
||||||
let response_data: APIQuery = match serde_json::from_str(&query) {
|
let response_data: APIQuery = match serde_json::from_str(&query) {
|
||||||
Ok(data) => data,
|
Ok(data) => data,
|
||||||
@@ -158,8 +157,8 @@ async fn get_bg_file(bg_path: String) -> String {
|
|||||||
let file_name = response_data.bg_file.to_string();
|
let file_name = response_data.bg_file.to_string();
|
||||||
|
|
||||||
// First we see if the file already exists in our local bg folder.
|
// First we see if the file already exists in our local bg folder.
|
||||||
if file_helpers::dir_exists(format!("{}\\bg\\{}", install_loc, file_name).as_str()) {
|
if file_helpers::dir_exists(format!("{}\\bg\\{}", copy_loc, file_name).as_str()) {
|
||||||
return format!("{}\\{}", install_loc, response_data.bg_file.as_str());
|
return format!("{}\\{}", copy_loc, response_data.bg_file.as_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now we check if the bg folder, which is one directory above the game_path, exists.
|
// Now we check if the bg folder, which is one directory above the game_path, exists.
|
||||||
@@ -177,12 +176,12 @@ async fn get_bg_file(bg_path: String) -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The image exists, lets copy it to our local '\bg' folder.
|
// The image exists, lets copy it to our local '\bg' folder.
|
||||||
let bg_img_path_local = format!("{}\\bg\\{}", install_loc, file_name.as_str());
|
let bg_img_path_local = format!("{}\\bg\\{}", copy_loc, file_name.as_str());
|
||||||
|
|
||||||
return match std::fs::copy(bg_img_path, bg_img_path_local) {
|
return match std::fs::copy(bg_img_path, bg_img_path_local) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Copy was successful, lets return true.
|
// Copy was successful, lets return true.
|
||||||
format!("{}\\{}", install_loc, response_data.bg_file.as_str())
|
format!("{}\\{}", copy_loc, response_data.bg_file.as_str())
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
// Copy failed, lets return false
|
// Copy failed, lets return false
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ use std::thread;
|
|||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
use tauri;
|
use tauri;
|
||||||
use open;
|
use open;
|
||||||
use crate::system_helpers;
|
|
||||||
|
use crate::file_helpers;
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn run_program(path: String) {
|
pub fn run_program(path: String) {
|
||||||
@@ -56,15 +57,15 @@ pub fn open_in_browser(url: String) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
|
||||||
pub fn get_local_bg_path() -> String {
|
|
||||||
// Get the local BG folder.
|
|
||||||
return format!("{}/bg", system_helpers::install_location())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn copy_file(path: String, new_path: String) -> bool {
|
pub fn copy_file(path: String, new_path: String) -> bool {
|
||||||
let filename = &path.split("/").last().unwrap();
|
let filename = &path.split("/").last().unwrap();
|
||||||
|
let mut new_path_buf = std::path::PathBuf::from(&new_path);
|
||||||
|
|
||||||
|
// If the new path doesn't exist, create it.
|
||||||
|
if !file_helpers::dir_exists(new_path_buf.pop().to_string().as_str()) {
|
||||||
|
std::fs::create_dir_all(&new_path).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
// Copy old to new
|
// Copy old to new
|
||||||
match std::fs::copy(&path, format!("{}/{}", new_path, filename)) {
|
match std::fs::copy(&path, format!("{}/{}", new_path, filename)) {
|
||||||
|
|||||||
@@ -18,6 +18,15 @@
|
|||||||
"$DATA/cultivation/*"
|
"$DATA/cultivation/*"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"protocol": {
|
||||||
|
"all": true,
|
||||||
|
"asset": true,
|
||||||
|
"assetScope": [
|
||||||
|
"$DATA",
|
||||||
|
"$DATA/cultivation",
|
||||||
|
"$DATA/cultivation/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
"all": true
|
"all": true
|
||||||
},
|
},
|
||||||
"bundle": {
|
"bundle": {
|
||||||
@@ -54,7 +63,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"security": {
|
"security": {
|
||||||
"csp": null
|
"csp": "default-src 'self'; img-src 'self' asset: https://asset.localhost"
|
||||||
},
|
},
|
||||||
"updater": {
|
"updater": {
|
||||||
"active": false
|
"active": false
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import { getConfigOption, setConfigOption } from '../utils/configuration'
|
|||||||
import { invoke } from '@tauri-apps/api'
|
import { invoke } from '@tauri-apps/api'
|
||||||
import { dataDir } from '@tauri-apps/api/path'
|
import { dataDir } from '@tauri-apps/api/path'
|
||||||
import { appWindow } from '@tauri-apps/api/window'
|
import { appWindow } from '@tauri-apps/api/window'
|
||||||
|
import { convertFileSrc } from '@tauri-apps/api/tauri'
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
[key: string]: never;
|
[key: string]: never;
|
||||||
@@ -83,7 +84,8 @@ class App extends React.Component<IProps, IState> {
|
|||||||
if(game_path) {
|
if(game_path) {
|
||||||
// Get the bg by invoking, then set the background to that bg.
|
// Get the bg by invoking, then set the background to that bg.
|
||||||
const bgLoc: string = await invoke('get_bg_file', {
|
const bgLoc: string = await invoke('get_bg_file', {
|
||||||
bgPath: root_path
|
bgPath: root_path,
|
||||||
|
appdata: await dataDir()
|
||||||
})
|
})
|
||||||
|
|
||||||
bgLoc && this.setState({
|
bgLoc && this.setState({
|
||||||
@@ -91,7 +93,7 @@ class App extends React.Component<IProps, IState> {
|
|||||||
}, this.forceUpdate)
|
}, this.forceUpdate)
|
||||||
}
|
}
|
||||||
} else this.setState({
|
} else this.setState({
|
||||||
bgFile: custom_bg
|
bgFile: convertFileSrc(custom_bg)
|
||||||
}, this.forceUpdate)
|
}, this.forceUpdate)
|
||||||
|
|
||||||
if (!cert_generated) {
|
if (!cert_generated) {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { setConfigOption, getConfig, getConfigOption } from '../../../utils/conf
|
|||||||
import Checkbox from '../common/Checkbox'
|
import Checkbox from '../common/Checkbox'
|
||||||
import Divider from './Divider'
|
import Divider from './Divider'
|
||||||
import { invoke } from '@tauri-apps/api'
|
import { invoke } from '@tauri-apps/api'
|
||||||
|
import { dataDir } from '@tauri-apps/api/path'
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
closeFn: () => void;
|
closeFn: () => void;
|
||||||
@@ -82,12 +83,15 @@ export default class Options extends React.Component<IProps, IState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async setCustomBackground(value: string) {
|
async setCustomBackground(value: string) {
|
||||||
setConfigOption('customBackground', value)
|
const filename = value.replace(/\\/g, '/').split('/').pop()
|
||||||
|
const localBgPath = (await dataDir() as string).replace(/\\/g, '/')
|
||||||
|
|
||||||
|
setConfigOption('customBackground', `${localBgPath}/cultivation/bg/${filename}`)
|
||||||
|
|
||||||
// Copy the file over to the local directory
|
// Copy the file over to the local directory
|
||||||
invoke('copy_file', {
|
invoke('copy_file', {
|
||||||
path: value.replace(/\\/g, '/'),
|
path: value.replace(/\\/g, '/'),
|
||||||
newPath: await invoke('get_local_bg_path')
|
newPath: `${localBgPath}cultivation/bg/`
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user