@@ -2,7 +2,8 @@ import { useState } from 'react'
22
33import { PageContainer } from '@keystone-6/core/admin-ui/components'
44import { Heading } from '@keystar/ui/typography'
5- import { ApolloClient , gql , InMemoryCache , useSubscription , HttpLink } from '@apollo/client'
5+ import { ApolloClient , gql , InMemoryCache , HttpLink , type TypedDocumentNode } from '@apollo/client'
6+ import { useSubscription } from '@apollo/client/react'
67import { createClient } from 'graphql-ws'
78import { GraphQLWsLink } from '@apollo/client/link/subscriptions'
89import { css } from '@emotion/css'
@@ -25,7 +26,7 @@ const TIME = gql`
2526 iso
2627 }
2728 }
28- `
29+ ` as TypedDocumentNode < { time : { iso : string } } >
2930
3031// Setup the Post subscriptions
3132const POST_PUBLISHED = gql `
@@ -39,7 +40,9 @@ const POST_PUBLISHED = gql`
3940 }
4041 }
4142 }
42- `
43+ ` as TypedDocumentNode < {
44+ postPublished : { id : string ; title : string ; content : string ; author : { name : string } }
45+ } >
4346
4447const POST_UPDATED = gql `
4548 subscription POST_UPDATED {
@@ -52,7 +55,9 @@ const POST_UPDATED = gql`
5255 }
5356 }
5457 }
55- `
58+ ` as TypedDocumentNode < {
59+ postUpdated : { id : string ; title : string ; content : string ; author : { name : string } }
60+ } >
5661
5762// Setup a backup http link for Apollo
5863const httpLink = new HttpLink ( {
@@ -89,16 +94,16 @@ export default function CustomPage() {
8994 // Subscribe to `time` [using the Apollo client above]
9095 const { data, loading } = useSubscription ( TIME , {
9196 client : subClient ,
92- onSubscriptionData : ( { subscriptionData } ) => {
93- appendTime ( JSON . stringify ( subscriptionData . data . time ) )
97+ onData : ( { data } ) => {
98+ appendTime ( JSON . stringify ( data . data ? .time ) )
9499 } ,
95100 } )
96101
97102 // Subscribe to `postPublished`
98103 const { data : updatedPostData , loading : updatedPostLoading } = useSubscription ( POST_UPDATED , {
99104 client : subClient ,
100- onSubscriptionData : ( { subscriptionData } ) => {
101- setUpdatedPostRows ( [ ...updatedPostRows , JSON . stringify ( subscriptionData . data . postUpdated ) ] )
105+ onData : ( { data } ) => {
106+ setUpdatedPostRows ( [ ...updatedPostRows , JSON . stringify ( data ? .data ? .postUpdated ) ] )
102107 } ,
103108 } )
104109
@@ -107,11 +112,8 @@ export default function CustomPage() {
107112 POST_PUBLISHED ,
108113 {
109114 client : subClient ,
110- onSubscriptionData : ( { subscriptionData } ) => {
111- setPublishedPostRows ( [
112- ...publishedPostRows ,
113- JSON . stringify ( subscriptionData . data . postPublished ) ,
114- ] )
115+ onData : ( { data } ) => {
116+ setPublishedPostRows ( [ ...publishedPostRows , JSON . stringify ( data ?. data ?. postPublished ) ] )
115117 } ,
116118 }
117119 )
@@ -123,6 +125,7 @@ export default function CustomPage() {
123125 < h4 > Current Time </ h4 >
124126 < div >
125127 { ! loading &&
128+ ! ! data ?. time ?. iso &&
126129 new Date ( data ?. time ?. iso ) . toLocaleDateString ( ) +
127130 ' ' +
128131 new Date ( data ?. time ?. iso ) . toLocaleTimeString ( ) }
0 commit comments