From 67221411f8d3fcd888a521482b1224cfe102752a Mon Sep 17 00:00:00 2001 From: Luke Leppan Date: Wed, 16 Nov 2022 11:48:56 +0200 Subject: [PATCH] Rewrite Mostly Stable --- src/main.ts | 7 +++++++ src/settings/Settings.ts | 4 ++-- src/status/StatusBar.ts | 2 +- src/utils/SvelteStores.ts | 8 ++++++++ src/view/view.ts | 2 ++ 5 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 src/utils/SvelteStores.ts diff --git a/src/main.ts b/src/main.ts index 2a04b80..22f0212 100644 --- a/src/main.ts +++ b/src/main.ts @@ -8,6 +8,7 @@ import { BetterWordCountSettings, DEFAULT_SETTINGS, } from "src/settings/Settings"; +import { settingsStore } from "./utils/SvelteStores"; export default class BetterWordCount extends Plugin { public settings: BetterWordCountSettings; @@ -20,6 +21,12 @@ export default class BetterWordCount extends Plugin { } async onload() { + // Settings Store + this.register( + settingsStore.subscribe((value) => { + this.settings = value; + }) + ); // Handle Settings this.settings = Object.assign(DEFAULT_SETTINGS, await this.loadData()); this.addSettingTab(new BetterWordCountSettingsTab(this.app, this)); diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index d9b752d..daf2a81 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -26,7 +26,7 @@ export interface BetterWordCountSettings { collectStats: boolean; } -export const DEFAULT_SETTINGS: BetterWordCountSettings = { +export const DEFAULT_SETTINGS: BetterWordCountSettings = Object.freeze({ statusBar: [ { prefix: "", @@ -41,4 +41,4 @@ export const DEFAULT_SETTINGS: BetterWordCountSettings = { ], countComments: false, collectStats: false, -}; +}); diff --git a/src/status/StatusBar.ts b/src/status/StatusBar.ts index c87c2db..1872edc 100644 --- a/src/status/StatusBar.ts +++ b/src/status/StatusBar.ts @@ -22,7 +22,7 @@ export default class StatusBar { ); this.statusBarEl.classList.add("mod-clickable"); - this.statusBarEl.setAttribute("aria-label", "Open Stats View"); + this.statusBarEl.setAttribute("aria-label", "Coming Soon"); this.statusBarEl.setAttribute("aria-label-position", "top"); this.statusBarEl.addEventListener("click", (ev: MouseEvent) => this.onClick(ev) diff --git a/src/utils/SvelteStores.ts b/src/utils/SvelteStores.ts new file mode 100644 index 0000000..5db9fda --- /dev/null +++ b/src/utils/SvelteStores.ts @@ -0,0 +1,8 @@ +import { + BetterWordCountSettings, + DEFAULT_SETTINGS, +} from "src/settings/Settings"; +import { writable } from "svelte/store"; + +export const settingsStore = + writable(DEFAULT_SETTINGS); diff --git a/src/view/view.ts b/src/view/view.ts index c352346..7f37c5b 100644 --- a/src/view/view.ts +++ b/src/view/view.ts @@ -1,9 +1,11 @@ import { ItemView, WorkspaceLeaf } from "obsidian"; import { STATS_ICON_NAME, VIEW_TYPE_STATS } from "src/constants"; +import type BetterWordCount from "src/main"; //@ts-ignore import Statistics from "./Statistics.svelte"; export default class StatsView extends ItemView { + private plugin: BetterWordCount; private statistics: Statistics; constructor(leaf: WorkspaceLeaf) {