A collection of Apollo links for more efficient communication with the 8base API.
Extends ApolloLink
Token Refresh Link renew authentication token when it's expired.
optionsTokenRefreshLinkOptions The token refresh link options.
SuccessLink calls handler on every successful operation.
successHandlerFunction success handler.
Success handler takes the following parameters:
operationOperation apollo graphql operation.
import { ApolloLink } from 'apollo-link';
import { BatchHttpLink } from 'apollo-link-batch-http';
import { getMainDefinition } from 'apollo-utilities';
import {
AuthLink,
FileUploadLink,
SuccessLink,
} from '@8base/apollo-links';
const successHandler = ({ operation }) => {
console.log(operation.getContext().someUsefulData);
};
const getAuthState = () => ({
workspaceId: '',
email: '',
token: '',
});
const getRefreshTokenParameters = () => ({
email: '',
refreshToken: '',
});
const authSuccessHandler = ({ token, refreshToken}) => {
console.log({ token, refreshToken });
}
const authErrorHandler = () => {
console.log('Auth error');
}
const links = ApolloLink.from([
new FileUploadLink(),
new SuccessLink(successHandler),
new AuthLink({
getAuthState: getAuthState,
getRefreshTokenParameters: getRefreshTokenParameters,
onAuthSuccess: authSuccessHandler,
onAuthError: authErrorHandler,
}),
ApolloLink.split(
({ query }) => {
const definition = getMainDefinition(query);
return (
definition.kind === 'OperationDefinition' &&
definition.operation === 'subscription'
);
},
new SubscriptionLink({
uri: 'wss://api-ws.8base.com',
getAuthState: getAuthState,
onAuthError: authErrorHandler,
}),
new BatchHttpLink({
uri: 'https://api.8base.com',
}),
),
])