From 819f48388588087fcfa6ad03b71334ca7d0924c0 Mon Sep 17 00:00:00 2001 From: xian18 <44394537+xian18@users.noreply.github.com> Date: Fri, 11 Feb 2022 21:01:24 +0800 Subject: [PATCH] #publish .. --- js/plugins/SF_AutoUpdate.js | 31 +++++++++++-------------- js/plugins/SF_AutoUpdateWorker.js | 38 +++++++++++++++++++------------ 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/js/plugins/SF_AutoUpdate.js b/js/plugins/SF_AutoUpdate.js index bb2dbbb..e1d4f50 100644 --- a/js/plugins/SF_AutoUpdate.js +++ b/js/plugins/SF_AutoUpdate.js @@ -335,14 +335,11 @@ var SF_Plugins = SF_Plugins || {}; this._updateFileList = []; this._updateFileIndex = 0; this._updateFileCount = 0; - this._updateFileName = ""; + this._updateFile = {}; this._updateSuccess = false; this._deleteFileList = []; - this._deleteFileIndex = 0; - this._deleteFileCount = 0; - this._deleteFileName = ""; this._status = "completed"; // "working", "completed" this._job = ""; // "fetch remote file info", "compare file info", "delete file", "update file" @@ -443,17 +440,9 @@ var SF_Plugins = SF_Plugins || {}; Scene_AutoUpdate.prototype.deleteFile = function () { UpdateUtils.startUpdateFiles(); - var update_set = new Set(this._updateFileList); - var delete_list = []; - this._deleteFileList.forEach(function (file_name) { - if (!update_set.has(file_name)) { - delete_list.push(file_name); - } - }); - - delete_list.forEach(function (file_name) { - FileUtils.delete(file_name); + this._deleteFileList.forEach(function (file_info) { + FileUtils.delete(file_info.file_name) }); this._status = "completed"; @@ -466,7 +455,7 @@ var SF_Plugins = SF_Plugins || {}; this._status = "completed"; return; } - this._updateFileName = this._updateFileList[this._updateFileIndex]; + this._updateFile = this._updateFileList[this._updateFileIndex]; this.updateFileNext(); } @@ -477,7 +466,7 @@ var SF_Plugins = SF_Plugins || {}; this._status = "completed"; this._updateSuccess = true; } else { - this._updateFileName = this._updateFileList[this._updateFileIndex]; + this._updateFile = this._updateFileList[this._updateFileIndex]; this.updateFileNext(); } }).bind(this); @@ -488,8 +477,14 @@ var SF_Plugins = SF_Plugins || {}; this._updateSuccess = false; }).bind(this); - if (!FileUtils.exists(FileUtils.getParent(this._updateFileName))) { - FileUtils.mkdirs(FileUtils.getParent(this._updateFileName)); + var file = this._updateFile; + if (file.is_dir) { + success(); + return; + } + + if (!FileUtils.exists(FileUtils.getParent(file.file_name))) { + FileUtils.mkdirs(FileUtils.getParent(file.file_name)); } UpdateUtils.downloadRelativeUrl( diff --git a/js/plugins/SF_AutoUpdateWorker.js b/js/plugins/SF_AutoUpdateWorker.js index 2f20ccc..f982e99 100644 --- a/js/plugins/SF_AutoUpdateWorker.js +++ b/js/plugins/SF_AutoUpdateWorker.js @@ -1,37 +1,44 @@ onmessage = function (e) { var request = e.data; + var delete_list = []; + var update_list = []; + switch (request.command) { case 'compare': - compare_file_info(request.local_file_info, request.remote_file_info); + compare_file_info(request.local_file_info, request.remote_file_info, delete_list, update_list); + send_command('delete', delete_list); + send_command('update', update_list); send_command('finish', []); break; case 'finish': send_command('finish'); break; - case 'delete': - } } -function compare_file_info(local_file_info, remote_file_info) { - if (!remote_file_info || local_file_info.is_dir !== remote_file_info.is_dir) { - send_command('delete', generate_file_list(local_file_info)); - send_command('update', generate_file_list(remote_file_info)); +function compare_file_info(local_file_info, remote_file_info, delete_list, update_list) { + if (!remote_file_info) { + delete_list = delete_list.concat(generate_file_list(local_file_info)); + } else if (!local_file_info) { + update_list = update_list.concat(generate_file_list(remote_file_info)); + } else if (local_file_info.is_dir !== remote_file_info.is_dir) { + delete_list = delete_list.concat(generate_file_list(local_file_info)); + update_list = update_list.concat(generate_file_list(remote_file_info)); } else if (local_file_info.sha_512 !== remote_file_info.sha_512) { if (local_file_info.is_dir) { var visited_children = new Set(); for (var i in local_file_info.children) { - compare_file_info(local_file_info.children[i], remote_file_info.children[i]); + compare_file_info(local_file_info.children[i], remote_file_info.children[i], delete_list, update_list); visited_children.add(i); } for (var i in remote_file_info.children) { if (!visited_children.has(i)) { - send_command('update', generate_file_list(remote_file_info.children[i])); + update_list = update_list.concat(generate_file_list(remote_file_info.children[i])); } } } else { - send_command('update', generate_file_list(remote_file_info)); + update_list = update_list.concat(generate_file_list(remote_file_info)); } } } @@ -46,7 +53,12 @@ function generate_file_list(file_info) { file_list = file_list.concat(generate_file_list(file_info.children[i])); } } - file_list.push(file_info.file_name); + file_list.push({ + "file_name": file_info.file_name, + "is_dir": file_info.is_dir, + "is_file": file_info.is_file, + "sha_512": file_info.sha_512 + }); return file_list; } @@ -57,8 +69,4 @@ function send_command(command, file_list) { file_list: file_list }; postMessage(command_data); -} - -function delete_file(file_name) { - } \ No newline at end of file