Skip to content

Instantly share code, notes, and snippets.

View harrybanda's full-sized avatar

Harry Banda harrybanda

View GitHub Profile
<Button
appearance="danger"
icon="trash"
onClick={async () => {
await storage.delete(book.key);
await storage
.query()
.where("key", startsWith("book_"))
.getMany()
.then((res) => setBooks(res.results));
import ForgeUI, { ModalDialog, Form, TextField } from "@forge/ui";
import { storage } from "@forge/api";
import uuid from "uuid-random";
export const BookDialog = ({
isOpenModal,
setOpenModal,
isUpdating,
selectedBook,
}) => {
import ForgeUI, {
Fragment,
Text,
Table,
Head,
Row,
Cell,
Button,
ButtonSet,
useState,
<BooksTable
isOpenModal={isOpenModal}
setOpenModal={setOpenModal}
setUpdating={setUpdating}
setSelectedBook={setSelectedBook}
/>
<BookDialog
isOpenModal={isOpenModal}
setOpenModal={setOpenModal}
isUpdating={isUpdating}
const [isUpdating, setUpdating] = useState(false);
const [selectedBook, setSelectedBook] = useState(undefined);
import ForgeUI, { render, Fragment, Macro, useState } from "@forge/ui";
import { BooksTable } from "./BooksTable";
import { BookDialog } from "./BookDialog";
const App = () => {
const [isOpenModal, setOpenModal] = useState(false);
return (
<Fragment>
<BooksTable isOpenModal={isOpenModal} setOpenModal={setOpenModal} />
<BookDialog isOpenModal={isOpenModal} setOpenModal={setOpenModal} />
import ForgeUI, {
Fragment,
Text,
Table,
Head,
Row,
Cell,
Button,
ButtonSet,
useState,
import ForgeUI, { ModalDialog, Form, TextField } from "@forge/ui";
import { storage } from "@forge/api";
import uuid from "uuid-random";
export const BookDialog = ({ isOpenModal, setOpenModal }) => {
const onSubmit = async (formData) => {
const bookId = "book_" + uuid();
await storage.set(bookId, formData);
setOpenModal(false);
};
permissions:
scopes:
- "storage:app"
@harrybanda
harrybanda / index.js
Created September 21, 2021 14:14
index.js
import ForgeUI, { render, Fragment, Macro, useState } from "@forge/ui";
import { BooksTable } from "./BooksTable";
import { BookDialog } from "./BookDialog";
const App = () => {
const [isOpenModal, setOpenModal] = useState(false);
const [books, setBooks] = useState([]);
return (
<Fragment>