import { useState, useEffect } from "react";
import userbase from "userbase-js";
function Todo({ name, done, toggleComplete, deleteTodo }) {
return (
{name}
);
}
function TodoForm() {
const [newTodo, setNewTodo] = useState("");
const [todos, setTodos] = useState([]);
const [disabled, setDisabled] = useState();
useEffect(() => {
async function openDatabase() {
try {
console.log("opening db...");
await userbase.openDatabase({
databaseName: "next-userbase-todos",
changeHandler: function (items) {
setTodos(items);
},
});
} catch (e) {
console.error(e.message);
}
}
openDatabase();
}, []);
async function addTodo(e) {
e.preventDefault();
setDisabled(true);
try {
await userbase.insertItem({
databaseName: "next-userbase-todos",
item: { name: newTodo, done: false },
});
setNewTodo("");
setDisabled(false);
} catch (e) {
console.error(e.message);
setDisabled(false);
}
}
async function toggleComplete(itemId, currentValue) {
try {
await userbase.updateItem({
databaseName: "next-userbase-todos",
item: { ...currentValue, done: !currentValue.done },
itemId,
});
} catch (e) {
console.error(e.message);
}
}
function handleNewTodo(e) {
e.preventDefault();
setNewTodo(e.target.value);
}
async function deleteTodo(itemId) {
setDisabled(true);
try {
await userbase.deleteItem({
databaseName: "next-userbase-todos",
itemId,
});
setNewTodo("");
setDisabled(false);
} catch (e) {
console.error(e.message);
setDisabled(false);
}
}
return (
);
}
export default TodoForm;