upload-apollo-client/app/components/criarDocumento.mjs

39 lines
1.1 KiB
JavaScript

// @ts-check
import { gql } from "@apollo/client/core";
import { useApolloClient } from "@apollo/client/react/hooks/useApolloClient.js";
import { useMutation } from "@apollo/client/react/hooks/useMutation.js";
import { createElement as h } from "react";
const CRIAR_DOCUMENTO = gql`
mutation CriarDocumento($arquivo: [Upload!]!, $input: CreateDocumentoInput!) {
criarDocumento(arquivo: $arquivo, input: $input) {
id
}
}
`;
export default function CriarDocumento() {
const [multipleUploadMutation] = useMutation(CRIAR_DOCUMENTO);
const apolloClient = useApolloClient();
/** @type {import("react").ChangeEventHandler<HTMLInputElement>} */
function onChange({ target: { validity, files } }) {
if (validity.valid && files && files[0]) {
multipleUploadMutation({
variables: {
arquivo: Array.from(files),
input: {
modeloId: 26,
fluxoId: 33,
},
},
}).then(() => {
apolloClient.resetStore();
});
}
}
return h("input", { type: "file", multiple: true, required: true, onChange });
}