Skip to content

Instantly share code, notes, and snippets.

View taion's full-sized avatar
👹
Kappa

Jimmy Jia taion

👹
Kappa
View GitHub Profile
@taion
taion / Route.js
Created August 14, 2019 01:53
Found Relay <Route>
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 / foo.entrypoint.js
Last active August 14, 2020 14:52
Router strawman
// 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'));
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 / server.js
Last active March 11, 2024 10:20
GraphQL subscription server with Socket.IO, backed by Redis Pub/Sub
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);