From 5b8a728db4eba32bca07fab21e2e243ee020ae0c Mon Sep 17 00:00:00 2001 From: polv Date: Mon, 2 Mar 2026 19:48:11 +0700 Subject: [PATCH] move files a bit --- scripts/make-resource-manifest.js | 10 ++++ src-tauri/resources/yomitan/.gitignore | 1 - src-tauri/resources/yomitan/ja/.gitignore | 1 + src-tauri/resources/yomitan/zh/.gitignore | 0 src-tauri/src/command.rs | 61 ++++++++++++++--------- 5 files changed, 48 insertions(+), 25 deletions(-) create mode 100644 scripts/make-resource-manifest.js create mode 100644 src-tauri/resources/yomitan/ja/.gitignore create mode 100644 src-tauri/resources/yomitan/zh/.gitignore diff --git a/scripts/make-resource-manifest.js b/scripts/make-resource-manifest.js new file mode 100644 index 0000000..9629f02 --- /dev/null +++ b/scripts/make-resource-manifest.js @@ -0,0 +1,10 @@ +import fs from "node:fs"; + +function makeManifestForDir(d) { + fs.writeFileSync( + `${d}/manifest.json`, + JSON.stringify(fs.readdirSync(d).filter((f) => f.endsWith(".zip"))), + ); +} + +makeManifestForDir("src-tauri/resources/yomitan/ja"); diff --git a/src-tauri/resources/yomitan/.gitignore b/src-tauri/resources/yomitan/.gitignore index 2e67351..c4c4ffc 100644 --- a/src-tauri/resources/yomitan/.gitignore +++ b/src-tauri/resources/yomitan/.gitignore @@ -1,2 +1 @@ *.zip -# Pixiv_*.zip => Pixiv.zip from https://github.com/MarvNC/pixiv-yomitan/releases diff --git a/src-tauri/resources/yomitan/ja/.gitignore b/src-tauri/resources/yomitan/ja/.gitignore new file mode 100644 index 0000000..57e4803 --- /dev/null +++ b/src-tauri/resources/yomitan/ja/.gitignore @@ -0,0 +1 @@ +# Pixiv_*.zip => Pixiv.zip from https://github.com/MarvNC/pixiv-yomitan/releases diff --git a/src-tauri/resources/yomitan/zh/.gitignore b/src-tauri/resources/yomitan/zh/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/src-tauri/src/command.rs b/src-tauri/src/command.rs index a8b366d..7347763 100644 --- a/src-tauri/src/command.rs +++ b/src-tauri/src/command.rs @@ -42,35 +42,48 @@ pub async fn init_yomitan( app: AppHandle, state: tauri::State<'_, AppService>, ) -> Result<(), CJDicError> { - let folder_name = "resources/yomitan"; + let mut new_dicts: Vec = vec![]; + let mut to_be_removed_dicts: Vec = vec![]; - let zip_dir = app - .path() - .resolve(folder_name, tauri::path::BaseDirectory::Resource) - .map_err(|e| CJDicError::AnyhowError(e.to_string()))?; + for lang in vec!["ja"] { + let folder_name = format!("resources/yomitan/{lang}"); + let folder_name = folder_name.as_str(); - // Manifest is needed, as Android bundled fs can't read_dir - let files: Vec = - serde_json::from_str(&app.fs().read_to_string(zip_dir.join("manifest.json"))?)?; + let zip_dir = app + .path() + .resolve(folder_name, tauri::path::BaseDirectory::Resource) + .map_err(|e| CJDicError::AnyhowError(e.to_string()))?; - let zip_files = files - .iter() - .map(|f| BundledZip::new(app.clone(), &format!("{folder_name}/{f}"))) - .collect::, _>>() - .map_err(|e| CJDicError::AnyhowError(e.to_string()))?; + // Manifest is needed, as Android bundled fs can't read_dir + let files: Vec = + serde_json::from_str(&app.fs().read_to_string(zip_dir.join("manifest.json"))?)?; - let r = state.load_yomitan_zip_dir( - zip_files, - "ja", - |r| { - app.emit("load-yomitan-dir", r).unwrap(); - }, - |r| { - app.emit("yomitan-import-progress", r).unwrap(); - }, - )?; + let zip_files = files + .iter() + .map(|f| BundledZip::new(app.clone(), &format!("{folder_name}/{f}"))) + .collect::, _>>() + .map_err(|e| CJDicError::AnyhowError(e.to_string()))?; - if r.new_dicts.len() + r.to_be_removed_dicts.len() > 0 { + if zip_files.is_empty() { + continue; + } + + let mut r = state.load_yomitan_zip_dir( + zip_files, + lang, + |r| { + app.emit("load-yomitan-dir", r).unwrap(); + }, + |r| { + app.emit("yomitan-import-progress", r).unwrap(); + }, + )?; + + new_dicts.append(&mut r.new_dicts); + to_be_removed_dicts.append(&mut r.to_be_removed_dicts); + } + + if new_dicts.len() + to_be_removed_dicts.len() > 0 { // Cleanup doesn't appear to help even after app restart // state.cleanup_yomitan_writer()?;