From 2f799ccfdace7d6dceb7d4d7ef62b6db01f6cc03 Mon Sep 17 00:00:00 2001 From: Trey Wallis <40307803+trey-wallis@users.noreply.github.com> Date: Fri, 15 Mar 2024 16:47:43 -0600 Subject: [PATCH] feat: save filters into settings --- bun.lockb | Bin 70257 -> 70952 bytes package.json | 62 ++++++++++++++------------- src/main.ts | 14 +++++- src/obsidian/vault-explorer-view.tsx | 8 +++- src/react/app-mount-provider.tsx | 8 +++- src/react/index.tsx | 32 ++++++++++++-- src/types.ts | 7 +++ 7 files changed, 93 insertions(+), 38 deletions(-) diff --git a/bun.lockb b/bun.lockb index 9afbb7d508b882c803db1430c1518d015a1644a7..c797463d5f247da6be587686d4ae3669b385c439 100755 GIT binary patch delta 11803 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 { + this.settings = value; + await this.saveSettings(); + //console.log("Settings saved", this.settings); + }, 1000); + this.registerView( VAULT_EXPLORER_VIEW, - (leaf) => new VaultExplorerView(leaf, this.app, this.settings) + (leaf) => new VaultExplorerView(leaf, this.app, this.settings, debounceSettingsChange) ); this.addRibbonIcon("map", "Vault Explorer", async () => { diff --git a/src/obsidian/vault-explorer-view.tsx b/src/obsidian/vault-explorer-view.tsx index f8f5907..1dfb8dc 100644 --- a/src/obsidian/vault-explorer-view.tsx +++ b/src/obsidian/vault-explorer-view.tsx @@ -6,22 +6,25 @@ import { createRoot, Root } from "react-dom/client"; import { VAULT_EXPLORER_VIEW } from "src/constants"; import ReactView from "src/react/index"; import AppMountProvider from "src/react/app-mount-provider"; -import { VaultExplorerPluginSettings } from "src/types"; +import { onSettingsChange, VaultExplorerPluginSettings } from "src/types"; export default class VaultExplorerView extends ItemView { root: Root | null; app: App; settings: VaultExplorerPluginSettings; + onSettingsChange: onSettingsChange; constructor( leaf: WorkspaceLeaf, app: App, - settings: VaultExplorerPluginSettings + settings: VaultExplorerPluginSettings, + onSettingsChange: onSettingsChange ) { super(leaf); this.root = null; this.app = app; this.settings = settings; + this.onSettingsChange = onSettingsChange; } getViewType(): string { @@ -40,6 +43,7 @@ export default class VaultExplorerView extends ItemView { app={this.app} leaf={this.leaf} settings={this.settings} + onSettingsChange={this.onSettingsChange} > diff --git a/src/react/app-mount-provider.tsx b/src/react/app-mount-provider.tsx index 6df4146..bd468b2 100644 --- a/src/react/app-mount-provider.tsx +++ b/src/react/app-mount-provider.tsx @@ -1,12 +1,13 @@ import { App, WorkspaceLeaf } from "obsidian"; import React from "react"; -import { VaultExplorerPluginSettings } from "src/types"; +import { VaultExplorerPluginSettings, onSettingsChange } from "src/types"; interface ContextProps { app: App; leaf: WorkspaceLeaf; settings: VaultExplorerPluginSettings; + onSettingsChange: onSettingsChange; } const MountContext = React.createContext(null); @@ -30,10 +31,13 @@ export default function AppMountProvider({ app, leaf, settings, + onSettingsChange, children, }: Props) { return ( - + {children} ); diff --git a/src/react/index.tsx b/src/react/index.tsx index 8a2888e..ebc8a0b 100644 --- a/src/react/index.tsx +++ b/src/react/index.tsx @@ -10,14 +10,40 @@ import Flex from "./flex"; import Stack from "./stack"; export default function ReactView() { - const [folderPath, setFolderPath] = React.useState(null); + const [folderPath, setFolderPath] = React.useState(""); const [search, setSearch] = React.useState(""); const [onlyFavorites, setOnlyFavorites] = React.useState(false); const [onlyModifiedToday, setOnlyModifiedToday] = React.useState(false); const [onlyCreatedToday, setOnlyCreatedToday] = React.useState(false); - const { app, settings } = useAppMount(); + const { app, settings, onSettingsChange } = useAppMount(); + + React.useEffect(() => { + setFolderPath(settings.folderFilter); + setSearch(settings.searchFilter); + setOnlyFavorites(settings.onlyFavorites); + setOnlyModifiedToday(settings.onlyModifiedToday); + setOnlyCreatedToday(settings.onlyCreatedToday); + }, []); + + React.useEffect(() => { + onSettingsChange({ + ...settings, + folderFilter: folderPath, + searchFilter: search, + onlyFavorites, + onlyModifiedToday, + onlyCreatedToday, + }); + }, [ + onSettingsChange, + folderPath, + search, + onlyFavorites, + onlyModifiedToday, + onlyCreatedToday, + ]); const { favoritePropertyName, @@ -138,7 +164,7 @@ export default function ReactView() { onChange={(e) => setSearch(e.target.value)} />