From 4cc677f0735f315ce75ac41d833f69db2acc7967 Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Mon, 27 Nov 2023 10:36:16 +0500 Subject: [PATCH] core: fix md with frontmatter export --- packages/core/src/collections/notes.ts | 10 +++++++++- packages/core/src/interfaces.ts | 1 + packages/core/src/logger.ts | 2 +- packages/core/src/utils/templates/html/template.ts | 2 +- packages/core/src/utils/templates/index.ts | 6 +++++- packages/core/src/utils/templates/md.ts | 2 +- 6 files changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/core/src/collections/notes.ts b/packages/core/src/collections/notes.ts index 64c1552e7..4616114b1 100644 --- a/packages/core/src/collections/notes.ts +++ b/packages/core/src/collections/notes.ts @@ -266,7 +266,6 @@ export class Notes implements ICollection { ); const content = getContentFromData(type, data); - const contentString = rawContent || (format === "html" @@ -275,10 +274,19 @@ export class Notes implements ICollection { ? content.toMD() : content.toTXT()); + const tags = (await this.db.relations.to(note, "tag").resolve()).map( + (tag) => tag.title + ); + const color = (await this.db.relations.to(note, "color").resolve(1)).at( + 0 + )?.title; + return options?.disableTemplate ? contentString : buildFromTemplate(format, { ...note, + tags, + color, content: contentString }); } diff --git a/packages/core/src/interfaces.ts b/packages/core/src/interfaces.ts index c6fbc13a6..2b5c47dac 100644 --- a/packages/core/src/interfaces.ts +++ b/packages/core/src/interfaces.ts @@ -42,6 +42,7 @@ export interface IStorage { readMulti(keys: string[]): Promise<[string, T][]>; read(key: string, isArray?: boolean): Promise; remove(key: string): Promise; + removeMulti(keys: string[]): Promise; clear(): Promise; getAllKeys(): Promise; encrypt(key: SerializedKey, plainText: string): Promise>; diff --git a/packages/core/src/logger.ts b/packages/core/src/logger.ts index 31588b4fc..1438215b9 100644 --- a/packages/core/src/logger.ts +++ b/packages/core/src/logger.ts @@ -81,7 +81,7 @@ class DatabaseLogWriter { async rotate() { const logKeys = (await this.storage.getAllKeys()).sort(); const keysToRemove = []; - for (let key of logKeys) { + for (const key of logKeys) { const keyParts = key.split(":"); if (keyParts.length === 1 || parseInt(keyParts[1]) < Date.now() - WEEK) { keysToRemove.push(key); diff --git a/packages/core/src/utils/templates/html/template.ts b/packages/core/src/utils/templates/html/template.ts index 90e3161f1..7c2335651 100644 --- a/packages/core/src/utils/templates/html/template.ts +++ b/packages/core/src/utils/templates/html/template.ts @@ -38,7 +38,7 @@ export function template(data: TemplateData) { data.favorite ? `` : "" } ${data.color ? `` : ""} - ${data.tags ? `` : ""} + ${data.tags ? `` : ""} diff --git a/packages/core/src/utils/templates/index.ts b/packages/core/src/utils/templates/index.ts index a39dc4383..d48355ca9 100644 --- a/packages/core/src/utils/templates/index.ts +++ b/packages/core/src/utils/templates/index.ts @@ -22,7 +22,11 @@ import { buildHTML } from "./html"; import { buildMarkdown, templateWithFrontmatter } from "./md"; import { buildText } from "./text"; -export type TemplateData = Note & { content: string }; +export type TemplateData = Omit & { + tags?: string[]; + color?: string; + content: string; +}; export async function buildFromTemplate( format: "md" | "txt" | "html" | "md-frontmatter", diff --git a/packages/core/src/utils/templates/md.ts b/packages/core/src/utils/templates/md.ts index acddf8f52..1d9d665bf 100644 --- a/packages/core/src/utils/templates/md.ts +++ b/packages/core/src/utils/templates/md.ts @@ -41,6 +41,6 @@ function buildFrontmatter(data: TemplateData) { if (data.pinned) lines.push(`pinned: ${data.pinned}`); if (data.favorite) lines.push(`favorite: ${data.favorite}`); if (data.color) lines.push(`color: ${data.color}`); - if (data.tags) lines.push(`tags: ${data.tags}`); + if (data.tags) lines.push(`tags: ${data.tags.join(", ")}`); return lines.join("\n"); }