YS
Size: a a a
EC
UM
AS
AS
const errorLink = onError(
({ graphQLErrors, networkError, operation, forward }) => {
const refreshToken = () => {
// Необходимо выполнить этот запрос в случае ошибки,
// если токен протух
const refreshTokenQuery = ({
query: gql`mutation($fingerprint: String!) {
updateToken(fingerprint: $fingerprint) {
token
refreshToken
}
}`,
variables: {
fingerprint,
},
})
}
const checkGraphQLErrors = unless(
isNil,
forEach(({ extensions: { code } }) => {
// Если получаем ошибку UNAUTHENTICATED, вызываем
// функцию выше
return (
equals('UNAUTHENTICATED', code) &&
promiseToObservable(refreshToken()).flatMap(() => forward(operation))
)
}),
)
checkGraphQLErrors(graphQLErrors)
},
)
MP
AS
MP
EC
AS
ЕД
EC
import { onError } from 'apollo-link-error'; import promiseToObservable from './promiseToObservable'; export default (refreshToken: Function) => onError(({ forward, graphQLErrors, networkError = {}, operation, // response, }) => { if (networkError.message === 'UNAUTHORIZED') { // or whatever you want to check // note: await refreshToken, then call its link middleware again! return promiseToObservable(refreshToken()).flatMap(() => forward(operation)); } });import { Observable } from 'apollo-link'; export default promise => new Observable((subscriber) => { promise.then( (value) => { if (subscriber.closed) return; subscriber.next(value); subscriber.complete(); }, err => subscriber.error(err) ); return subscriber; // this line can removed, as per next comment });EC
cache.writeDatamakeVar([]) ленивый способ, апдейтится везде, если изменил значение, запрашивать кверю не нужно@exportЕД
cache.writeDatamakeVar([]) ленивый способ, апдейтится везде, если изменил значение, запрашивать кверю не нужно@exportEC
ЕД

DK

ЕД

DK