@setoelkahfi / svara / commits / 5d957d7

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 }