diff --git a/.gitignore b/.gitignore index 411a75b8..592724ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# Obsidian development +main.js + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/package-lock.json b/package-lock.json index e386f50e..73166d1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,9 +63,9 @@ } }, "@types/codemirror": { - "version": "0.0.98", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.98.tgz", - "integrity": "sha512-cbty5LPayy2vNSeuUdjNA9tggG+go5vAxmnLDRWpiZI5a+RDBi9dlozy4/jW/7P/gletbBWbQREEa7A81YxstA==", + "version": "0.0.108", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", + "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", "dev": true, "requires": { "@types/tern": "*" @@ -78,9 +78,9 @@ "dev": true }, "@types/node": { - "version": "14.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz", - "integrity": "sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==", + "version": "14.17.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz", + "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg==", "dev": true }, "@types/resolve": { @@ -93,15 +93,15 @@ } }, "@types/showdown": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@types/showdown/-/showdown-1.9.3.tgz", - "integrity": "sha512-akvzSmrvY4J5d3tHzUUiQr0xpjd4Nb3uzWW6dtwzYJ+qW/KdWw5F8NLatnor5q/1LURHnzDA1ReEwCVqcatRnw==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/showdown/-/showdown-1.9.4.tgz", + "integrity": "sha512-50ehC3IAijfkvoNqmQ+VL73S7orOxmAK8ljQAFBv8o7G66lAZyxQj1L3BAv2dD86myLXI+sgKP1kcxAaxW356w==", "dev": true }, "@types/tern": { - "version": "0.23.3", - "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.3.tgz", - "integrity": "sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w==", + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", "dev": true, "requires": { "@types/estree": "*" @@ -121,9 +121,9 @@ } }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "brace-expansion": { @@ -137,9 +137,9 @@ } }, "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true }, "byte-base64": { @@ -204,9 +204,9 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "estree-walker": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz", - "integrity": "sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "find-up": { @@ -224,9 +224,9 @@ "dev": true }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -242,9 +242,9 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -271,9 +271,9 @@ "dev": true }, "highlight.js": { - "version": "9.18.5", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", - "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "dev": true }, "html-encoder-decoder": { @@ -304,9 +304,9 @@ "dev": true }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, "requires": { "has": "^1.0.3" @@ -365,12 +365,20 @@ "brace-expansion": "^1.1.7" } }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true + }, "obsidian": { - "version": "https://github.com/obsidianmd/obsidian-api/tarball/master", - "integrity": "sha512-DZWdNPqkozADT1Mb7MyR+vQi2jE4lFJJG9TRZW/kl6NSuL/OHLiKudBnmythlybeYkWta1YuvAb0LLGUJlfqdg==", + "version": "0.12.17", + "resolved": "https://github.com/obsidianmd/obsidian-api/tarball/master", + "integrity": "sha512-ff9KgT+qIsWIwumSUyZtS5SacmRnMhiqG9Q1frv0JG2Pp9qMkeAF+eckS8coxkd/yCk1uHNROxsNoYDJr9Cdmg==", "dev": true, "requires": { - "@types/codemirror": "0.0.98" + "@types/codemirror": "0.0.108", + "moment": "2.29.1" } }, "once": { @@ -415,15 +423,15 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "regex-escape": { @@ -443,22 +451,22 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, "rollup": { - "version": "2.34.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.34.2.tgz", - "integrity": "sha512-mvtQLqu3cNeoctS+kZ09iOPxrc1P1/Bt1z15enuQ5feyKOdM3MJAVFjjsygurDpSWn530xB4AlA83TWIzRstXA==", + "version": "2.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.0.tgz", + "integrity": "sha512-cHdv9GWd58v58rdseC8e8XIaPUo8a9cgZpnCMMDGZFDZKEODOiPPEQFXLriWr/TjXzhPPmG5bkAztPsOARIcGQ==", "dev": true, "requires": { - "fsevents": "~2.1.2" + "fsevents": "~2.3.2" } }, "rollup-plugin-inject": { @@ -520,13 +528,13 @@ } }, "showdown-highlight": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/showdown-highlight/-/showdown-highlight-2.1.5.tgz", - "integrity": "sha512-hpPl6TFmbQoGv9TWP2une2zLASFAdNX7+MiDvEe3bWvoazksIwsThwDyXmGZi9GVrC2Vjm97OnLOIDBhWk1rYw==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/showdown-highlight/-/showdown-highlight-2.1.8.tgz", + "integrity": "sha512-WqrMzMPYrWEwbA03GJT8mc82QxTe91kFwvNWpEPfTgEwd/5G32d44bn5Z7zMYgOcePnXInmYClldezqHDAyGZg==", "dev": true, "requires": { - "highlight.js": "^9.18.1", - "html-encoder-decoder": "^1.3.8", + "highlight.js": "^10.7.2", + "html-encoder-decoder": "^1.3.9", "showdown": "^1.9.1" } }, @@ -555,20 +563,20 @@ } }, "ts-md5": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/ts-md5/-/ts-md5-1.2.7.tgz", - "integrity": "sha512-emODogvKGWi1KO1l9c6YxLMBn6CEH3VrH5mVPIyOtxBG52BvV4jP3GWz6bOZCz61nLgBc3ffQYE4+EHfCD+V7w==" + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/ts-md5/-/ts-md5-1.2.10.tgz", + "integrity": "sha512-ZpBxcZRHSqVMWU4lE6pTMM6PTxSNZM6ziLwasimxxE/SiItgdalL8bKproawJ+6cPR4M2mSD4+cAgt90VYzjUQ==" }, "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, "typescript": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", - "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", + "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", "dev": true }, "which-module": { @@ -593,9 +601,9 @@ "dev": true }, "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yargs": { "version": "14.2.3", @@ -616,9 +624,9 @@ } }, "yargs-parser": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", - "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", + "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/package.json b/package.json index 978a79cb..01a9ccec 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@rollup/plugin-typescript": "^6.1.0", "@types/node": "^14.14.2", "@types/showdown": "^1.9.3", - "obsidian": "https://github.com/obsidianmd/obsidian-api/tarball/master", + "obsidian": "^0.12.17", "rollup": "^2.32.1", "rollup-plugin-node-polyfills": "^0.2.1", "showdown-highlight": "^2.1.5", diff --git a/src/anki.ts b/src/anki.ts index 23cc581d..3d91146b 100644 --- a/src/anki.ts +++ b/src/anki.ts @@ -9,7 +9,7 @@ export interface AnkiConnectRequest { } export function invoke(action: string, params={}) { - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest() xhr.addEventListener('error', () => reject('failed to issue request')); xhr.addEventListener('load', () => { diff --git a/src/format.ts b/src/format.ts index 0e81dfad..e09f9002 100644 --- a/src/format.ts +++ b/src/format.ts @@ -29,7 +29,7 @@ let converter: Converter = new Converter({ tables: true, tasklists: true, simpleLineBreaks: true, requireSpaceBeforeHeadingText: true, - extensions: [showdownHighlight] + extensions: [showdownHighlight as any] }) function escapeHtml(unsafe: string): string { diff --git a/src/settings.ts b/src/settings.ts index 238b9d6b..d53535a0 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -1,4 +1,5 @@ -import { PluginSettingTab, Setting, Notice, TFolder } from 'obsidian' +import { PluginSettingTab, Setting, Notice, TFolder, Plugin_2, App } from 'obsidian' +import MyPlugin from '../main'; import * as AnkiConnect from './anki' const defaultDescs = { @@ -15,8 +16,12 @@ const defaultDescs = { export class SettingsTab extends PluginSettingTab { + constructor(app: App, private plugin: MyPlugin) { + super(app, plugin) + } + setup_custom_regexp(note_type: string, row_cells: HTMLCollection) { - const plugin = (this as any).plugin + const plugin = this.plugin let regexp_section = plugin.settings["CUSTOM_REGEXPS"] let custom_regexp = new Setting(row_cells[1] as HTMLElement) .addText( @@ -34,7 +39,7 @@ export class SettingsTab extends PluginSettingTab { } setup_link_field(note_type: string, row_cells: HTMLCollection) { - const plugin = (this as any).plugin + const plugin = this.plugin let link_fields_section = plugin.settings.FILE_LINK_FIELDS let link_field = new Setting(row_cells[2] as HTMLElement) .addDropdown( @@ -72,7 +77,7 @@ export class SettingsTab extends PluginSettingTab { } setup_context_field(note_type: string, row_cells: HTMLCollection) { - const plugin = (this as any).plugin + const plugin = this.plugin let context_fields_section: Record = plugin.settings.CONTEXT_FIELDS let context_field = new Setting(row_cells[3] as HTMLElement) .addDropdown( @@ -116,7 +121,7 @@ export class SettingsTab extends PluginSettingTab { setup_note_table() { let {containerEl} = this; - const plugin = (this as any).plugin + const plugin = this.plugin containerEl.createEl('h3', {text: 'Note type settings'}) this.create_collapsible("Note Type Table") let note_type_table = containerEl.createEl('table', {cls: "anki-settings-table"}) @@ -150,7 +155,7 @@ export class SettingsTab extends PluginSettingTab { setup_syntax() { let {containerEl} = this; - const plugin = (this as any).plugin + const plugin = this.plugin let syntax_settings = containerEl.createEl('h3', {text: 'Syntax Settings'}) for (let key of Object.keys(plugin.settings["Syntax"])) { new Setting(syntax_settings) @@ -167,7 +172,7 @@ export class SettingsTab extends PluginSettingTab { setup_defaults() { let {containerEl} = this; - const plugin = (this as any).plugin + const plugin = this.plugin let defaults_settings = containerEl.createEl('h3', {text: 'Defaults'}) // To account for new add context @@ -226,11 +231,11 @@ export class SettingsTab extends PluginSettingTab { plugin.settings["Defaults"][key] = value await plugin.saveAllData() if (plugin.hasOwnProperty("schedule_id")) { - window.clearInterval(plugin.schedule_id) + window.clearInterval((plugin as any).schedule_id) } if (value != 0) { - plugin.schedule_id = window.setInterval(async () => await plugin.scanVault(), value * 1000 * 60) - plugin.registerInterval(plugin.schedule_id) + (plugin as any).schedule_id = window.setInterval(async () => await plugin.scanVault(), value * 1000 * 60) + plugin.registerInterval((plugin as any).schedule_id) } }) @@ -241,7 +246,7 @@ export class SettingsTab extends PluginSettingTab { } get_folders(): TFolder[] { - const app = (this as any).plugin.app + const app = this.plugin.app let folder_list: TFolder[] = [app.vault.getRoot()] for (let folder of folder_list) { let filtered_list: TFolder[] = folder.children.filter((element) => element.hasOwnProperty("children")) as TFolder[] @@ -251,7 +256,7 @@ export class SettingsTab extends PluginSettingTab { } setup_folder_deck(folder: TFolder, row_cells: HTMLCollection) { - const plugin = (this as any).plugin + const plugin = this.plugin let folder_decks = plugin.settings.FOLDER_DECKS if (!(folder_decks.hasOwnProperty(folder.path))) { folder_decks[folder.path] = "" @@ -270,7 +275,7 @@ export class SettingsTab extends PluginSettingTab { } setup_folder_tag(folder: TFolder, row_cells: HTMLCollection) { - const plugin = (this as any).plugin + const plugin = this.plugin let folder_tags = plugin.settings.FOLDER_TAGS if (!(folder_tags.hasOwnProperty(folder.path))) { folder_tags[folder.path] = "" @@ -290,7 +295,7 @@ export class SettingsTab extends PluginSettingTab { setup_folder_table() { let {containerEl} = this; - const plugin = (this as any).plugin + const plugin = this.plugin const folder_list = this.get_folders() containerEl.createEl('h3', {text: 'Folder settings'}) this.create_collapsible("Folder Table") @@ -327,7 +332,7 @@ export class SettingsTab extends PluginSettingTab { setup_buttons() { let {containerEl} = this - const plugin = (this as any).plugin + const plugin = this.plugin let action_buttons = containerEl.createEl('h3', {text: 'Actions'}) new Setting(action_buttons) .setName("Regenerate Note Type Table") @@ -338,19 +343,17 @@ export class SettingsTab extends PluginSettingTab { .onClick(async () => { new Notice("Need to connect to Anki to update note types...") try { + new Notice('Need to connect to Anki to generate fields dictionary...') plugin.note_types = await AnkiConnect.invoke('modelNames') plugin.regenerateSettingsRegexps() plugin.fields_dict = await plugin.loadFieldsDict() - if (Object.keys(plugin.fields_dict).length != plugin.note_types.length) { - new Notice('Need to connect to Anki to generate fields dictionary...') - try { - plugin.fields_dict = await plugin.generateFieldsDict() - new Notice("Fields dictionary successfully generated!") - } - catch(e) { - new Notice("Couldn't connect to Anki! Check console for error message.") - return - } + try { + plugin.fields_dict = await plugin.generateFieldsDict() + new Notice("Fields dictionary successfully generated!") + } + catch(e) { + new Notice("Couldn't connect to Anki! Check console for error message.") + return } await plugin.saveAllData() this.setup_display()