Skip to content

Instantly share code, notes, and snippets.

@antonycourtney
antonycourtney / fillView.js
Created October 15, 2015 06:28
fillView action in oneref-flux-challenge
/*
* fill view by generating more requests if necessary
*/
function fillView(st,updater) {
const lastSith = st.lastKnownSith();
if (st.needsApprentice(lastSith)) {
requestSithInfo(true,lastSith.info.apprenticeId,updater);
} else {
const firstSith = st.firstKnownSith();
if (st.needsMaster(firstSith)) {
import EventEmitter from 'events';
export class Ref extends EventEmitter {
constructor(v) {
super();
this._value = v;
}
getValue() {
@antonycourtney
antonycourtney / ChatAppState.js
Last active October 19, 2015 03:46
oneref-chat application state
/**
*
* ChatAppState.js - atate of Chat application as an Immutable record
*
* Our application state consists of a collection of message threads
* and a current thread (identified by its thread ID)
*
* Each thread id maps to a Thread (a collection of Message)
*/
const emptyThread = new Thread();
@antonycourtney
antonycourtney / Thread.js
Created October 15, 2015 01:59
oneref-chat message Thread
/**
* Contents of a single conversation (message thread) sharing a common thread ID
*
* We use a SortedMap and add messages in chronological order
*/
export default class Thread extends Immutable.Record({
messageIdMap: Immutable.OrderedMap() // map from id to Message, ordered by date
}) {
/*
* add or update the message by its message id
@antonycourtney
antonycourtney / Message.js
Created October 15, 2015 01:55
oneref-chat Message as Immutable Record
const Message = Immutable.Record({
id: '',
threadID: '',
threadName: '',
authorName: '',
text: '',
date: new Date(),
isRead: false
});
@antonycourtney
antonycourtney / app.js
Last active October 19, 2015 02:43
Top level of React application
/**
* app.js -- top level of TodoMVC app
*/
import React from 'react';
import OneRef from 'oneref';
import TodoAppState from './todoAppState';
import TodoApp from './components/TodoApp.react';
const todoAppState = new TodoAppState();
const stateRef = new OneRef.Ref(todoAppState);
@antonycourtney
antonycourtney / todoActions.js
Last active October 19, 2015 02:42
Responses to user interaction in oneref-todomvc
/**
* todoActions.js -- event handlers for TodoMVC app
*/
import TodoItem from './todoItem';
export function create(text,updater) {
updater((state) => state.addItem(new TodoItem(text)));
}
export function toggleComplete(item,updater) {
@antonycourtney
antonycourtney / Header.react.js
Last active October 19, 2015 02:49
React Header component for oneref-todomvc
/**
* Header.react.js -- React component for TodoMVC Header UI
*/
import React from 'react';
import TodoTextInput from './TodoTextInput.react';
import * as TodoActions from '../todoActions';
export default class Header extends React.Component {
render() {
return (
@antonycourtney
antonycourtney / TodoApp.React.js
Last active October 19, 2015 02:36
Top level View component for TodoMVC app
/**
* todoApp.React.js -- top-level React component for TodoMVC
*/
export default class TodoApp extends React.Component {
render() {
const appState = this.props.appState;
const allTodos = appState.getAll();
return (
<div>
<Header stateRefUpdater={this.props.stateRefUpdater} />
@antonycourtney
antonycourtney / viewTest.js
Last active October 19, 2015 02:38
Test of static version of views
/**
* viewTest.js -- render TodoApp component with static test data
*/
const item0 = new TodoItem('This is a test item');
const state0 = new TodoAppState();
const todoAppState = state0.addItem(item0);
React.render(
<TodoApp appState={todoAppState} />,
document.getElementById('todoapp')