Skip to content

Instantly share code, notes, and snippets.

Avatar
👹
Kappa

Jimmy Jia taion

👹
Kappa
View GitHub Profile
@taion
taion / foo.entrypoint.js
Last active Aug 14, 2020
Router strawman
View foo.entrypoint.js
// You can imagine some shorthand for generating this given a component and
// a Relay query.
import React from 'react';
import getFoo from './getFoo';
import lazyComponent from './lazyComponent';
export default function fooEntrypoint({ fooId }) {
const Component = lazyComponent(import('Foo'));
View useSubscription.ts
import isEqual from 'lodash/isEqual';
import { useContext, useEffect, useRef } from 'react';
import { ReactRelayContext, requestSubscription } from 'react-relay';
import {
GraphQLSubscriptionConfig,
GraphQLTaggedNode,
OperationType,
} from 'relay-runtime';
import useCommittedRef from '@restart/hooks/useCommittedRef';
import usePrevious from '@restart/hooks/usePrevious';
@taion
taion / Route.js
Created Aug 14, 2019
Found Relay <Route>
View Route.js
import HttpError from 'found/lib/HttpError';
import BaseRoute from 'found/lib/Route';
import React from 'react';
import LoadingIndicator from '@bfly/ui/lib/LoadingIndicator';
function defaultGetDataFrom({ location }) {
return location.action === 'POP' ? 'STORE_OR_NETWORK' : 'STORE_THEN_NETWORK';
}
export function createRender({ prerender, render, renderFetched }) {
@taion
taion / Pipfile
Last active Nov 1, 2017
Token exchange
View Pipfile
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[packages]
flask = "*"
View NetworkLayer.js
import io from 'socket.io-client';
import RelayNetworkLayer from '@taion/relay-network-layer';
const MAX_SUBSCRIPTIONS = 200;
const EMPTY_SUBSCRIPTION = {
dispose() {},
};
/**
View runQuery.js
import Relay from 'react-relay';
export default function runQuery(
queryNode,
args,
environment,
forceFetch = false,
) {
const query = Relay.createQuery(queryNode, args);
@taion
taion / server.js
Last active Oct 29, 2020
GraphQL subscription server with Socket.IO, backed by Redis Pub/Sub
View server.js
const redisClient = redis.createClient(REDIS_URL);
const listeners = Object.create(null);
function addListener(channel, listener) {
if (!listeners[channel]) {
listeners[channel] = [];
redisClient.subscribe(channel);
}
listeners[channel].push(listener);
@taion
taion / makeRequired.js
Created Aug 21, 2016
GraphQL CRUD partial updates
View makeRequired.js
/* @flow */
import { GraphQLNonNull } from 'graphql';
export default function makeRequired(partial?: boolean) {
if (partial) {
return (type: mixed) => type;
}
return (type: mixed) => new GraphQLNonNull(type);
View Route.js
import invariant from 'invariant';
import React from 'react';
import BaseRoute from 'react-router/lib/Route';
import LoadingIndicator from './LoadingIndicator';
// This is not a component.
/* eslint-disable react/prop-types */
function render({ props, element }) {
if (!props) {
@taion
taion / Button.js
Last active Jul 31, 2016
Embarrassing strawman API proposal that hopefully gets the point across
View Button.js
// This is _not_ supposed to be a real API. It's only intended to describe what
// I'm looking for. It's almost intentionally awful.
export const buttonHook = new OverrideHook({
properties: ['margin'],
});
export default function Button(props) {
return (
<button
You can’t perform that action at this time.