feature: tabs update on move/delete file
mellbacon committed
Aug 2, 2023 at 11:25 UTC
5d957d725ca0f0a25cd48c5adfb5dd3b49061dcf
3 files changed
+14
-1
src/lib/EditorTabList.svelte
+3
@@ -64,6 +64,9 @@
64
export function getCurrentEditor() {
65
return editorTab.activeTab.content;
66
}
67
+ export function refreshTabs() {
68
+ editorTab.refreshTabList();
69
+ }
70
71
export let hidden = editorTab.hidden;
72
export let isfile = editorTab.isfile;
src/lib/File.ts
+8
-1
@@ -1,6 +1,6 @@
1
import { dialog, fs, path, invoke, window } from "@tauri-apps/api";
2
import { get, writable } from 'svelte/store';
3
-import { tabs, addEditorTab, renameTab } from "./EditorTabList.svelte";
3
+import { tabs, addEditorTab, renameTab, closeTab, refreshTabs } from "./EditorTabList.svelte";
4
import { filetree } from "./FileTree.svelte";
5
import { watch } from "tauri-plugin-fs-watch-api";
6
import { openFileTree } from "./Sidebar.svelte";
@@ -138,6 +138,10 @@ export async function moveFile(source: string, dest: string, file: string) {
138
139
try {
140
await fs.renameFile(file, `${dest}${path.sep}${filename}`);
141
+ const tab = get(tabs).find(t => t.path === `${source}${path.sep}${filename}`);
142
+ if (tab === undefined) return;
143
+ tab.path = `${dest}${path.sep}${filename}`;
144
+ refreshTabs();
145
} catch (error) {
146
console.error(error);
147
}
@@ -186,6 +190,9 @@ export async function moveToTrash(p: string) {
190
// open dialog to choose between recycling bin and perm delete
191
if (!await dialog.ask(`Are you sure you want to delete ${p.split(path.sep).pop()}?`)) return;
192
await invoke("delete_file", {path: p, perm: false})
193
+ const tab = get(tabs).find(t => t.path === p);
194
+ if (tab === undefined) return;
195
+ closeTab(tab.id);
196
}
197
198
export async function createFolder(p) {
src/lib/Tab/Tab.ts
+3
@@ -144,4 +144,7 @@ export class Tab {
144
tab.updateView(this.activeid);
145
}
146
}
147
+ refreshTabList() {
148
+ this.tabs.set(this.tablist);
149
+ }
150
}