Skip to content

Instantly share code, notes, and snippets.

View antoniomesquita09's full-sized avatar
🏠
Working from home

Antonio Mesquita Júnior antoniomesquita09

🏠
Working from home
View GitHub Profile
@antoniomesquita09
antoniomesquita09 / index.js
Created March 23, 2021 23:50
React Error Boundaries
import React from 'react';
import ReactDOM from 'react-dom';
import App from '.src/App';
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
@antoniomesquita09
antoniomesquita09 / Routes.tsx
Last active March 18, 2021 01:32
Routes component to handle fallback page.
import React, { FC } from 'react';
import { Redirect, Switch } from 'react-router-dom';
import { HomePage, LoginPage, NotFoundPage } from 'pages'
const Routes: FC = () => (
<Switch>
<Route path="/" component={HomePage} exact />
<Route path="/login" component={LoginPage} exact />
<Route path="*" component={NotFoundPage} exact />
@antoniomesquita09
antoniomesquita09 / UselessTextInput.jsx
Created March 16, 2021 03:26
Basic form using exemples of keyboard type.
import React, { useState } from "react";
import { SafeAreaView, StyleSheet, TextInput } from "react-native";
const Form = () => {
const [phone, onChangePhone] = useState(null);
const [email, onChangeEmail] = useState(null);
const [url, onChangeUrl] = useState(null);
return (
<SafeAreaView>
@antoniomesquita09
antoniomesquita09 / table.tsx
Last active March 18, 2021 01:50
Table infinite scrolling.
import React, { useState, useRef, useCallback, useEffect } from 'react'
// import { api } from 'services/api'
// just for this exemple
const userList = [
{
id: '1',
name: 'Antonio Mesquita',
email: 'antonio.mesquita@ifood.com.br',
@antoniomesquita09
antoniomesquita09 / Title.tsx
Last active March 16, 2021 03:04
Basic react-loading-skeleton implementation.
import React, { FC } from 'react';
import Skeleton from 'react-loading-skeleton';
type titleProps = {
loading: boolean;
title: string;
};
const Title: FC<titleProps> = ({ loading, title }: titleProps) => {
return (
@antoniomesquita09
antoniomesquita09 / server.js
Created February 22, 2021 17:10
Final server setup
const express = require('express')
const http = require('http')
const mongoose = require('mongoose')
const { ApolloServer } = require('apollo-server-express')
const schema = require('./graphql/schema')
// create apollo server
const server = new ApolloServer({
schema,
@antoniomesquita09
antoniomesquita09 / type.js
Created February 22, 2021 17:06
Global type
const userType = require('./user/type');
const messageType = require('./message/type');
const roomType = require('./room/type');
module.exports = [userType, messageType, roomType];
@antoniomesquita09
antoniomesquita09 / schema.js
Created February 22, 2021 17:05
Global schema
const { makeExecutableSchema } = require('graphql-tools')
const resolvers = require('./resolver')
const typeDefs = require('./type')
const schema = makeExecutableSchema({
typeDefs,
resolvers,
});
module.exports = schema;
@antoniomesquita09
antoniomesquita09 / resolver.js
Created February 22, 2021 17:03
Global resolver
const user = require('./user/resolver');
const room = require('./room/resolver');
const message = require('./message/resolver');
const query = {
Query: {
...user.Query,
...room.Query,
...message.Query,
},
@antoniomesquita09
antoniomesquita09 / resolver.js
Created February 22, 2021 16:58
Message resolver
const { PubSub } = require('apollo-server-express');
const { withFilter } = require('apollo-server');
const Message = require('../../models/message');
const User = require('../../models/user');
const pubsub = new PubSub();
const MESSAGE_SENT = 'messageSent';