From ce9f0eaf028262ee0739feff4209ef5ce8c0fb1e Mon Sep 17 00:00:00 2001 From: AEtheve <30652308+AEtheve@users.noreply.github.com> Date: Mon, 2 Jan 2023 23:29:12 +0100 Subject: [PATCH] Cleaned up history by removing entries for non-existent images and implemented disk cleanup when deleting from history. --- electron_app/src/components/History.vue | 43 ++++++++++++++++++++++--- electron_app/src/native_functions.js | 11 +++++++ 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/electron_app/src/components/History.vue b/electron_app/src/components/History.vue index 306e7c6e..da092dd6 100644 --- a/electron_app/src/components/History.vue +++ b/electron_app/src/components/History.vue @@ -103,7 +103,7 @@ export default { ImageItem }, mounted() { - + this.check_imgs_exist(this.app_state.app_data.history); }, data() { return { @@ -126,14 +126,47 @@ export default { useExtendedSearch: true, }); - return fuse.search(that.searchText).map(r => r.item); + return fuse.search(that.searchText).map(r => r.item); - }, + }, }, methods: { - delete_hist(k){ - Vue.delete( this.app_state.app_data.history , k ); + exist(path) { + return window.ipcRenderer.sendSync('file_exist', path); + }, + + check_imgs_exist(history) { + for (let k in history) { + let imgs = history[k].imgs; + let unique_imgs = [...new Set(imgs)]; + if (imgs.length != unique_imgs.length) { + this.delete_hist(k); + } + let new_imgs = []; + for (let img of imgs) { + if (this.exist(img)) { + new_imgs.push(img); + } else { + const new_history_box = this.app_state.app_data.history[k]; + new_history_box.imgs = new_imgs; + } + } + if (new_imgs.length == 0) { + this.delete_hist(k); + } + } + }, + + delete_hist(k) { + let history = this.app_state.app_data.history; + let imgs = history[k].imgs; + for (let img of imgs) { + if (this.exist(img)) { + window.ipcRenderer.sendSync('remove_file', img); + } + } + Vue.delete(this.app_state.app_data.history, k); }, diff --git a/electron_app/src/native_functions.js b/electron_app/src/native_functions.js index 88225b4b..5e5f54c8 100644 --- a/electron_app/src/native_functions.js +++ b/electron_app/src/native_functions.js @@ -142,6 +142,17 @@ ipcMain.on('save_file', (event, arg) => { event.returnValue = ''; }) +ipcMain.on('remove_file', (event, arg) => { + let p1 = arg.split("||")[0]; + require('fs').unlinkSync(p1); + event.returnValue = ''; +}) + +ipcMain.on('file_exist', (event, arg) => { + let p1 = arg.split("||")[0]; + let exist = require('fs').existsSync(p1); + event.returnValue = exist; +});