diff --git a/src/utils/bookmark.ts b/src/utils/bookmark.ts new file mode 100644 index 0000000..125e752 --- /dev/null +++ b/src/utils/bookmark.ts @@ -0,0 +1,32 @@ +import { DefinedTool } from '@tools/defineTool'; + +const bookmarkedToolsKey = 'bookmarkedTools'; + +export function getBookmarkedTools(): string[] { + return localStorage.getItem(bookmarkedToolsKey)?.split(',') ?? []; +} + +export function isBookmarked(tool: DefinedTool): boolean { + return getBookmarkedTools().some((path) => path === tool.path); +} + +export function toggleBookmarked(tool: DefinedTool) { + if (isBookmarked(tool)) { + unbookmark(tool); + } else { + bookmark(tool); + } +} + +function bookmark(tool: DefinedTool) { + localStorage.setItem( + bookmarkedToolsKey, + tool.path + localStorage.getItem(bookmarkedToolsKey) + ); +} + +function unbookmark(tool: DefinedTool) { + const bookmarked = localStorage.getItem(bookmarkedToolsKey)?.split(',') ?? []; + const unbookmarked = bookmarked.filter((path) => path != tool.path); + localStorage.setItem(bookmarkedToolsKey, unbookmarked.join(',')); +}