import { App, MarkdownView, Plugin, PluginSettingTab, Setting } from "obsidian"; import { encryptMarkdown } from "src/encryption"; // Remember to rename these classes and interfaces! interface MyPluginSettings { mySetting: string; } const DEFAULT_SETTINGS: MyPluginSettings = { mySetting: "default", }; export default class MyPlugin extends Plugin { settings: MyPluginSettings; async onload() { await this.loadSettings(); // This adds a complex command that can check whether the current state of the app allows execution of the command this.addCommand({ id: "open-sample-modal-complex", name: "Open sample modal (complex)", checkCallback: (checking: boolean) => { // Conditions to check const markdownView = this.app.workspace.getActiveViewOfType(MarkdownView); if (markdownView) { // If checking is true, we're simply "checking" if the command can be run. // If checking is false, then we want to actually perform the operation. if (!checking) { this.shareNote(markdownView); } // This command will only show up in Command Palette when the check function returns true return true; } }, }); // This adds a settings tab so the user can configure various aspects of the plugin this.addSettingTab(new SampleSettingTab(this.app, this)); } // ENCRYPT AND SHARE MD NOTE private shareNote(mdView: MarkdownView) { const cryptData = encryptMarkdown(mdView); console.log(cryptData); } onunload() {} async loadSettings() { this.settings = Object.assign( {}, DEFAULT_SETTINGS, await this.loadData() ); } async saveSettings() { await this.saveData(this.settings); } } class SampleSettingTab extends PluginSettingTab { plugin: MyPlugin; constructor(app: App, plugin: MyPlugin) { super(app, plugin); this.plugin = plugin; } display(): void { const { containerEl } = this; containerEl.empty(); containerEl.createEl("h2", { text: "Settings for my awesome plugin." }); new Setting(containerEl) .setName("Setting #1") .setDesc("It's a secret") .addText((text) => text .setPlaceholder("Enter your secret") .setValue(this.plugin.settings.mySetting) .onChange(async (value) => { console.log("Secret: " + value); this.plugin.settings.mySetting = value; await this.plugin.saveSettings(); }) ); } }