diff --git a/app/assets/javascripts/actions/post.coffee b/app/assets/javascripts/actions/post.coffee new file mode 100644 index 0000000..ef5684d --- /dev/null +++ b/app/assets/javascripts/actions/post.coffee @@ -0,0 +1,5 @@ +Actions = require('flummox').Actions + +class PostActions extends Actions + +module.exports = PostActions diff --git a/app/assets/javascripts/client_application.cjsx b/app/assets/javascripts/client_application.cjsx index ead3005..c4bb27f 100644 --- a/app/assets/javascripts/client_application.cjsx +++ b/app/assets/javascripts/client_application.cjsx @@ -1,6 +1,10 @@ React = require('react') Router = require('react-router') routes = require('routes') +Flux = require('flux') +FluxComponent = require('flummox/component') +flux = new Flux() Router.run routes, Router.HistoryLocation, (Handler, state) -> - React.render(<Handler />, document.getElementById("reactContent")) + handler = <FluxComponent flux={flux} render={ => <Handler />}></FluxComponent> + React.render(handler, document.getElementById("reactContent")) diff --git a/app/assets/javascripts/flux.coffee b/app/assets/javascripts/flux.coffee new file mode 100644 index 0000000..5b783c0 --- /dev/null +++ b/app/assets/javascripts/flux.coffee @@ -0,0 +1,11 @@ +Flummox = require('flummox').Flummox +PostsStore = require('stores/post') +PostActions = require('actions/post') + +class AppFlux extends Flummox + constructor: -> + super() + @createActions 'posts', PostActions + @createStore 'posts', PostsStore, this + +module.exports = AppFlux diff --git a/app/assets/javascripts/posts.coffee b/app/assets/javascripts/posts.coffee deleted file mode 100644 index 24f83d1..0000000 --- a/app/assets/javascripts/posts.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# Place all the behaviors and hooks related to the matching controller here. -# All this logic will automatically be available in application.js. -# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/stores/post.coffee b/app/assets/javascripts/stores/post.coffee new file mode 100644 index 0000000..2709393 --- /dev/null +++ b/app/assets/javascripts/stores/post.coffee @@ -0,0 +1,15 @@ +Store = require('flummox').Store +Immutable = require('immutable') + +getDefaultState = -> + { posts: Immutable.OrderedMap(), didFetchAll: false } + +class PostsStore extends Store + constructor: (flux) -> + super() + + postActionIds = flux.getActionIds('posts') + @state = getDefaultState() + @flux = flux + +module.exports = PostsStore diff --git a/app/assets/package.json b/app/assets/package.json index add7186..3eee60a 100644 --- a/app/assets/package.json +++ b/app/assets/package.json @@ -17,6 +17,8 @@ }, "dependencies": { "react": "*", - "react-router": "*" + "react-router": "*", + "immutable": "*", + "flummox": "*" } }