Skip to content

Instantly share code, notes, and snippets.

@donabrams
donabrams / exampleRelayRequest.graphql
Created September 1, 2016 14:08
Example Relay Request with Heavy fragment user
query Index {
viewer {
id
...FX
}
}
fragment F0 on User {
name
email
@donabrams
donabrams / Post.java
Created September 6, 2016 14:11
Example Java State Machine
public class Post {
public enum PostStatus {
PENDING, PUBLISHED, UNPUBLISHED
}
private PostStatus status;
public void post() {
this.status = PostStatus.PUBLISHED;
@donabrams
donabrams / postReducer.js
Last active September 6, 2016 14:27
Javascript state machine example
import { ACTION_PUBLISH, ACTION_UNPUBLISH } from "./actions"
export const STATUS_DRAFT = "STATUS_DRAFT"
export const STATUS_PUBLISHED = "STATUS_PUBLISHED"
export const STATUS_UNPUBLISHED = "STATUS_UNPUBLISHED"
const initialState = {
status: STATUS_DRAFT
}
@donabrams
donabrams / post.hs
Last active September 6, 2016 14:34
State Machine in Haskell
Post = Draft | PublishedPost | UnpublishedPost
publish :: Post -> PublishedPost
PublishedPost
unpublish :: Post -> UnpublishedPost
UnpublishedPost
@donabrams
donabrams / post.js
Created September 6, 2016 14:29
State Machine in Javascript
const STATUS_DRAFT = "STATUS_DRAFT"
const STATUS_PUBLISHED = "STATUS_PUBLISHED"
const STATUS_UNPUBLISHED = "STATUS_UNPUBLISHED"
function createPost() {
return {
status: STATUS_DRAFT
}
}
@donabrams
donabrams / altReducer.js
Last active September 15, 2016 19:12
Alternative Redux reducer syntax
import { ACTION1, ACTION2 } from './someAction'
import { reducer } from 'alt-redux'
export const name = "TODOS"
const initialState = {}
const store = reducer({ name, initialState })
store.on(ACTION1, (state, { foo, bar }) => ({...state, foo, bar }))
store.on(ACTION2, (state, { baz }) => ({...state, baz }))
@donabrams
donabrams / nest1.js
Last active September 16, 2016 21:22
Component nest
const nest = ({components: [Wrapper, ...rest] = [], props={}, children}) => rest
? nest({components: rest, props, children: <Wrapper {...props}>{children}</Wrapper> })
: <Wrapper {...props}>{children}</Wrapper>
nest({components: [Wrapper1, Wrapper2]}) // <Wrapper2><Wrapper1/></Wrapper2>
@donabrams
donabrams / ImmutableEx1.js
Last active September 20, 2016 21:54
React/Redux w/ Immutable.js
import { Map, is } from 'immutable'
import { createStore, bindActionCreators } from 'redux'
import { connect } from 'react-redux'
import { pure } from 'recompose'
// ACTIONS
const INCREMENT_ACTION = "INCREMENT_ACTION"
const LOAD_AUTHOR = "LOAD_AUTHOR"
const increment = () => ({type: INCREMENT_ACTION})
const loadAuthor = (id, data) => ({type: LOAD_AUTHOR, id, ...data})
@donabrams
donabrams / A.graphql
Created January 18, 2017 15:33
GraphQL API Design Interview Question
stream {
... on Text {
html
}
... on Photo {
url
}
... on CodeSnippet {
embedSrc
}
@donabrams
donabrams / navigator.md
Last active April 10, 2017 17:35
navigator deep dive

What's navigator'?

navigator' :: forall r eff. Prop (NavigatorProps r eff) -> r -> SceneRenderer r -> ReactElement
navigator' p initialRoute renderScene = navigatorU $ unsafeApplyProps {initialRoute, renderScene} p

Wrapper around https://facebook.github.io/react-native/docs/navigator.html and the unsafe constructor navigatorU.