This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* 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)) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import EventEmitter from 'events'; | |
export class Ref extends EventEmitter { | |
constructor(v) { | |
super(); | |
this._value = v; | |
} | |
getValue() { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* 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(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const Message = Immutable.Record({ | |
id: '', | |
threadID: '', | |
threadName: '', | |
authorName: '', | |
text: '', | |
date: new Date(), | |
isRead: false | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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 ( |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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} /> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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') |