#48 - Added new folder registration message

This commit is contained in:
Elio Struyf
2021-08-05 18:14:12 +02:00
parent e51911ed83
commit 10268fc60f
8 changed files with 49 additions and 28 deletions
+1
View File
@@ -3,6 +3,7 @@
## [2.x.x] - 2020-08-xx
- [#47](https://github.com/estruyf/vscode-front-matter/issues/#47): Fix when table shows only value `0`
- [#48](https://github.com/estruyf/vscode-front-matter/issues/#48): Added new folder registration message + notification helper
- [#50](https://github.com/estruyf/vscode-front-matter/issues/#50): Fix in the table rendering of rows
## [2.1.0] - 2020-08-04
+4 -3
View File
@@ -5,6 +5,7 @@ import { CONFIG_KEY, SETTING_DATE_FORMAT, EXTENSION_NAME, SETTING_SLUG_PREFIX, S
import { format } from "date-fns";
import { ArticleHelper, SettingsHelper, SlugHelper } from '../helpers';
import matter = require('gray-matter');
import { Notifications } from '../helpers/Notifications';
export class Article {
@@ -53,7 +54,7 @@ export class Article {
}
if (options.length === 0) {
vscode.window.showInformationMessage(`${EXTENSION_NAME}: No ${type === TaxonomyType.Tag ? "tags" : "categories"} configured.`);
Notifications.info(`No ${type === TaxonomyType.Tag ? "tags" : "categories"} configured.`);
return;
}
@@ -88,7 +89,7 @@ export class Article {
try {
ArticleHelper.update(editor, article);
} catch (e) {
vscode.window.showErrorMessage(`${EXTENSION_NAME}: Something failed while parsing the date format. Check your "${CONFIG_KEY}${SETTING_DATE_FORMAT}" setting.`);
Notifications.error(`Something failed while parsing the date format. Check your "${CONFIG_KEY}${SETTING_DATE_FORMAT}" setting.`);
console.log(e.message);
}
}
@@ -135,7 +136,7 @@ export class Article {
ArticleHelper.update(editor, article);
} catch (e) {
vscode.window.showErrorMessage(`${EXTENSION_NAME}: Something failed while parsing the date format. Check your "${CONFIG_KEY}${SETTING_DATE_FORMAT}" setting.`);
Notifications.error(`Something failed while parsing the date format. Check your "${CONFIG_KEY}${SETTING_DATE_FORMAT}" setting.`);
console.log(e.message);
}
}
+7 -3
View File
@@ -4,6 +4,7 @@ import { basename } from "path";
import { ContentFolder } from "../models";
import uniqBy = require("lodash.uniqby");
import { Template } from "./Template";
import { Notifications } from "../helpers/Notifications";
export class Folders {
@@ -15,7 +16,7 @@ export class Folders {
const folders = Folders.get();
if (!folders || folders.length === 0) {
window.showWarningMessage(`${EXTENSION_NAME}: There are no known content locations defined in this project.`);
Notifications.warning(`There are no known content locations defined in this project.`);
return;
}
@@ -24,7 +25,7 @@ export class Folders {
});
if (!selectedFolder) {
window.showWarningMessage(`${EXTENSION_NAME}: You didn't select a place where you wanted to create your content.`);
Notifications.warning(`You didn't select a place where you wanted to create your content.`);
return;
}
@@ -50,7 +51,8 @@ export class Folders {
const exists = folders.find(f => f.paths.includes(folder.fsPath) || f.paths.includes(wslPath));
if (exists) {
return window.showInformationMessage(`Folder is already registered`);
Notifications.warning(`Folder is already registered`);
return;
}
const folderName = await window.showInputBox({
@@ -67,6 +69,8 @@ export class Folders {
folders = uniqBy(folders, f => f.fsPath);
await Folders.update(folders);
Notifications.info(`Folder registered`);
}
Folders.updateVsCodeCtx();
+5 -4
View File
@@ -6,6 +6,7 @@ import { CONFIG_KEY, SETTING_TAXONOMY_TAGS, SETTING_TAXONOMY_CATEGORIES, EXTENSI
import { ArticleHelper, SettingsHelper, FilesHelper } from '../helpers';
import { TomlEngine, getFmLanguage, getFormatOpts } from '../helpers/TomlEngine';
import { DumpOptions } from 'js-yaml';
import { Notifications } from '../helpers/Notifications';
export class Settings {
@@ -29,7 +30,7 @@ export class Settings {
}
if (options.find(o => o === newOption)) {
vscode.window.showInformationMessage(`${EXTENSION_NAME}: The provided ${type === TaxonomyType.Tag ? "tag" : "category"} already exists.`);
Notifications.info(`The provided ${type === TaxonomyType.Tag ? "tag" : "category"} already exists.`);
return;
}
@@ -145,7 +146,7 @@ export class Settings {
await config.update(SETTING_TAXONOMY_CATEGORIES, crntCategories);
// Done
vscode.window.showInformationMessage(`${EXTENSION_NAME}: Export completed. Tags: ${crntTags.length} - Categories: ${crntCategories.length}.`);
Notifications.info(`Export completed. Tags: ${crntTags.length} - Categories: ${crntCategories.length}.`);
});
}
@@ -171,7 +172,7 @@ export class Settings {
let options = SettingsHelper.getTaxonomy(type);
if (!options || options.length === 0) {
vscode.window.showInformationMessage(`${EXTENSION_NAME}: No ${type === TaxonomyType.Tag ? "tags" : "categories"} configured.`);
Notifications.info(`No ${type === TaxonomyType.Tag ? "tags" : "categories"} configured.`);
return;
}
@@ -273,7 +274,7 @@ export class Settings {
}
await SettingsHelper.update(type, options);
vscode.window.showInformationMessage(`${EXTENSION_NAME}: ${newOptionValue ? "Remapping" : "Deleation"} of the ${selectedOption} ${type === TaxonomyType.Tag ? "tag" : "category"} completed.`);
Notifications.info(`${newOptionValue ? "Remapping" : "Deleation"} of the ${selectedOption} ${type === TaxonomyType.Tag ? "tag" : "category"} completed.`);
});
}
}
+10 -16
View File
@@ -6,6 +6,7 @@ import { format } from 'date-fns';
import sanitize from '../helpers/Sanitize';
import { ArticleHelper } from '../helpers';
import { Article } from '.';
import { Notifications } from '../helpers/Notifications';
export class Template {
@@ -18,18 +19,18 @@ export class Template {
const prefix = config.get<string>(SETTING_TEMPLATES_PREFIX);
if (!folderPath) {
this.showNoTemplates(`Incorrect project folder path retrieved.`);
Notifications.warning(`Incorrect project folder path retrieved.`);
return;
}
if (!folder) {
this.showNoTemplates(`No templates found.`);
Notifications.warning(`No templates found.`);
return;
}
const templates = await vscode.workspace.findFiles(`${folder}/**/*`, "**/node_modules/**,**/archetypes/**");
if (!templates || templates.length === 0) {
this.showNoTemplates(`No templates found.`);
Notifications.warning(`No templates found.`);
return;
}
@@ -37,7 +38,7 @@ export class Template {
placeHolder: `Select the article template to use`
});
if (!selectedTemplate) {
this.showNoTemplates(`No template selected.`);
Notifications.warning(`No template selected.`);
return;
}
@@ -46,14 +47,14 @@ export class Template {
placeHolder: `Article title`
});
if (!titleValue) {
this.showNoTemplates(`You did not specify an article title.`);
Notifications.warning(`You did not specify an article title.`);
return;
}
// Start the template read
const template = templates.find(t => t.fsPath.endsWith(selectedTemplate));
if (!template) {
this.showNoTemplates(`Article template could not be found.`);
Notifications.warning(`Article template could not be found.`);
return;
}
@@ -66,7 +67,7 @@ export class Template {
const newFilePath = path.join(folderPath, newFileName);
if (fs.existsSync(newFilePath)) {
this.showNoTemplates(`File already exists, please remove it before creating a new one with the same title.`);
Notifications.warning(`File already exists, please remove it before creating a new one with the same title.`);
return;
}
@@ -76,7 +77,7 @@ export class Template {
// Update the properties inside the template
let frontMatter = ArticleHelper.getFrontMatterByPath(newFilePath);
if (!frontMatter) {
this.showNoTemplates(`Something failed when retrieving the newly created file.`);
Notifications.warning(`Something failed when retrieving the newly created file.`);
return;
}
@@ -101,13 +102,6 @@ export class Template {
vscode.window.showTextDocument(txtDoc);
}
vscode.window.showInformationMessage(`${EXTENSION_NAME}: Your new article has been created.`);
}
/**
* Show a warning message when no templates are found
*/
private static showNoTemplates(value: string) {
vscode.window.showWarningMessage(`${EXTENSION_NAME}: ${value}`);
Notifications.info(`Your new article has been created.`);
}
}
+2 -1
View File
@@ -1,5 +1,6 @@
import * as vscode from 'vscode';
import { EXTENSION_NAME } from '../constants';
import { Notifications } from './Notifications';
export class FilesHelper {
@@ -11,7 +12,7 @@ export class FilesHelper {
const markdownFiles = await vscode.workspace.findFiles('**/*.markdown', "**/node_modules/**,**/archetypes/**");
const mdxFiles = await vscode.workspace.findFiles('**/*.mdx', "**/node_modules/**,**/archetypes/**");
if (!mdFiles && !markdownFiles) {
vscode.window.showInformationMessage(`${EXTENSION_NAME}: No MD files found.`);
Notifications.info(`No MD files found.`);
return null;
}
+18
View File
@@ -0,0 +1,18 @@
import { window } from "vscode";
import { EXTENSION_NAME } from "../constants";
export class Notifications {
public static info(message: string) {
window.showInformationMessage(`${EXTENSION_NAME}: ${message}`);
}
public static warning(message: string) {
window.showWarningMessage(`${EXTENSION_NAME}: ${message}`);
}
public static error(message: string) {
window.showErrorMessage(`${EXTENSION_NAME}: ${message}`);
}
}
+2 -1
View File
@@ -13,6 +13,7 @@ import { exec } from 'child_process';
import * as path from 'path';
import { fromMarkdown } from 'mdast-util-from-markdown';
import { Content } from 'mdast';
import { Notifications } from '../helpers/Notifications';
export class ExplorerView implements WebviewViewProvider, Disposable {
@@ -206,7 +207,7 @@ export class ExplorerView implements WebviewViewProvider, Disposable {
exec(`${customScript.nodeBin || "node"} ${path.join(wsPath, msg.data.script)} "${wsPath}" "${editor?.document.uri.fsPath}" ${articleData}`, (error, stdout) => {
if (error) {
window.showErrorMessage(`${msg?.data?.title}: ${error.message}`);
Notifications.error(`${msg?.data?.title}: ${error.message}`);
return;
}