import { createEffect, createSignal } from "solid-js"; import Modal from "./modal.jsx"; import EventEmitter from "../tools/event-emitter.js"; import ValidatedTextInput from "../modules/validated-text-input.jsx"; import ModalHandler from "./modal-handler.js"; import DeviceService from "../services/device-service.js"; const eventEmitter = new EventEmitter(); const DEVICE_CREATED_EVENT = "success"; const MIN_NAME_LENGTH = 3; function CreateDeviceModal(props) { const [name, setName] = createSignal(""); const [isNameValid, setNameValid] = createSignal(true); const [description, setDescription] = createSignal(""); const [isDescriptionValid, setDescriptionValid] = createSignal(true); const [error, setError] = createSignal(""); createEffect(() => setNameValid(checkIfNameValid(name()))); createEffect(() => setDescriptionValid(checkIfDescriptionValid(description()))); function checkIfNameValid(name) { return name.length >= MIN_NAME_LENGTH; } function checkIfDescriptionValid(description) { return true; } async function handleCreateDevice() { let device; try { device = await DeviceService.createDevice({ name: name(), description: description(), }); } catch (e) { setError(e.message); return; } setName(""); setDescription(""); CreateDeviceModal.Handler.hide(); eventEmitter.dispatchEvent(DEVICE_CREATED_EVENT, device); } return ( ); } CreateDeviceModal.Handler = new ModalHandler(); CreateDeviceModal.onDeviceCreated = (callback) => eventEmitter.on(DEVICE_CREATED_EVENT, callback); export default CreateDeviceModal;