feat: add delete remotes
This commit is contained in:
parent
0c6a302a92
commit
820caf137f
@ -71,11 +71,11 @@ function CreateRemoteModal(props) {
|
|||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="new_remote_title" class="col-form-label col-sm-3">
|
<label for="new_remote_title" class="col-form-label col-sm-1">
|
||||||
Title
|
Title
|
||||||
</label>
|
</label>
|
||||||
<ValidatedTextInput
|
<ValidatedTextInput
|
||||||
class="col-sm-9"
|
class="col-sm-11"
|
||||||
id="new_remote_title"
|
id="new_remote_title"
|
||||||
valid={isTitleValid()}
|
valid={isTitleValid()}
|
||||||
value={title()}
|
value={title()}
|
||||||
|
|||||||
66
www/src/modals/delete-remote-modal.jsx
Normal file
66
www/src/modals/delete-remote-modal.jsx
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
import { createSignal } from "solid-js";
|
||||||
|
import Remote from "../data/remote.js";
|
||||||
|
import RemotesService from "../services/remotes-service.js";
|
||||||
|
import EventEmitter from "../tools/event-emitter.js";
|
||||||
|
import ModalHandler from "./modal-handler.js";
|
||||||
|
import Modal from "./modal.jsx";
|
||||||
|
|
||||||
|
const [remote, setRemote] = createSignal(new Remote());
|
||||||
|
const eventEmitter = new EventEmitter();
|
||||||
|
const REMOTE_DELETED_EVENT = "success";
|
||||||
|
|
||||||
|
function DeleteRemoteModal(props) {
|
||||||
|
const [error, setError] = createSignal("");
|
||||||
|
|
||||||
|
async function handleDeleteRemote() {
|
||||||
|
try {
|
||||||
|
await RemotesService.deleteRemote(remote().getId());
|
||||||
|
} catch (e) {
|
||||||
|
setError(e.message);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
DeleteRemoteModal.Handler.hide();
|
||||||
|
eventEmitter.dispatchEvent(REMOTE_DELETED_EVENT, remote);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
ref={props.ref}
|
||||||
|
id="deleteRemoteModal"
|
||||||
|
modalTitle="Delete remote"
|
||||||
|
centered={true}
|
||||||
|
>
|
||||||
|
<div class="modal-body">
|
||||||
|
<Show when={error() !== ""}>
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{error()}
|
||||||
|
</div>
|
||||||
|
</Show>
|
||||||
|
<div class="mb-3 row">
|
||||||
|
<span>
|
||||||
|
Do you really want to delete the remote {remote().getTitle()} ({remote().getId()})?
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={handleDeleteRemote}
|
||||||
|
class="btn btn-danger"
|
||||||
|
>
|
||||||
|
Delete
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteRemoteModal.Handler = new ModalHandler();
|
||||||
|
DeleteRemoteModal.setRemote = setRemote;
|
||||||
|
DeleteRemoteModal.onRemoteDeleted = (callback) =>
|
||||||
|
eventEmitter.on(REMOTE_DELETED_EVENT, callback);
|
||||||
|
|
||||||
|
export default DeleteRemoteModal;
|
||||||
@ -9,6 +9,7 @@ import DeleteIntegrationModal from "./delete-integration-modal.jsx";
|
|||||||
import CreateCommandModal from "./create-command-modal.jsx";
|
import CreateCommandModal from "./create-command-modal.jsx";
|
||||||
import DeleteCommandModal from "./delete-command-modal.jsx";
|
import DeleteCommandModal from "./delete-command-modal.jsx";
|
||||||
import CreateRemoteModal from "./create-remote-modal.jsx";
|
import CreateRemoteModal from "./create-remote-modal.jsx";
|
||||||
|
import DeleteRemoteModal from "./delete-remote-modal.jsx";
|
||||||
|
|
||||||
const ModalRegistry = (function () {
|
const ModalRegistry = (function () {
|
||||||
const modals = [
|
const modals = [
|
||||||
@ -57,6 +58,11 @@ const ModalRegistry = (function () {
|
|||||||
component: CreateRemoteModal,
|
component: CreateRemoteModal,
|
||||||
ref: null,
|
ref: null,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "deleteRemoteModal",
|
||||||
|
component: DeleteRemoteModal,
|
||||||
|
ref: null,
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
function getModals(props) {
|
function getModals(props) {
|
||||||
|
|||||||
@ -42,6 +42,13 @@ function RemotesService() {
|
|||||||
return remote;
|
return remote;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function deleteRemote(remoteId) {
|
||||||
|
let index = remotes.findIndex((remote) => remote.getId() === remoteId);
|
||||||
|
if (index >= 0) {
|
||||||
|
remotes.splice(index, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function getCommands() {
|
async function getCommands() {
|
||||||
return [].concat(commands);
|
return [].concat(commands);
|
||||||
}
|
}
|
||||||
@ -64,6 +71,7 @@ function RemotesService() {
|
|||||||
return {
|
return {
|
||||||
getRemotes,
|
getRemotes,
|
||||||
createRemote,
|
createRemote,
|
||||||
|
deleteRemote,
|
||||||
getCommands,
|
getCommands,
|
||||||
createCommand,
|
createCommand,
|
||||||
deleteCommand,
|
deleteCommand,
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { createResource, onMount } from "solid-js";
|
|||||||
import List from "../../components/list";
|
import List from "../../components/list";
|
||||||
import RemotesService from "../../services/remotes-service";
|
import RemotesService from "../../services/remotes-service";
|
||||||
import CreateRemoteModal from "../../modals/create-remote-modal";
|
import CreateRemoteModal from "../../modals/create-remote-modal";
|
||||||
|
import DeleteRemoteModal from "../../modals/delete-remote-modal";
|
||||||
|
|
||||||
function RemotesList(props) {
|
function RemotesList(props) {
|
||||||
const [remotes, { refetch: refetchRemotes }] = createResource(
|
const [remotes, { refetch: refetchRemotes }] = createResource(
|
||||||
@ -15,12 +16,19 @@ function RemotesList(props) {
|
|||||||
CreateRemoteModal.onRemoteCreated(() => {
|
CreateRemoteModal.onRemoteCreated(() => {
|
||||||
refetchRemotes();
|
refetchRemotes();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
DeleteRemoteModal.onRemoteDeleted(() => {
|
||||||
|
refetchRemotes();
|
||||||
|
});
|
||||||
|
|
||||||
function handleNewRemote() {
|
function handleNewRemote() {
|
||||||
CreateRemoteModal.Handler.show();
|
CreateRemoteModal.Handler.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleDeleteRemote(remote) {}
|
function handleDeleteRemote(remote) {
|
||||||
|
DeleteRemoteModal.setRemote(remote);
|
||||||
|
DeleteRemoteModal.Handler.show();
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user