added file diffing for file saving
This commit is contained in:
parent
5b31b76e69
commit
df53857426
2 changed files with 21 additions and 2 deletions
|
|
@ -2,12 +2,31 @@ use crate::{
|
||||||
config::{get_open_file_path, set_open_file_path},
|
config::{get_open_file_path, set_open_file_path},
|
||||||
get_basepath,
|
get_basepath,
|
||||||
};
|
};
|
||||||
|
use diff_match_patch_rs::{Compat, DiffMatchPatch, Error, PatchInput};
|
||||||
use std::fs::read_to_string;
|
use std::fs::read_to_string;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use tauri::{ipc::RuntimeCapability, App, AssetResolver, Manager, Url};
|
use tauri::{ipc::RuntimeCapability, App, AssetResolver, Manager, Url};
|
||||||
|
|
||||||
|
fn compare_content(old_content: &str, new_content: &str) -> Result<String, Error> {
|
||||||
|
// initializing the module
|
||||||
|
let dmp = DiffMatchPatch::new();
|
||||||
|
// create a list of diffs
|
||||||
|
let diffs = dmp.diff_main::<Compat>(old_content, new_content)?;
|
||||||
|
// Now, we are going to create a list of `patches` to be applied to the old text to get the new text
|
||||||
|
let patches = dmp.patch_make(PatchInput::new_diffs(&diffs))?;
|
||||||
|
// in the real world you are going to transmit or store this diff serialized to undiff format to be consumed or used somewhere elese
|
||||||
|
let patch_txt = dmp.patch_to_text(&patches);
|
||||||
|
|
||||||
|
Ok(patch_txt)
|
||||||
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn save_file(app_handle: tauri::AppHandle, content: String) {
|
pub async fn save_file(app_handle: tauri::AppHandle, content: String) {
|
||||||
println!("{:?}", get_open_file_path(app_handle));
|
if let Some(path) = get_open_file_path(app_handle.clone()) {
|
||||||
|
if let Ok(file_content) = load_file(app_handle, path).await {
|
||||||
|
println!("{:?}", compare_content(&file_content, &content));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ export function save_file() {
|
||||||
console.log(selected_file);
|
console.log(selected_file);
|
||||||
var tag_id = document.getElementById("markdown_input");
|
var tag_id = document.getElementById("markdown_input");
|
||||||
|
|
||||||
invoke("save_file", {content: tag_id.innerHTML}).then((ret) => {
|
invoke("save_file", {content: tag_id.innerText}).then((ret) => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
document.getElementById("save-file").onclick = function () {
|
document.getElementById("save-file").onclick = function () {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue