mirror of
https://github.com/Horizontal42/summarum.git
synced 2026-11-10 15:42:01 +03:00
share atomic-write bytes helper between write_atomic and image export
write_image_file hand-rolled the same temp+rename dance write_atomic already did for text, just for bytes. Split write_atomic into a write_atomic_bytes core and have both callers use it.
This commit is contained in:
parent
d7b88cc9c9
commit
a8121dbc90
1 changed files with 6 additions and 8 deletions
|
|
@ -76,13 +76,7 @@ fn write_image_file(app: AppHandle, data_base64: String) -> Result<bool, String>
|
|||
.blocking_save_file()
|
||||
{
|
||||
let path = p.into_path().map_err(|e| e.to_string())?;
|
||||
use std::io::Write;
|
||||
let bytes = base64_decode(&data_base64)?;
|
||||
let tmp = path.with_extension("tmp");
|
||||
std::fs::File::create(&tmp)
|
||||
.and_then(|mut f| f.write_all(&bytes))
|
||||
.map_err(|e| e.to_string())?;
|
||||
fs::rename(&tmp, path).map_err(|e| e.to_string())?;
|
||||
write_atomic_bytes(&path, &base64_decode(&data_base64)?)?;
|
||||
Ok(true)
|
||||
} else {
|
||||
Ok(false)
|
||||
|
|
@ -123,12 +117,16 @@ fn base64_decode(s: &str) -> Result<Vec<u8>, String> {
|
|||
}
|
||||
|
||||
/// write via a temp file + rename so a crash mid-write cannot corrupt the target
|
||||
fn write_atomic(path: &Path, contents: &str) -> Result<(), String> {
|
||||
fn write_atomic_bytes(path: &Path, contents: &[u8]) -> Result<(), String> {
|
||||
let tmp = path.with_extension("tmp");
|
||||
fs::write(&tmp, contents).map_err(|e| e.to_string())?;
|
||||
fs::rename(&tmp, path).map_err(|e| e.to_string())
|
||||
}
|
||||
|
||||
fn write_atomic(path: &Path, contents: &str) -> Result<(), String> {
|
||||
write_atomic_bytes(path, contents.as_bytes())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
fn save_file(app: AppHandle, name: String, contents: String) -> Result<(), String> {
|
||||
if !safe_name(&name) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue