D
Size: a a a
D
D
D
ДС
A
ДС
A
AE
currentUser для залогиненного пользователя и isLoggedIn — вычисляемое свойство, как-то так:let typeDefs = gql`
extend type Query {
currentUser: User
isLoggedIn: Boolean!
}
extend type Mutation {
setCurrentUser (user: User!): User!
}
`
let resolvers = {
Query: {
isLoggedIn: (root, args, context, info) => {
let { cache } = context
let { currentUser } = cache.readQuery({ query: GET_CURRENT_USER })
return !!currentUser
}
},
Mutation: {
setCurrentUser: (root, args, context, info) => {
let { user } = args
let { cache } = context
cache.writeData({
data: {
currentUser: user
}
})
return user
}
}
}
// ...
cache.writeData({
data: {
currentUser: null
}
})
export let GET_CURRENT_USER = gql`
query CurrentUser {
currentUser {
id
}
}
`
export let IS_LOGGED_IN = gql`
query IsLoggedIn {
isLoggedIn @client(always: true)
}
`
let { data: currentUserData } = useQuery(GET_CURRENT_USER)
let { data: isLoggedInData } = useQuery(IS_LOGGED_IN)setUser, currentUserData обновляется, а isLoggedInData — нет. сорян, что стена текста, пытаюсь вкурить менеджмент локального стейта с Apollo 🤷M0
M0
AI
MS
D
s