import { request, gql } from "@solid-primitives/graphql"; import { createSignal, createEffect } from 'solid-js'; import { useNavigate } from '@solidjs/router'; import { useUserInfo } from '../user_info'; import { hasAccess, roles } from '../roles'; import type {CreatorDetails} from './creator_details'; export default function SeriesNew() { const userInfo = useUserInfo(); const navigate = useNavigate(); const [title, setTitle] = createSignal(''); const [synopsis, setSynopsis] = createSignal(''); const [totalBookMembers, setTotalBookMembers] = createSignal(0); const [totalSubseries, setTotalSubseries] = createSignal(0); createEffect(() => { const userRoles = userInfo?.[0]?.()?.roles || [] if (!hasAccess(userRoles, roles.ADD_BOOKS)) { navigate("/about") } }); return ( <div> <form> <input placeholder="title" value={title()} onInput={(e) => { setTitle(e.target.value); }} /> <textarea placeholder="synposis" rows={8} value={synopsis()} onInput={(e) => { setSynopsis(e.target.value); }} /> <input type='number' placeholder="total books in series" value={totalBookMembers()} onInput={(e) => { const parsed = parseInt(e.target.value) if (parsed || parsed === 0) { setTotalBookMembers(parsed); } }} /> <input type='number' placeholder="total books in subseries" value={totalSubseries()} onInput={(e) => { const parsed = parseInt(e.target.value) if (parsed || parsed === 0) { setTotalSubseries(parsed); } }} /> <button disabled={!title()} onClick={(e) => { e.preventDefault(); const result = request( "http://localhost:8080/query", gql`mutation newSeries($series: SeriesInput!) { newSeries(series: $series) { id title synopsis totalBookMembers totalSubseries } }`, { variables: { series: { title: title(), synopsis: synopsis(), totalBookMembers: totalBookMembers(), totalSubseries: totalSubseries(), } }, }, ) .then((response) => { console.log(response) }) }} > Create </button> </form> </div> ) }