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>
)
}