Merge remote-tracking branch 'origin/master' into 13-feature-support-modified-date-sort-for-folders
This commit is contained in:
commit
4e64925b2d
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "custom-sort",
|
"id": "custom-sort",
|
||||||
"name": "Custom File Explorer sorting",
|
"name": "Custom File Explorer sorting",
|
||||||
"version": "0.7.1",
|
"version": "0.7.2",
|
||||||
"minAppVersion": "0.15.0",
|
"minAppVersion": "0.15.0",
|
||||||
"description": "Allows for manual and automatic, config-driven reordering and sorting of files and folders in File Explorer",
|
"description": "Allows for manual and automatic, config-driven reordering and sorting of files and folders in File Explorer",
|
||||||
"author": "SebastianMC <SebastianMC.github@gmail.com>",
|
"author": "SebastianMC <SebastianMC.github@gmail.com>",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "obsidian-custom-sort",
|
"name": "obsidian-custom-sort",
|
||||||
"version": "0.7.1",
|
"version": "0.7.2",
|
||||||
"description": "Custom Sort plugin for Obsidian (https://obsidian.md)",
|
"description": "Custom Sort plugin for Obsidian (https://obsidian.md)",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
33
src/main.ts
33
src/main.ts
|
@ -29,12 +29,14 @@ interface CustomSortPluginSettings {
|
||||||
additionalSortspecFile: string
|
additionalSortspecFile: string
|
||||||
suspended: boolean
|
suspended: boolean
|
||||||
statusBarEntryEnabled: boolean
|
statusBarEntryEnabled: boolean
|
||||||
|
notificationsEnabled: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const DEFAULT_SETTINGS: CustomSortPluginSettings = {
|
const DEFAULT_SETTINGS: CustomSortPluginSettings = {
|
||||||
additionalSortspecFile: 'Inbox/Inbox.md',
|
additionalSortspecFile: 'Inbox/Inbox.md',
|
||||||
suspended: true, // if false by default, it would be hard to handle the auto-parse after plugin install
|
suspended: true, // if false by default, it would be hard to handle the auto-parse after plugin install
|
||||||
statusBarEntryEnabled: true
|
statusBarEntryEnabled: true,
|
||||||
|
notificationsEnabled: true
|
||||||
}
|
}
|
||||||
|
|
||||||
const SORTSPEC_FILE_NAME: string = 'sortspec.md'
|
const SORTSPEC_FILE_NAME: string = 'sortspec.md'
|
||||||
|
@ -53,6 +55,12 @@ export default class CustomSortPlugin extends Plugin {
|
||||||
sortSpecCache?: SortSpecsCollection | null
|
sortSpecCache?: SortSpecsCollection | null
|
||||||
initialAutoOrManualSortingTriggered: boolean
|
initialAutoOrManualSortingTriggered: boolean
|
||||||
|
|
||||||
|
showNotice(message: string, timeout?: number) {
|
||||||
|
if (this.settings.notificationsEnabled) {
|
||||||
|
new Notice(message, timeout)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
readAndParseSortingSpec() {
|
readAndParseSortingSpec() {
|
||||||
const mCache: MetadataCache = this.app.metadataCache
|
const mCache: MetadataCache = this.app.metadataCache
|
||||||
let failed: boolean = false
|
let failed: boolean = false
|
||||||
|
@ -91,14 +99,14 @@ export default class CustomSortPlugin extends Plugin {
|
||||||
})
|
})
|
||||||
|
|
||||||
if (this.sortSpecCache) {
|
if (this.sortSpecCache) {
|
||||||
new Notice(`Parsing custom sorting specification SUCCEEDED!`)
|
this.showNotice(`Parsing custom sorting specification SUCCEEDED!`)
|
||||||
} else {
|
} else {
|
||||||
if (anySortingSpecFound) {
|
if (anySortingSpecFound) {
|
||||||
errorMessage = errorMessage ? errorMessage : `No valid '${SORTINGSPEC_YAML_KEY}:' key(s) in YAML front matter or multiline YAML indentation error or general YAML syntax error`
|
errorMessage = errorMessage ? errorMessage : `No valid '${SORTINGSPEC_YAML_KEY}:' key(s) in YAML front matter or multiline YAML indentation error or general YAML syntax error`
|
||||||
} else {
|
} else {
|
||||||
errorMessage = `No custom sorting specification found or only empty specification(s)`
|
errorMessage = `No custom sorting specification found or only empty specification(s)`
|
||||||
}
|
}
|
||||||
new Notice(`Parsing custom sorting specification FAILED. Suspending the plugin.\n${errorMessage}`, ERROR_NOTICE_TIMEOUT)
|
this.showNotice(`Parsing custom sorting specification FAILED. Suspending the plugin.\n${errorMessage}`, ERROR_NOTICE_TIMEOUT)
|
||||||
this.settings.suspended = true
|
this.settings.suspended = true
|
||||||
this.saveSettings()
|
this.saveSettings()
|
||||||
}
|
}
|
||||||
|
@ -110,13 +118,13 @@ export default class CustomSortPlugin extends Plugin {
|
||||||
this.saveSettings()
|
this.saveSettings()
|
||||||
let iconToSet: string
|
let iconToSet: string
|
||||||
if (this.settings.suspended) {
|
if (this.settings.suspended) {
|
||||||
new Notice('Custom sort OFF');
|
this.showNotice('Custom sort OFF');
|
||||||
this.sortSpecCache = null
|
this.sortSpecCache = null
|
||||||
iconToSet = ICON_SORT_SUSPENDED
|
iconToSet = ICON_SORT_SUSPENDED
|
||||||
} else {
|
} else {
|
||||||
this.readAndParseSortingSpec();
|
this.readAndParseSortingSpec();
|
||||||
if (this.sortSpecCache) {
|
if (this.sortSpecCache) {
|
||||||
new Notice('Custom sort ON');
|
this.showNotice('Custom sort ON');
|
||||||
this.initialAutoOrManualSortingTriggered = true
|
this.initialAutoOrManualSortingTriggered = true
|
||||||
iconToSet = ICON_SORT_ENABLED_ACTIVE
|
iconToSet = ICON_SORT_ENABLED_ACTIVE
|
||||||
} else {
|
} else {
|
||||||
|
@ -180,7 +188,7 @@ export default class CustomSortPlugin extends Plugin {
|
||||||
this.readAndParseSortingSpec()
|
this.readAndParseSortingSpec()
|
||||||
this.initialAutoOrManualSortingTriggered = true
|
this.initialAutoOrManualSortingTriggered = true
|
||||||
if (this.sortSpecCache) { // successful read of sorting specifications?
|
if (this.sortSpecCache) { // successful read of sorting specifications?
|
||||||
new Notice('Custom sort ON')
|
this.showNotice('Custom sort ON')
|
||||||
const fileExplorerView: FileExplorerView = this.getFileExplorer()
|
const fileExplorerView: FileExplorerView = this.getFileExplorer()
|
||||||
if (fileExplorerView) {
|
if (fileExplorerView) {
|
||||||
setIcon(this.ribbonIconEl, ICON_SORT_ENABLED_ACTIVE)
|
setIcon(this.ribbonIconEl, ICON_SORT_ENABLED_ACTIVE)
|
||||||
|
@ -342,5 +350,18 @@ class CustomSortSettingTab extends PluginSettingTab {
|
||||||
}
|
}
|
||||||
await this.plugin.saveSettings();
|
await this.plugin.saveSettings();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
new Setting(containerEl)
|
||||||
|
.setName('Enable notifications of plugin state changes')
|
||||||
|
.setDesc('The plugin can show notifications about its state changes: e.g. when successfully parsed and applied'
|
||||||
|
+ ' the custom sorting specification, or, when the parsing failed. If the notifications are disabled,'
|
||||||
|
+ ' the only indicator of plugin state is the ribbon button icon. The developer console presents the parsing'
|
||||||
|
+ ' error messages regardless if the notifications are enabled or not.')
|
||||||
|
.addToggle(toggle => toggle
|
||||||
|
.setValue(this.plugin.settings.notificationsEnabled)
|
||||||
|
.onChange(async (value) => {
|
||||||
|
this.plugin.settings.notificationsEnabled = value;
|
||||||
|
await this.plugin.saveSettings();
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,6 @@
|
||||||
"0.6.1": "0.12.0",
|
"0.6.1": "0.12.0",
|
||||||
"0.6.2": "0.12.0",
|
"0.6.2": "0.12.0",
|
||||||
"0.7.0": "0.15.0",
|
"0.7.0": "0.15.0",
|
||||||
"0.7.1": "0.15.0"
|
"0.7.1": "0.15.0",
|
||||||
|
"0.7.2": "0.15.0"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue