Offline Apollo with @client

This is a old note explaining me with a snipped of code how to use @client to use Apollo to store data offline

import endOfWeek from 'date-fns/end_of_week'
import format from 'date-fns/format'
import startOfWeek from 'date-fns/start_of_week'
const DATE = new Date()
export default {
    schedule: {
        __typename: 'Schedule',
        date: format(DATE, 'YYYY-MM-DD'),
        startDate: format(startOfWeek(DATE), 'YYYY-MM-DD') + ' 00:00',
        endDate: format(endOfWeek(DATE), 'YYYY-MM-DD') + ' 23:59',
        view: 'week'
    },
    sidebar: {
        __typename: 'Sidebar',
        expanded: false,
        selected: 'dashboard'
    },
    notification: {
        __typename: 'Notification',
        open: false,
        variant: 'success',
        message: ''
    },
    trial: {
        __typename: 'Trial',
        open: false,
        variant: 'success'
    }
}

With this code I create the query

export const SCHEDULE = gql`
    query schedule {
        schedule @client {
            endDate
            startDate
            date
            view
            __typename
        }
    }
`

Query resolver

export const getDateTime = graphql(SCHEDULE, {
    props: ({ data }: TQuery<'schedule', ISchedule>) => ({
        date: pathOr('', ['schedule', 'date'], data),
        endDate: pathOr('', ['schedule', 'endDate'], data),
        startDate: pathOr('', ['schedule', 'startDate'], data),
        view: pathOr('', ['schedule', 'view'], data)
    })
})

Mutation resolver

export const setDateTime = graphql(SET_DATE_TIME, {
    props: ({ mutate }) => ({
        onSetDateTime: (variables: ISchedule) =>
            mutate!({ variables })
    })
})
import { gql } from 'apollo-boost' 
export const SET_DATE_TIME = gql` 
	mutation setDateTime( $startDate: String! $endDate: String! $date: String! $view: String! ) { 
			setDateTime( 
				startDate: $startDate 
				endDate: $endDate 
				date: $date 
				view: $view 
			) 
		@client 
}`