Skip to content

Commit

Permalink
fix(obsidian/template): add error hint in template preview
Browse files Browse the repository at this point in the history
  • Loading branch information
aidenlx committed Sep 30, 2023
1 parent a9b1552 commit 577dd22
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 59 deletions.
13 changes: 10 additions & 3 deletions app/obsidian/src/note-feature/template-preview/base.ts
Expand Up @@ -102,9 +102,16 @@ export function create() {
[stateData.docItem, libId],
...annotations.map((i): IDLibID => [i.itemID, libId]),
]);
const notes = await plugin.databaseAPI
.getNotes(docItem.itemID, libId)
.then((notes) => plugin.noteParser.normalizeNotes(notes));

let notes: HelperExtra["notes"];
try {
notes = await plugin.databaseAPI
.getNotes(docItem.itemID, libId)
.then((notes) => plugin.noteParser.normalizeNotes(notes));
} catch (error) {
console.error(error);
notes = [];
}

set(() => ({
preview: {
Expand Down
123 changes: 67 additions & 56 deletions app/obsidian/src/note-feature/template-preview/preview.ts
Expand Up @@ -101,65 +101,76 @@ export class TemplatePreview extends TemplatePreviewBase {
let markdown = "";
const ctx = toCtx(this.plugin);
const renderer = this.plugin.templateRenderer;
switch (templateType) {
case "annotation": {
const annot = preview.annot ?? preview.annotations[0];
if (!annot) {
this.contentEl.setText("No annotation data available");
return;
try {
switch (templateType) {
case "annotation": {
const annot = preview.annot ?? preview.annotations[0];
if (!annot) {
this.contentEl.setText("No annotation data available");
return;
}
markdown = renderer.renderAnnot(annot, preview, ctx);
break;
}
markdown = renderer.renderAnnot(annot, preview, ctx);
break;
case "annots":
markdown = renderer.renderAnnots(preview, ctx);
break;
case "note":
markdown = renderer.renderNote(preview, ctx);
break;
case "field":
markdown = renderer.renderFrontmatter(preview, ctx);
break;
case "cite":
markdown = renderer.renderCitations([preview], ctx);
break;
case "cite2":
markdown = renderer.renderCitations([preview], ctx, true);
break;
case "colored":
markdown = renderer.renderColored({
content: "I'm Highlight",
color: "#FF000080",
colorName: "red",
bgColor: "#FF000080",
bgColorName: "red",
});
break;
default:
assertNever(templateType);
}
case "annots":
markdown = renderer.renderAnnots(preview, ctx);
break;
case "note":
markdown = renderer.renderNote(preview, ctx);
break;
case "field":
markdown = renderer.renderFrontmatter(preview, ctx);
break;
case "cite":
markdown = renderer.renderCitations([preview], ctx);
break;
case "cite2":
markdown = renderer.renderCitations([preview], ctx, true);
break;
case "colored":
markdown = renderer.renderColored({
content: "I'm Highlight",
color: "#FF000080",
colorName: "red",
bgColor: "#FF000080",
bgColorName: "red",
});
break;
default:
assertNever(templateType);
}
if (markdown === this.content?.markdown) {
return;
}
this.content?.unload();
this.contentEl.empty();
const prism = await loadPrism();
const html = prism.highlight(
markdown,
prism.languages.markdown,
"markdown",
);
if (markdown === this.content?.markdown) return;
this.content?.unload();
this.contentEl.empty();
const prism = await loadPrism();
const html = prism.highlight(
markdown,
prism.languages.markdown,
"markdown",
);

this.content = new PreviewContent(markdown);
this.contentEl
.createEl("pre")
.createEl("code", { cls: "language-markdown" }).innerHTML = html;
// await MarkdownRenderer.renderMarkdown(
// markdown,
// this.contentEl,
// ctx.sourcePath,
// this.content
// );
this.content = new PreviewContent(markdown);
this.contentEl
.createEl("pre")
.createEl("code", { cls: "language-markdown" }).innerHTML = html;
// await MarkdownRenderer.renderMarkdown(
// markdown,
// this.contentEl,
// ctx.sourcePath,
// this.content
// );
} catch (error) {
this.content?.unload();
this.contentEl.empty();
const msg = error instanceof Error ? error.message : String(error);
this.contentEl.createEl("h1", {
text: `Error while rendering ${templateType}`,
cls: ["mod-error", "message"],
});
this.contentEl.createEl("pre", {
text: msg,
});
}
}
requestRender = asyncDebounce(() => this.render(), 200);

Expand Down

0 comments on commit 577dd22

Please sign in to comment.