From 14d73df6481351dd4de5d63fb2da129a42194c49 Mon Sep 17 00:00:00 2001 From: PJ Date: Sat, 20 Jun 2026 15:09:13 -0400 Subject: [PATCH] feat(library): list/load/save/delete library API --- src/library.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/library.ts diff --git a/src/library.ts b/src/library.ts new file mode 100644 index 0000000..cc7a367 --- /dev/null +++ b/src/library.ts @@ -0,0 +1,37 @@ +import { invoke } from "@tauri-apps/api/core"; +import { isDesktop } from "./ipc"; +import { type Book, createBook, starterBook } from "./model/book"; + +export interface BookSummary { + id: string; + title: string; + author: string; +} + +export async function listBooks(): Promise { + if (!isDesktop) return []; + return invoke("list_books"); +} + +export async function loadBook(id: string): Promise { + const contents = await invoke("load_book", { id }); + return JSON.parse(contents) as Book; +} + +export async function saveBook(book: Book): Promise { + if (!isDesktop) return; + await invoke("save_book", { id: book.id, contents: JSON.stringify(book, null, 2) }); +} + +export async function deleteBook(id: string): Promise { + if (!isDesktop) return; + await invoke("delete_book", { id }); +} + +export function newBook(): Book { + return createBook(); +} + +export function exampleBook(): Book { + return starterBook(); +}