Skip to content

Instantly share code, notes, and snippets.

View UberMouse's full-sized avatar

Taylor Lodge UberMouse

View GitHub Profile
var Actions;
(function (Actions) {
Actions["storeRefreshToken"] = "storeRefreshToken";
Actions["removeRefreshToken"] = "removeRefreshToken";
})(Actions || (Actions = {}));
var Services;
(function (Services) {
Services["checkToken"] = "checkToken";
Services["performOauthFlow"] = "performOauthFlow";
Services["retrieveTokens"] = "retrieveTokens";
type TContext = {
state: {
someComputedReduxState: string
},
actions: {
doTheThing: () => void
}
}
const Context = React.createContext<TContext | null>(null);
function Provider(props) {
import { useMachine } from "@xstate/react/lib";
import { GraphQLError } from "graphql";
import { values } from "lodash";
import React, { useEffect, useRef } from "react";
import { Observable } from "rxjs";
import { map } from "rxjs/operators";
import { assign, createMachine } from "xstate";
import { QueryResultContainer, QueryWrapper } from "../gql/queryResultHandler";
import { $YesReallyAny, assert } from "../index";
@UberMouse
UberMouse / buildService.ts
Last active March 26, 2020 22:42
RxJS + XState
import { isArray, some } from "lodash";
import { Observable } from "rxjs";
import { useObservable } from "rxjs-hooks";
import {
interpret,
EventObject,
StateMachine,
Typestate,
StateSchema,
Interpreter,
@UberMouse
UberMouse / machine.js
Created January 30, 2020 03:55
Generated by XState Viz: https://xstate.js.org/viz
const RepositoryMachine = Machine({
key: "repository",
initial: "noRepositorySelected",
states: {
noRepositorySelected: {
on: {
REPOSITORY_SELECTED: {
target: "viewingChanges",
actions: assign({
selectedRepository: (_ctx, event) => event.repository
import { useMachine } from "@xstate/react/lib";
import { assign, createMachine } from "xstate";
import { uniqueId } from "lodash";
import React from "react";
import { makeMachineRoutable } from "./makeMachineRoutable";
type PromiseContext<TData, TParameters> = {
parameters?: TParameters;
import { StateMachine, StateSchema, EventObject, Typestate, Interpreter, State } from "xstate";
import * as _ from "lodash";
import React, { useContext } from "react";
export function makeMachineRoutable<
TContext,
TStateSchema extends StateSchema,
TEvent extends EventObject,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
0 ldc #2 <foo>
2 astore_1
3 new #7 <java/lang/StringBuilder>
6 dup
7 invokespecial #8 <java/lang/StringBuilder.<init>>
10 aload_1
11 invokevirtual #9 <java/lang/StringBuilder.append>
14 ldc #23 <, bar>
16 invokevirtual #9 <java/lang/StringBuilder.append>
19 invokevirtual #12 <java/lang/StringBuilder.toString>
@UberMouse
UberMouse / breadcrumbMiddleware.js
Created July 3, 2017 21:18
Log Raygun4JS Breadcrumbs from Redux actions
const breadcrumbMiddleware = store => next => action => {
const previousState = store.getState();
const nextAction = next(action);
const state = store.getState();
rg4js('recordBreadcrumb', {
message: `Executing Redux action '${action.type}'`,
metadata: {
action,
state,
@UberMouse
UberMouse / errorReportingMiddleware.js
Created July 3, 2017 21:08
Redux exception logging with Raygun4JS
const errorReportingMiddleware = store => next => action => {
try {
return next(action);
} catch(err) {
console.error('Caught an exception!', err);
window.rg4js('send', {
error: err,
customData: {
action,