feat(library): list/load/save/delete library API

This commit is contained in:
pj committed 2026-06-20 15:09:13 -04:00
1 parent a6404847d1
commit 14d73df648
1 file changed
+37
+37
View File
@@ -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<BookSummary[]> {
if (!isDesktop) return [];
return invoke<BookSummary[]>("list_books");
}
export async function loadBook(id: string): Promise<Book> {
const contents = await invoke<string>("load_book", { id });
return JSON.parse(contents) as Book;
}
export async function saveBook(book: Book): Promise<void> {
if (!isDesktop) return;
await invoke("save_book", { id: book.id, contents: JSON.stringify(book, null, 2) });
}
export async function deleteBook(id: string): Promise<void> {
if (!isDesktop) return;
await invoke("delete_book", { id });
}
export function newBook(): Book {
return createBook();
}
export function exampleBook(): Book {
return starterBook();
}