fix: Rename `openFolder` to `openFolderDialog`
Billy committed
Oct 12, 2024 at 00:52 UTC
625681a2fd7905cd142f6f2ac665a25839b71a0f
3 files changed
+26
-5
src/config/commands.ts
+2
-2
@@ -1,7 +1,7 @@
1
import { fs, path as p } from "@tauri-apps/api";
2
import { openInputModal, openRenameModal } from "../App.svelte";
3
import { addEditorTab, closeAllTabs } from "../lib/EditorTabList.svelte";
4
-import { saveFile, openFile, openFolder, openInExplorer, renameFile, createFolder, createFile } from "../lib/File";
4
+import { saveFile, openFile, openFolderDialog, openInExplorer, renameFile, createFolder, createFile } from "../lib/File";
5
import { appWindow } from "@tauri-apps/api/window";
6
import { info, warn } from "tauri-plugin-log-api";
7
import { fitTerminal } from "../lib/Terminal.svelte";
@@ -23,7 +23,7 @@ export const commands = {
23
"openFolder": {
24
"keybind": "Control+K",
25
"command": async () => {
26
- await openFolder();
26
+ await openFolderDialog();
27
}
28
},
29
"saveFile": {
src/lib/File.ts
+22
-1
@@ -21,18 +21,27 @@ export const workspaceName = writable("Untitled Workspace");
21
export const dirToLoad = writable("");
22
export const dirLoadFail = writable(false);
23
export const workingDir = writable(await homeDir());
24
-export async function openFolder() {
24
+
25
+export async function openFolderDialog() {
26
dirLoadFail.set(false);
27
let directory = await dialog.open({directory: true}) as string;
28
if (!directory) return;
29
+ openFolder(directory);
30
+}
31
+
32
+
33
+export async function openFolder(directory) {
34
+ dirLoadFail.set(false);
35
info(`Opening folder in: ${directory}`, {file: "File.ts", line: 25});
36
localStorage.setItem("lastDir", directory);
37
closeBottomPanel();
38
closeTerminal();
39
closeAllTabs();
40
loadDir(directory);
41
+ saveToRecent(directory);
42
}
43
44
+
45
export async function loadDir(directory) {
46
if (!directory) {
47
warn("Directory path is null. Aborting...", {file: "File.ts", line: 30});
@@ -326,3 +335,15 @@ export function checkValidFileName(input: string) {
335
if (input === "") return false;
336
return true;
337
}
338
+
339
+export function saveToRecent(path: string) {
340
+ const recent = localStorage.getItem("recentFolders");
341
+ if (!recent) {
342
+ localStorage.setItem("recentFolders", JSON.stringify([path]));
343
+ return;
344
+ }
345
+ const recentFolders = JSON.parse(recent) || [];
346
+ const updatedRecentFolders = [path, ...recentFolders.filter(f => f !== path)].slice(0, 10); // save 10 recent folders max
347
+ localStorage.setItem("recentFolders", JSON.stringify(updatedRecentFolders));
348
+}
349
+
src/lib/FileTree.svelte
+2
-2
@@ -2,7 +2,7 @@
2
import FileTreeView from "./FileTree/FileTreeView.svelte";
3
import ContextMenu from "./utility/ContextMenu.svelte";
4
import { addEditorTab } from "./EditorTabList.svelte";
5
- import { openFolder, pasteFile } from "./File";
5
+ import { openFolderDialog, pasteFile } from "./File";
6
import { clipboard } from "@tauri-apps/api";
7
import Button from "./utility/Button.svelte";
8
import { commands } from "../config/commands";
@@ -48,7 +48,7 @@
48
{#if $filetree.length === 0}
49
<div class="container">
50
<span>No folder/workspace open</span>
51
- <Button _class="toolbar-button" style="secondary" label="Open Folder" on:click={async () => {await openFolder()}} />
51
+ <Button _class="toolbar-button" style="secondary" label="Open Folder" on:click={async () => {await openFolderDialog()}} />
52
</div>
53
{:else}
54
<FileTreeView tree={$filetree} on:nodeselect={handleSelect} on:dblnodeselect={handleDblSelect} on:rightclick={handleClick} contextMenuEnabled canDrag></FileTreeView>