112 lines
2.6 KiB
TypeScript
112 lines
2.6 KiB
TypeScript
import { GetServerSideProps, GetServerSidePropsContext } from "next";
|
|
import Head from "next/head";
|
|
import useSWR from "swr";
|
|
import { request, gql } from "graphql-request";
|
|
import { NextPage } from "next";
|
|
import { Grid, } from "@mui/material";
|
|
import { Layout } from "components/Layout";
|
|
import { TicketDetail } from "components/TicketDetail";
|
|
import { TicketEdit } from "components/TicketEdit";
|
|
|
|
type TicketProps = {
|
|
id: string;
|
|
};
|
|
|
|
const Ticket: NextPage<TicketProps> = ({ id }) => {
|
|
const origin = typeof window !== 'undefined' && window.location.origin
|
|
? window.location.origin
|
|
: '';
|
|
const graphQLFetcher = async ({ document, variables }: any) => {
|
|
const data = await request({
|
|
url: `${origin}/graphql`,
|
|
document,
|
|
variables
|
|
})
|
|
console.log({ data })
|
|
|
|
return data;
|
|
};
|
|
|
|
const { data: ticketData, error: ticketError }: any = useSWR(
|
|
{
|
|
document: gql`
|
|
query getTicket($ticketId: Int!) {
|
|
ticket(
|
|
ticket: {
|
|
ticketInternalId: $ticketId
|
|
}
|
|
) {
|
|
id,
|
|
internalId,
|
|
title,
|
|
note,
|
|
number,
|
|
createdAt,
|
|
updatedAt,
|
|
closeAt,
|
|
articles {
|
|
edges {
|
|
node {
|
|
id,
|
|
body,
|
|
internal,
|
|
sender {
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}}`, variables: { ticketId: parseInt(id, 10) }
|
|
},
|
|
graphQLFetcher,
|
|
{ refreshInterval: 1000 }
|
|
);
|
|
|
|
const { data: graphqlData2, error: graphqlError2 } = useSWR(
|
|
{
|
|
document: gql`
|
|
{
|
|
|
|
__schema {
|
|
queryType {
|
|
name
|
|
fields {
|
|
name
|
|
}
|
|
}
|
|
}
|
|
|
|
}`, variables: {}
|
|
},
|
|
graphQLFetcher
|
|
);
|
|
|
|
const shouldRender = !ticketError && ticketData;
|
|
|
|
return (
|
|
<Layout>
|
|
<Head>
|
|
<title>Link Shell</title>
|
|
</Head>
|
|
{shouldRender && (
|
|
<Grid container spacing={0} sx={{ height: "100vh" }} direction="row">
|
|
<Grid item sx={{ height: "100vh" }} xs={12}>
|
|
|
|
<TicketDetail ticket={ticketData.ticket} />
|
|
</Grid>
|
|
{/*<Grid item xs={0} sx={{ height: "100vh" }}>
|
|
<TicketEdit ticket={ticketData.ticket} />
|
|
</Grid>*/}
|
|
</Grid>)}
|
|
{ticketError && <div>{ticketError.toString()}</div>}
|
|
</Layout>
|
|
);
|
|
}
|
|
|
|
export const getServerSideProps: GetServerSideProps = async (
|
|
context: GetServerSidePropsContext) => {
|
|
const { id } = context.query;
|
|
return { props: { id } };
|
|
}
|
|
|
|
export default Ticket;
|