@setoelkahfi / svara / commits / 625681a

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>