From b9ddd970522bca8d23f103497eec2a47e2396793 Mon Sep 17 00:00:00 2001 From: fyears <1142836+fyears@users.noreply.github.com> Date: Sat, 6 Jan 2024 22:17:58 +0800 Subject: [PATCH] select where to delete --- src/baseTypes.ts | 1 + src/langs/en.json | 4 ++++ src/langs/zh_cn.json | 4 ++++ src/langs/zh_tw.json | 4 ++++ src/main.ts | 11 ++++++++++- src/settings.ts | 17 +++++++++++++++++ 6 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/baseTypes.ts b/src/baseTypes.ts index 893dfe8..507a590 100644 --- a/src/baseTypes.ts +++ b/src/baseTypes.ts @@ -90,6 +90,7 @@ export interface RemotelySavePluginSettings { skipSizeLargerThan?: number; ignorePaths?: string[]; enableStatusBarInfo?: boolean; + deleteToWhere?: "system" | "obsidian"; /** * @deprecated diff --git a/src/langs/en.json b/src/langs/en.json index be71ceb..5080bcf 100644 --- a/src/langs/en.json +++ b/src/langs/en.json @@ -238,6 +238,10 @@ "settings_syncunderscore_desc": "Sync files or folders starting with _ (\"underscore\") or not", "settings_configdir": "Sync Config Dir (experimental)", "settings_configdir_desc": "Sync config dir {{configDir}} or not (inner folder .git and node_modules would be ignored). Please be aware that this may impact all your plugins' or Obsidian's settings, and may require you restart Obsidian after sync. Enable this at your own risk.", + "settings_deletetowhere": "Deletion Destination", + "settings_deletetowhere_desc": "Which trash should the plugin put the files into while deleting?", + "settings_deletetowhere_system_trash": "system trash (default)", + "settings_deletetowhere_obsidian_trash": "Obsidian .trash folder", "settings_importexport": "Import and Export Partial Settings", "settings_export": "Export", "settings_export_desc": "Export not-oauth2 settings by generating a qrcode.", diff --git a/src/langs/zh_cn.json b/src/langs/zh_cn.json index a5fa5ef..6e50c59 100644 --- a/src/langs/zh_cn.json +++ b/src/langs/zh_cn.json @@ -238,6 +238,10 @@ "settings_syncunderscore_desc": "是否同步“_”(下划线)开始的文件或文件夹。", "settings_configdir": "同步配置文件夹(实验性质)", "settings_configdir_desc": "是否同步 Obsidian 的配置文件夹 {{configDir}}(其中的 .git 和 node_modules 依然会被忽略)。请注意,此设置可能会影响到您 Obsidian 或者所有的插件设置,也可能需要您同步完毕后重启 Obsidian。如果您同意自行承受其风险,则可以开启本设置。", + "settings_deletetowhere": "删除文件到哪里", + "settings_deletetowhere_desc": "插件触发删除操作时候,删除到哪里?", + "settings_deletetowhere_system_trash": "系统回收站(默认)", + "settings_deletetowhere_obsidian_trash": "Obsidian .trash 文件夹", "settings_importexport": "导入导出部分设置", "settings_export": "导出", "settings_export_desc": "用 QR 码导出非 oauth2 的设置信息。", diff --git a/src/langs/zh_tw.json b/src/langs/zh_tw.json index 611044e..1e868f2 100644 --- a/src/langs/zh_tw.json +++ b/src/langs/zh_tw.json @@ -238,6 +238,10 @@ "settings_syncunderscore_desc": "是否同步“_”(下劃線)開始的檔案或資料夾。", "settings_configdir": "同步配置資料夾(實驗性質)", "settings_configdir_desc": "是否同步 Obsidian 的配置資料夾 {{configDir}}(其中的 .git 和 node_modules 依然會被忽略)。請注意,此設定可能會影響到您 Obsidian 或者所有的外掛設定,也可能需要您同步完畢後重啟 Obsidian。如果您同意自行承受其風險,則可以開啟本設定。", + "settings_deletetowhere": "刪除檔案到哪裡", + "settings_deletetowhere_desc": "外掛觸發刪除操作時候,刪除到哪裡?", + "settings_deletetowhere_system_trash": "系統回收站(預設)", + "settings_deletetowhere_obsidian_trash": "Obsidian .trash 資料夾", "settings_importexport": "匯入匯出部分設定", "settings_export": "匯出", "settings_export_desc": "用 QR 碼匯出非 oauth2 的設定資訊。", diff --git a/src/main.ts b/src/main.ts index 98a33ac..8361d24 100644 --- a/src/main.ts +++ b/src/main.ts @@ -93,6 +93,7 @@ const DEFAULT_SETTINGS: RemotelySavePluginSettings = { skipSizeLargerThan: -1, ignorePaths: [], enableStatusBarInfo: true, + deleteToWhere: "system", }; interface OAuth2Info { @@ -878,6 +879,9 @@ export default class RemotelySavePlugin extends Plugin { if (this.settings.syncOnSaveAfterMilliseconds === undefined) { this.settings.syncOnSaveAfterMilliseconds = -1; } + if (this.settings.deleteToWhere === undefined) { + this.settings.deleteToWhere = "system"; + } } async checkIfPresetRulesFollowed() { @@ -978,8 +982,13 @@ export default class RemotelySavePlugin extends Plugin { } async trash(x: string) { - if (!(await this.app.vault.adapter.trashSystem(x))) { + if (this.settings.deleteToWhere === "obsidian") { await this.app.vault.adapter.trashLocal(x); + } else { + // "system" + if (!(await this.app.vault.adapter.trashSystem(x))) { + await this.app.vault.adapter.trashLocal(x); + } } } diff --git a/src/settings.ts b/src/settings.ts index afc6ffc..234c942 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -1904,6 +1904,23 @@ export class RemotelySaveSettingTab extends PluginSettingTab { }); }); + new Setting(advDiv) + .setName(t("settings_deletetowhere")) + .setDesc(t("settings_deletetowhere_desc")) + .addDropdown((dropdown) => { + dropdown.addOption("system", t("settings_deletetowhere_system_trash")); + dropdown.addOption( + "obsidian", + t("settings_deletetowhere_obsidian_trash") + ); + dropdown + .setValue(this.plugin.settings.deleteToWhere) + .onChange(async (val: "system" | "obsidian") => { + this.plugin.settings.deleteToWhere = val; + await this.plugin.saveSettings(); + }); + }); + ////////////////////////////////////////////////// // below for import and export functions //////////////////////////////////////////////////