diff --git a/src/event/types.ts b/src/event/types.ts index 5e06a88..5db7410 100644 --- a/src/event/types.ts +++ b/src/event/types.ts @@ -1,23 +1,24 @@ -export type PluginEvent = - | "file-rename" - | "file-create" - | "file-delete" - | "file-modify" - | "metadata-change" - | "properties-filter-update" - | "folder-rename" - | "folder-delete" - | "folder-create" - | "page-size-setting-change" - | "title-wrapping-setting-change" - | "property-setting-change" - | "device-registration-change" - | "clock-updates-setting-change" - | "filter-toggle-setting-change" - | "scroll-buttons-setting-change" - | "view-toggle-setting-change" - | "file-icons-setting-change" - | "filter-groups-wrapping-setting-change" - | "load-social-media-image-setting-change"; +export enum PluginEvent { + FILE_RENAME = "file-rename", + FILE_CREATE = "file-create", + FILE_DELETE = "file-delete", + FILE_MODIFY = "file-modify", + METADATA_CHANGE = "metadata-change", + PROPERTIES_FILTER_UPDATE = "properties-filter-update", + FOLDER_RENAME = "folder-rename", + FOLDER_DELETE = "folder-delete", + FOLDER_CREATE = "folder-create", + PAGE_SIZE_SETTING_CHANGE = "page-size-setting-change", + TITLE_WRAPPING_SETTING_CHANGE = "title-wrapping-setting-change", + PROPERTY_SETTING_CHANGE = "property-setting-change", + DEVICE_REGISTRATION_CHANGE = "device-registration-change", + CLOCK_UPDATES_SETTING_CHANGE = "clock-updates-setting-change", + FILTER_TOGGLE_SETTING_CHANGE = "filter-toggle-setting-change", + SCROLL_BUTTONS_SETTING_CHANGE = "scroll-buttons-setting-change", + VIEW_TOGGLE_SETTING_CHANGE = "view-toggle-setting-change", + FILE_ICONS_SETTING_CHANGE = "file-icons-setting-change", + FILTER_GROUPS_WRAPPING_SETTING_CHANGE = "filter-groups-wrapping-setting-change", + LOAD_SOCIAL_MEDIA_IMAGE_SETTING_CHANGE = "load-social-media-image-setting-change", +} export type EventCallback = (...data: unknown[]) => void; diff --git a/src/main.ts b/src/main.ts index 2656540..339a122 100644 --- a/src/main.ts +++ b/src/main.ts @@ -17,6 +17,7 @@ import { formatMessageForLogger, stringToLogLevel } from "./logger"; import { moveFocus } from "./focus-utils"; import { loadDeviceId } from "./svelte/shared/services/device-id-utils"; import License from "./svelte/shared/services/license"; +import { PluginEvent } from "./event/types"; export default class VaultExplorerPlugin extends Plugin { settings: VaultExplorerPluginSettings = DEFAULT_SETTINGS; @@ -67,13 +68,13 @@ export default class VaultExplorerPlugin extends Plugin { (file: TAbstractFile, oldPath: string) => { if (file instanceof TFolder) { EventManager.getInstance().emit( - "folder-rename", + PluginEvent.FOLDER_RENAME, oldPath, file ); } else if (file instanceof TFile) { EventManager.getInstance().emit( - "file-rename", + PluginEvent.FILE_RENAME, oldPath, file ); @@ -87,9 +88,15 @@ export default class VaultExplorerPlugin extends Plugin { this.registerEvent( this.app.vault.on("delete", (file: TAbstractFile) => { if (file instanceof TFolder) { - EventManager.getInstance().emit("folder-delete", file.path); + EventManager.getInstance().emit( + PluginEvent.FOLDER_DELETE, + file.path + ); } else if (file instanceof TFile) { - EventManager.getInstance().emit("file-delete", file.path); + EventManager.getInstance().emit( + PluginEvent.FILE_DELETE, + file.path + ); } }) ); @@ -103,9 +110,15 @@ export default class VaultExplorerPlugin extends Plugin { if (!this.layoutReady) return; if (file instanceof TFolder) { - EventManager.getInstance().emit("folder-create", file); + EventManager.getInstance().emit( + PluginEvent.FOLDER_CREATE, + file + ); } else if (file instanceof TFile) { - EventManager.getInstance().emit("file-create", file); + EventManager.getInstance().emit( + PluginEvent.FILE_CREATE, + file + ); } }) ); @@ -116,7 +129,10 @@ export default class VaultExplorerPlugin extends Plugin { this.app.vault.on("modify", (file: TAbstractFile) => { if (file instanceof TFile) { if (file.extension !== "md") return; - EventManager.getInstance().emit("file-modify", file); + EventManager.getInstance().emit( + PluginEvent.FILE_MODIFY, + file + ); } }) ); @@ -126,7 +142,10 @@ export default class VaultExplorerPlugin extends Plugin { this.registerEvent( this.app.metadataCache.on("changed", (file) => { if (file.extension !== "md") return; - EventManager.getInstance().emit("metadata-change", file); + EventManager.getInstance().emit( + PluginEvent.METADATA_CHANGE, + file + ); }) ); diff --git a/src/obsidian/vault-explorer-settings-tab.ts b/src/obsidian/vault-explorer-settings-tab.ts index eb3771d..05fa15a 100644 --- a/src/obsidian/vault-explorer-settings-tab.ts +++ b/src/obsidian/vault-explorer-settings-tab.ts @@ -1,4 +1,4 @@ -import { App, PluginSettingTab, Setting } from "obsidian"; +import { App, Plugin, PluginSettingTab, Setting } from "obsidian"; import VaultExplorerPlugin from "src/main"; import { getDropdownOptionsForProperties, @@ -19,6 +19,7 @@ import EventManager from "src/event/event-manager"; import LicenseKeyApp from "../svelte/license-key-app/index.svelte"; import License from "src/svelte/shared/services/license"; import "./styles.css"; +import { PluginEvent } from "src/event/types"; export default class VaultExplorerSettingsTab extends PluginSettingTab { plugin: VaultExplorerPlugin; @@ -64,7 +65,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.titleWrapping = value as WordBreak; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "title-wrapping-setting-change" + PluginEvent.TITLE_WRAPPING_SETTING_CHANGE ); } ); @@ -84,7 +85,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { value as FlexWrap; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "filter-groups-wrapping-setting-change" + PluginEvent.FILTER_GROUPS_WRAPPING_SETTING_CHANGE ); } ); @@ -100,7 +101,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.enableFileIcons = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "file-icons-setting-change" + PluginEvent.FILE_ICONS_SETTING_CHANGE ); }) ); @@ -139,7 +140,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.pageSize = parseInt(value); await this.plugin.saveSettings(); EventManager.getInstance().emit( - "page-size-setting-change" + PluginEvent.PAGE_SIZE_SETTING_CHANGE ); }) ); @@ -153,7 +154,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.filters.search.isEnabled = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "filter-toggle-setting-change" + PluginEvent.FILTER_TOGGLE_SETTING_CHANGE ); }) ); @@ -168,7 +169,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "filter-toggle-setting-change" + PluginEvent.FILTER_TOGGLE_SETTING_CHANGE ); }) ); @@ -183,7 +184,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "filter-toggle-setting-change" + PluginEvent.FILTER_TOGGLE_SETTING_CHANGE ); }) ); @@ -195,7 +196,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.filters.sort.isEnabled = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "filter-toggle-setting-change" + PluginEvent.FILTER_TOGGLE_SETTING_CHANGE ); }) ); @@ -207,7 +208,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.filters.custom.isEnabled = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "filter-toggle-setting-change" + PluginEvent.FILTER_TOGGLE_SETTING_CHANGE ); }) ); @@ -223,7 +224,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.updateViewOrder(TExplorerView.DASHBOARD, value); await this.plugin.saveSettings(); EventManager.getInstance().emit( - "view-toggle-setting-change" + PluginEvent.VIEW_TOGGLE_SETTING_CHANGE ); }) ); @@ -236,7 +237,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.updateViewOrder(TExplorerView.GRID, value); await this.plugin.saveSettings(); EventManager.getInstance().emit( - "view-toggle-setting-change" + PluginEvent.VIEW_TOGGLE_SETTING_CHANGE ); }) ); @@ -249,7 +250,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.updateViewOrder(TExplorerView.LIST, value); await this.plugin.saveSettings(); EventManager.getInstance().emit( - "view-toggle-setting-change" + PluginEvent.VIEW_TOGGLE_SETTING_CHANGE ); }) ); @@ -262,7 +263,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.updateViewOrder(TExplorerView.FEED, value); await this.plugin.saveSettings(); EventManager.getInstance().emit( - "view-toggle-setting-change" + PluginEvent.VIEW_TOGGLE_SETTING_CHANGE ); }) ); @@ -277,7 +278,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.updateViewOrder(TExplorerView.TABLE, value); await this.plugin.saveSettings(); EventManager.getInstance().emit( - "view-toggle-setting-change" + PluginEvent.VIEW_TOGGLE_SETTING_CHANGE ); }) ); @@ -295,7 +296,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.updateViewOrder(TExplorerView.RECOMMENDED, value); await this.plugin.saveSettings(); EventManager.getInstance().emit( - "view-toggle-setting-change" + PluginEvent.VIEW_TOGGLE_SETTING_CHANGE ); }) ); @@ -310,7 +311,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.updateViewOrder(TExplorerView.RELATED, value); await this.plugin.saveSettings(); EventManager.getInstance().emit( - "view-toggle-setting-change" + PluginEvent.VIEW_TOGGLE_SETTING_CHANGE ); }) ); @@ -340,7 +341,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.properties.favorite = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "property-setting-change" + PluginEvent.PROPERTY_SETTING_CHANGE ); }) ); @@ -358,7 +359,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.properties.url = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "property-setting-change" + PluginEvent.PROPERTY_SETTING_CHANGE ); }) ); @@ -376,7 +377,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.properties.imageUrl = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "property-setting-change" + PluginEvent.PROPERTY_SETTING_CHANGE ); }) ); @@ -405,7 +406,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.properties.createdDate = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "property-setting-change" + PluginEvent.PROPERTY_SETTING_CHANGE ); }) ); @@ -434,7 +435,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.properties.modifiedDate = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "property-setting-change" + PluginEvent.PROPERTY_SETTING_CHANGE ); }) ); @@ -452,7 +453,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.properties.custom1 = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "property-setting-change" + PluginEvent.PROPERTY_SETTING_CHANGE ); }) ); @@ -468,7 +469,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.properties.custom2 = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "property-setting-change" + PluginEvent.PROPERTY_SETTING_CHANGE ); }) ); @@ -484,7 +485,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.properties.custom3 = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "property-setting-change" + PluginEvent.PROPERTY_SETTING_CHANGE ); }) ); @@ -503,7 +504,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { this.plugin.settings.enableClockUpdates = value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "clock-updates-setting-change" + PluginEvent.CLOCK_UPDATES_SETTING_CHANGE ); }) ); @@ -542,14 +543,14 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { onClose() { this.component?.$destroy(); EventManager.getInstance().off( - "device-registration-change", + PluginEvent.DEVICE_REGISTRATION_CHANGE, this.renderLoadSocialMediaImageSetting ); } private setupEventListeners() { EventManager.getInstance().on( - "device-registration-change", + PluginEvent.DEVICE_REGISTRATION_CHANGE, this.renderLoadSocialMediaImageSetting ); } @@ -589,7 +590,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { value; await this.plugin.saveSettings(); EventManager.getInstance().emit( - "load-social-media-image-setting-change" + PluginEvent.LOAD_SOCIAL_MEDIA_IMAGE_SETTING_CHANGE ); }) ); diff --git a/src/svelte/app/components/feed-card.svelte b/src/svelte/app/components/feed-card.svelte index e944346..de32b83 100644 --- a/src/svelte/app/components/feed-card.svelte +++ b/src/svelte/app/components/feed-card.svelte @@ -12,6 +12,7 @@ import { removeFrontmatterBlock } from "../services/utils/frontmatter-utils"; import Icon from "src/svelte/shared/components/icon.svelte"; import { getIconIdForFile } from "../services/file-icon"; + import { PluginEvent } from "src/event/types"; export let displayName: string; export let baseName: string; @@ -37,12 +38,12 @@ } EventManager.getInstance().on( - "file-icons-setting-change", + PluginEvent.FILE_ICONS_SETTING_CHANGE, handleFileIconsChange, ); return () => { EventManager.getInstance().off( - "file-icons-setting-change", + PluginEvent.FILE_ICONS_SETTING_CHANGE, handleFileIconsChange, ); }; @@ -54,12 +55,12 @@ } EventManager.getInstance().on( - "title-wrapping-setting-change", + PluginEvent.TITLE_WRAPPING_SETTING_CHANGE, handleTitleWrappingSettingChange, ); return () => { EventManager.getInstance().off( - "title-wrapping-setting-change", + PluginEvent.TITLE_WRAPPING_SETTING_CHANGE, handleTitleWrappingSettingChange, ); }; diff --git a/src/svelte/app/components/grid-card.svelte b/src/svelte/app/components/grid-card.svelte index 7b1b7ac..d9d613e 100644 --- a/src/svelte/app/components/grid-card.svelte +++ b/src/svelte/app/components/grid-card.svelte @@ -16,6 +16,7 @@ import Spacer from "src/svelte/shared/components/spacer.svelte"; import License from "src/svelte/shared/services/license"; import { fetchSocialMediaImage } from "../services/social-media-image"; + import { PluginEvent } from "src/event/types"; export let displayName: string; export let path: string; @@ -74,12 +75,12 @@ } EventManager.getInstance().on( - "load-social-media-image-setting-change", + PluginEvent.LOAD_SOCIAL_MEDIA_IMAGE_SETTING_CHANGE, handleLoadSocialMediaImageChange, ); return () => { EventManager.getInstance().off( - "load-social-media-image-setting-change", + PluginEvent.LOAD_SOCIAL_MEDIA_IMAGE_SETTING_CHANGE, handleLoadSocialMediaImageChange, ); }; @@ -91,12 +92,12 @@ } EventManager.getInstance().on( - "file-icons-setting-change", + PluginEvent.FILE_ICONS_SETTING_CHANGE, handleFileIconsChange, ); return () => { EventManager.getInstance().off( - "file-icons-setting-change", + PluginEvent.FILE_ICONS_SETTING_CHANGE, handleFileIconsChange, ); }; @@ -108,12 +109,12 @@ } EventManager.getInstance().on( - "title-wrapping-setting-change", + PluginEvent.TITLE_WRAPPING_SETTING_CHANGE, handleTitleWrappingSettingChange, ); return () => { EventManager.getInstance().off( - "title-wrapping-setting-change", + PluginEvent.TITLE_WRAPPING_SETTING_CHANGE, handleTitleWrappingSettingChange, ); }; diff --git a/src/svelte/app/components/list-item.svelte b/src/svelte/app/components/list-item.svelte index 6b29aaa..9f876c4 100644 --- a/src/svelte/app/components/list-item.svelte +++ b/src/svelte/app/components/list-item.svelte @@ -10,6 +10,7 @@ import { getIconIdForFile } from "../services/file-icon"; import { onMount } from "svelte"; import EventManager from "src/event/event-manager"; + import { PluginEvent } from "src/event/types"; export let displayName: string; export let baseName: string; @@ -19,6 +20,7 @@ let enableFileIcons: boolean = false; let plugin: VaultExplorerPlugin; + store.plugin.subscribe((p) => { plugin = p; enableFileIcons = plugin.settings.enableFileIcons; @@ -30,12 +32,12 @@ } EventManager.getInstance().on( - "file-icons-setting-change", + PluginEvent.FILE_ICONS_SETTING_CHANGE, handleFileIconsChange, ); return () => { EventManager.getInstance().off( - "file-icons-setting-change", + PluginEvent.FILE_ICONS_SETTING_CHANGE, handleFileIconsChange, ); }; diff --git a/src/svelte/app/index.svelte b/src/svelte/app/index.svelte index 8290e7a..5f1f813 100644 --- a/src/svelte/app/index.svelte +++ b/src/svelte/app/index.svelte @@ -56,6 +56,7 @@ import IconButton from "../shared/components/icon-button.svelte"; import CustomFilterModal from "src/obsidian/custom-filter-modal"; import FilterGroupList from "./components/filter-group-list.svelte"; + import { PluginEvent } from "src/event/types"; // ============================================ // Variables @@ -191,13 +192,13 @@ } EventManager.getInstance().on( - "filter-toggle-setting-change", + PluginEvent.FILTER_TOGGLE_SETTING_CHANGE, handleFilterToggleSettingChange, ); return () => { EventManager.getInstance().off( - "filter-toggle-setting-change", + PluginEvent.FILTER_TOGGLE_SETTING_CHANGE, handleFilterToggleSettingChange, ); }; @@ -223,7 +224,7 @@ updateTimeValues(); EventManager.getInstance().on( - "clock-updates-setting-change", + PluginEvent.CLOCK_UPDATES_SETTING_CHANGE, handleClockUpdatesSettingChange, ); @@ -232,7 +233,7 @@ clearInterval(timeValuesUpdateInterval); EventManager.getInstance().off( - "clock-updates-setting-change", + PluginEvent.CLOCK_UPDATES_SETTING_CHANGE, handleClockUpdatesSettingChange, ); }; @@ -249,12 +250,12 @@ } EventManager.getInstance().on( - "properties-filter-update", + PluginEvent.PROPERTIES_FILTER_UPDATE, handlePropertiesFilterUpdate, ); return () => { EventManager.getInstance().off( - "properties-filter-update", + PluginEvent.PROPERTIES_FILTER_UPDATE, handlePropertiesFilterUpdate, ); }; @@ -276,9 +277,15 @@ } }; - EventManager.getInstance().on("file-create", handleCreateFile); + EventManager.getInstance().on( + PluginEvent.FILE_CREATE, + handleCreateFile, + ); return () => { - EventManager.getInstance().off("file-create", handleCreateFile); + EventManager.getInstance().off( + PluginEvent.FILE_CREATE, + handleCreateFile, + ); }; }); @@ -298,9 +305,15 @@ } }; - EventManager.getInstance().on("file-delete", handleDeleteFile); + EventManager.getInstance().on( + PluginEvent.FILE_DELETE, + handleDeleteFile, + ); return () => { - EventManager.getInstance().off("file-delete", handleDeleteFile); + EventManager.getInstance().off( + PluginEvent.FILE_DELETE, + handleDeleteFile, + ); }; }); @@ -322,9 +335,15 @@ } }; - EventManager.getInstance().on("file-rename", handleFileRename); + EventManager.getInstance().on( + PluginEvent.FILE_RENAME, + handleFileRename, + ); return () => { - EventManager.getInstance().off("file-rename", handleFileRename); + EventManager.getInstance().off( + PluginEvent.FILE_RENAME, + handleFileRename, + ); }; }); @@ -343,9 +362,15 @@ } }; - EventManager.getInstance().on("file-modify", handleFileModify); + EventManager.getInstance().on( + PluginEvent.FILE_MODIFY, + handleFileModify, + ); return () => { - EventManager.getInstance().off("file-modify", handleFileModify); + EventManager.getInstance().off( + PluginEvent.FILE_MODIFY, + handleFileModify, + ); }; }); @@ -362,10 +387,13 @@ } }; - EventManager.getInstance().on("metadata-change", handleMetadataChange); + EventManager.getInstance().on( + PluginEvent.METADATA_CHANGE, + handleMetadataChange, + ); return () => { EventManager.getInstance().off( - "metadata-change", + PluginEvent.METADATA_CHANGE, handleMetadataChange, ); }; @@ -384,12 +412,12 @@ } EventManager.getInstance().on( - "view-toggle-setting-change", + PluginEvent.VIEW_TOGGLE_SETTING_CHANGE, handleViewToggleSettingChange, ); return () => { EventManager.getInstance().off( - "view-toggle-setting-change", + PluginEvent.VIEW_TOGGLE_SETTING_CHANGE, handleViewToggleSettingChange, ); }; @@ -407,12 +435,12 @@ } EventManager.getInstance().on( - "page-size-setting-change", + PluginEvent.PAGE_SIZE_SETTING_CHANGE, handlePageSizeSettingChange, ); return () => { EventManager.getInstance().off( - "page-size-setting-change", + PluginEvent.PAGE_SIZE_SETTING_CHANGE, handlePageSizeSettingChange, ); }; @@ -429,12 +457,12 @@ } EventManager.getInstance().on( - "property-setting-change", + PluginEvent.PROPERTY_SETTING_CHANGE, handlePropertySettingChange, ); return () => { EventManager.getInstance().off( - "property-setting-change", + PluginEvent.PROPERTY_SETTING_CHANGE, handlePropertySettingChange, ); }; diff --git a/src/svelte/custom-filter-app/components/folder-filter.svelte b/src/svelte/custom-filter-app/components/folder-filter.svelte index 2782c2f..8f089f5 100644 --- a/src/svelte/custom-filter-app/components/folder-filter.svelte +++ b/src/svelte/custom-filter-app/components/folder-filter.svelte @@ -1,6 +1,12 @@