import { createMemo, createResource, createSignal, onMount } from "solid-js"; import List from "../../components/list"; import RemotesService from "../../services/remotes-service"; import CreateRemoteModal from "../../modals/create-remote-modal"; import DeleteRemoteModal from "../../modals/delete-remote-modal"; import FileUtils from "../../tools/file-utils"; import Serializer from "../../data/serializer"; import RemoteService from "../../services/remotes-service"; import EditRemoteModal from "../../modals/edit-remote-modal"; function RemotesList(props) { const [remotes, { refetch: refetchRemotes }] = createResource( RemotesService.getRemotes ); const [selectedRemotes, setSelectedRemotes] = createSignal([]); const canExport = createMemo(() => selectedRemotes().length > 0); onMount(() => { refetchRemotes(); }); CreateRemoteModal.onRemoteCreated(() => { refetchRemotes(); }); DeleteRemoteModal.onRemoteDeleted(() => { refetchRemotes(); }); EditRemoteModal.onRemoteEdited(() => { refetchRemotes(); }); function handleNewRemote() { CreateRemoteModal.Handler.show(); } function handleEditRemote(remote) { EditRemoteModal.setRemoteId(remote.getId()); EditRemoteModal.Handler.show(); } function handleDeleteRemote(remote) { DeleteRemoteModal.setRemote(remote); DeleteRemoteModal.Handler.show(); } function handleListItemsSelect(items) { setSelectedRemotes(items.map((item) => item.remote)); } async function handleExport() { let remotes = await Promise.all( selectedRemotes().map((remote) => RemoteService.getRemote(remote.getId())) ); let files = remotes.map((remote) => FileUtils.createJsonFile( Serializer.serializeRemote(remote), `${remote.getTitle()}.remote.json` ) ); if (files.length >= 1) { FileUtils.downloadFile(files[0]); } } return ( <>