diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c64821b..317f008b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ ### 🐞 Fixes +- [#950](https://github.com/estruyf/vscode-front-matter/issues/950): Fix for template is not applied to new content type when created - [#958](https://github.com/estruyf/vscode-front-matter/issues/958): Fix variable frontmatter leads to error - [#984](https://github.com/estruyf/vscode-front-matter/issues/984): Fix in `frontMatter.global.timezone` is invalid - [#1004](https://github.com/estruyf/vscode-front-matter/issues/1004): Fix for `mediaDB.json` containing full paths on Windows instead of relative paths diff --git a/src/helpers/ArticleHelper.ts b/src/helpers/ArticleHelper.ts index bb592b8d..0c668202 100644 --- a/src/helpers/ArticleHelper.ts +++ b/src/helpers/ArticleHelper.ts @@ -149,12 +149,17 @@ export class ArticleHelper { * @returns A promise that resolves to the contents of the file, or undefined if the file does not exist. */ public static async getContents(filePath: string): Promise { - const file = await workspace.fs.readFile(Uri.file(parseWinPath(filePath))); - if (!file) { + try { + const file = await workspace.fs.readFile(Uri.file(parseWinPath(filePath))); + if (!file) { + return undefined; + } + + return new TextDecoder().decode(file); + } catch (error) { + Logger.error(`ArticleHelper.getContents: Failed to read file ${filePath}: ${error}`); return undefined; } - - return new TextDecoder().decode(file); } /** diff --git a/src/helpers/ContentType.ts b/src/helpers/ContentType.ts index 40328609..26e74cff 100644 --- a/src/helpers/ContentType.ts +++ b/src/helpers/ContentType.ts @@ -956,8 +956,25 @@ export class ContentType { let templatePath = contentType.template; let templateData: ParsedFrontMatter | null | undefined = null; if (templatePath) { - templatePath = Folders.getAbsFilePath(templatePath); - templateData = await ArticleHelper.getFrontMatterByPath(templatePath); + try { + templatePath = Folders.getAbsFilePath(templatePath); + templateData = await ArticleHelper.getFrontMatterByPath(templatePath); + if (!templateData) { + Logger.warning( + `ContentType.create: Template file not found or could not be parsed: ${templatePath}` + ); + Notifications.warning( + l10n.t(LocalizationKey.commonError) + ` Template not found: ${templatePath}` + ); + } + } catch (error) { + Logger.error( + `ContentType.create: Error loading template from ${templatePath}: ${error}` + ); + Notifications.error( + l10n.t(LocalizationKey.commonError) + ` Template loading failed: ${templatePath}` + ); + } } const newFilePath: string | undefined = await ArticleHelper.createContent(