fix: new command not listed in create remote modal

This commit is contained in:
Fritz Heiden 2025-04-08 20:07:42 +02:00
parent 01aff1635d
commit 0c6a302a92
2 changed files with 23 additions and 10 deletions

View File

@ -1,4 +1,4 @@
import { createMemo, createResource, createSignal } from "solid-js"; import { createMemo, createResource, createSignal, onMount } from "solid-js";
import ValidatedTextInput from "../components/validated-text-input.jsx"; import ValidatedTextInput from "../components/validated-text-input.jsx";
import RemotesService from "../services/remotes-service.js"; import RemotesService from "../services/remotes-service.js";
import EventEmitter from "../tools/event-emitter.js"; import EventEmitter from "../tools/event-emitter.js";
@ -9,17 +9,22 @@ import ListManager from "../components/list-manager.jsx";
const eventEmitter = new EventEmitter(); const eventEmitter = new EventEmitter();
const REMOTE_CREATED_EVENT = "success"; const REMOTE_CREATED_EVENT = "success";
const MIN_TITLE_LENGTH = 3; const MIN_TITLE_LENGTH = 3;
const modalHandler = new ModalHandler();
function CreateRemoteModal(props) { function CreateRemoteModal(props) {
const [title, setTitle] = createSignal(""); const [title, setTitle] = createSignal("");
const [commands, setCommands] = createSignal([]); const [commands, setCommands] = createSignal([]);
const [availableCommands] = createResource(RemotesService.getCommands); const [availableCommands, { refetch: refetchAvailableCommands }] =
createResource(RemotesService.getCommands);
const [error, setError] = createSignal(""); const [error, setError] = createSignal("");
const isTitleValid = createMemo(() => title().length >= MIN_TITLE_LENGTH); const isTitleValid = createMemo(() => title().length >= MIN_TITLE_LENGTH);
const isFormValid = createMemo(() => isTitleValid()); const isFormValid = createMemo(() => isTitleValid());
modalHandler.onShow(() => {
refetchAvailableCommands();
});
async function handleCreateRemote() { async function handleCreateRemote() {
let remote; let remote;
try { try {
@ -108,7 +113,7 @@ function CreateRemoteModal(props) {
); );
} }
CreateRemoteModal.Handler = new ModalHandler(); CreateRemoteModal.Handler = modalHandler;
CreateRemoteModal.onRemoteCreated = (callback) => CreateRemoteModal.onRemoteCreated = (callback) =>
eventEmitter.on(REMOTE_CREATED_EVENT, callback); eventEmitter.on(REMOTE_CREATED_EVENT, callback);

View File

@ -1,11 +1,23 @@
import EventEmitter from "../tools/event-emitter";
const SHOW_EVENT = "show";
const HIDE_EVENT = "hide";
function ModalHandler() { function ModalHandler() {
let _ref; let _ref;
let _modalRef; let _modalRef;
let _modalId; let _modalId;
let eventEmitter = new EventEmitter();
function setRef(ref) { function setRef(ref) {
_ref = ref; _ref = ref;
_modalRef = new bootstrap.Modal(ref); _modalRef = new bootstrap.Modal(ref);
_ref.addEventListener('hidden.bs.modal', () => {
eventEmitter.dispatchEvent(HIDE_EVENT);
});
_ref.addEventListener('show.bs.modal', () => {
eventEmitter.dispatchEvent(SHOW_EVENT);
});
} }
function show() { function show() {
@ -21,15 +33,11 @@ function ModalHandler() {
} }
function onHidden(callback) { function onHidden(callback) {
_ref.addEventListener('hidden.bs.modal', () => { eventEmitter.on(HIDE_EVENT, callback);
callback();
});
} }
function onShow(callback) { function onShow(callback) {
_ref.addEventListener('show.bs.modal', () => { eventEmitter.on(SHOW_EVENT, callback);
callback();
});
} }
return { return {