Skip to content

Instantly share code, notes, and snippets.

View bogoslavskiy's full-sized avatar

Artem Bogoslavskiy bogoslavskiy

View GitHub Profile
import { ApolloClient, split, HttpLink, InMemoryCache } from '@apollo/client';
import { getMainDefinition } from '@apollo/client/utilities';
import { WebSocketLink } from '@apollo/link-ws';
import Introspection from './introspection-result.json';
const wsLink = new WebSocketLink({
uri: `ws://localhost:5000/graphql`,
options: { reconnect: true }
});
overwrite: true
schema: "http://localhost:5000/graphql"
documents:
- components/**/*.tsx
- graphql/queries/*.ts
generates:
graphql/generated.ts:
plugins:
- typescript
- typescript-operations
import React from 'react'
import { View } from 'react-native';
import { AuthNavProps } from '../navigation/types/AuthStackParams';
export const LoginScreen = ({}: AuthNavProps<'Conversation'>) => {
return (
<View />
);
};
import React from 'react'
import { View } from 'react-native';
import { MainNavProps } from '../navigation/types/MainStackParams';
export const ConversationScreen = ({}: MainNavProps<'Conversation'>) => {
return (
<View />
);
};
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import { MainStackParams } from './types/MainStackParams';
import { ConversationScreen } from '../screens/ConversationScreen';
const MainStack = createStackNavigator<MainStackParams>();
export const MainStackScreens: React.FC = () => (
<MainStack.Navigator
initialRouteName="Conversation"
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import { AuthStackParams } from './types/AuthStackParams';
import { LoginScreen } from '../screens/LoginScreen';
const AuthStack = createStackNavigator<AuthStackParams>();
export const AuthStackScreens: React.FC = () => (
<AuthStack.Navigator initialRouteName="Login">
<AuthStack.Screen
import { StackNavigationProp } from '@react-navigation/stack';
import { RouteProp } from '@react-navigation/native';
export type MainStackParams = {
Conversation: undefined;
};
export type MainNavProps<T extends keyof MainStackParams> = {
navigation: StackNavigationProp<MainStackParams, T>;
route: RouteProp<MainStackParams, T>;
import { StackNavigationProp } from '@react-navigation/stack';
import { RouteProp } from '@react-navigation/native';
export type AuthStackParams = {
Login: undefined;
};
export type AuthNavProps<T extends keyof AuthStackParams> = {
navigation: StackNavigationProp<AuthStackParams, T>;
route: RouteProp<AuthStackParams, T>;
import { SchemaDirectiveVisitor } from 'graphql-tools';
import { gql, AuthenticationError } from 'apollo-server';
import { GraphQLField, defaultFieldResolver } from 'graphql';
import AccessTokenModel from '../models/AccessTokenModel';
import { ResolverContext } from '../types';
class AuthDirective extends SchemaDirectiveVisitor {
visitFieldDefinition(field: GraphQLField<any, any>) {
const { resolve = defaultFieldResolver } = field;
import { gql } from 'apollo-server-express';
import { PubSub } from 'apollo-server';
import { QueryResolvers, MessagesMutationResolvers } from '../generated/graphql';
import MessageModel from '../models/MessageModel';
const NEW_MESSAGE_EVENT = 'NEW_MESSAGE';
const pubsub = new PubSub();
const typeDefs = gql`