aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/lib
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-10-13 12:22:33 +0000
committerMohamedBassem <me@mbassem.com>2024-10-13 12:22:33 +0000
commit43ed698930531631116f0fc22234a9ef68c122e6 (patch)
tree2010f230e2bcb4112c99e3c1853eb607d48fe2d1 /apps/web/lib
parentcdd0088a7f1d1978b6fa84c7bd2ab12636214227 (diff)
downloadkarakeep-43ed698930531631116f0fc22234a9ef68c122e6.tar.zst
fix: Add support for importing notes from the hoarder export
Diffstat (limited to 'apps/web/lib')
-rw-r--r--apps/web/lib/importBookmarkParser.ts41
1 files changed, 28 insertions, 13 deletions
diff --git a/apps/web/lib/importBookmarkParser.ts b/apps/web/lib/importBookmarkParser.ts
index 3134af55..45be3004 100644
--- a/apps/web/lib/importBookmarkParser.ts
+++ b/apps/web/lib/importBookmarkParser.ts
@@ -7,7 +7,9 @@ import { zExportSchema } from "./exportBookmarks";
export interface ParsedBookmark {
title: string;
- url?: string;
+ content?:
+ | { type: BookmarkTypes.LINK; url: string }
+ | { type: BookmarkTypes.TEXT; text: string };
tags: string[];
addDate?: number;
notes?: string;
@@ -36,9 +38,10 @@ export async function parseNetscapeBookmarkFile(
} catch (e) {
/* empty */
}
+ const url = $a.attr("href");
return {
title: $a.text(),
- url: $a.attr("href"),
+ content: url ? { type: BookmarkTypes.LINK as const, url } : undefined,
tags,
addDate: typeof addDate === "undefined" ? undefined : parseInt(addDate),
};
@@ -64,9 +67,10 @@ export async function parsePocketBookmarkFile(
} catch (e) {
/* empty */
}
+ const url = $a.attr("href");
return {
title: $a.text(),
- url: $a.attr("href"),
+ content: url ? { type: BookmarkTypes.LINK as const, url } : undefined,
tags,
addDate: typeof addDate === "undefined" ? undefined : parseInt(addDate),
};
@@ -86,14 +90,25 @@ export async function parseHoarderBookmarkFile(
);
}
- return parsed.data.bookmarks.map((bookmark) => ({
- title: bookmark.title ?? "",
- url:
- bookmark.content?.type == BookmarkTypes.LINK
- ? bookmark.content.url
- : undefined,
- tags: bookmark.tags,
- addDate: bookmark.createdAt,
- notes: bookmark.note ?? undefined,
- }));
+ return parsed.data.bookmarks.map((bookmark) => {
+ let content = undefined;
+ if (bookmark.content?.type == BookmarkTypes.LINK) {
+ content = {
+ type: BookmarkTypes.LINK as const,
+ url: bookmark.content.url,
+ };
+ } else if (bookmark.content?.type == BookmarkTypes.TEXT) {
+ content = {
+ type: BookmarkTypes.TEXT as const,
+ text: bookmark.content.text,
+ };
+ }
+ return {
+ title: bookmark.title ?? "",
+ content,
+ tags: bookmark.tags,
+ addDate: bookmark.createdAt,
+ notes: bookmark.note ?? undefined,
+ };
+ });
}