10
10
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
11
11
*/
12
12
13
+ var Fluent = require ( 'fluent-js' ) ;
13
14
var ChatAppDispatcher = require ( '../dispatcher/ChatAppDispatcher' ) ;
14
- var ChatConstants = require ( '../constants/ChatConstants' ) ;
15
15
var ChatMessageUtils = require ( '../utils/ChatMessageUtils' ) ;
16
- var EventEmitter = require ( 'events' ) . EventEmitter ;
17
16
var ThreadStore = require ( '../stores/ThreadStore' ) ;
18
- var assign = require ( 'object-assign' ) ;
19
-
20
- var ActionTypes = ChatConstants . ActionTypes ;
21
- var CHANGE_EVENT = 'change' ;
22
17
23
18
var _messages = { } ;
24
19
@@ -41,35 +36,20 @@ function _markAllInThreadRead(threadID) {
41
36
}
42
37
}
43
38
44
- var MessageStore = assign ( { } , EventEmitter . prototype , {
45
-
46
- emitChange : function ( ) {
47
- this . emit ( CHANGE_EVENT ) ;
48
- } ,
39
+ class MessageStore extends Fluent . Store {
49
40
50
- /**
51
- * @param {function } callback
52
- */
53
- addChangeListener : function ( callback ) {
54
- this . on ( CHANGE_EVENT , callback ) ;
55
- } ,
56
-
57
- removeChangeListener : function ( callback ) {
58
- this . removeListener ( CHANGE_EVENT , callback ) ;
59
- } ,
60
-
61
- get : function ( id ) {
41
+ get ( id ) {
62
42
return _messages [ id ] ;
63
- } ,
43
+ }
64
44
65
- getAll : function ( ) {
45
+ getAll ( ) {
66
46
return _messages ;
67
- } ,
47
+ }
68
48
69
49
/**
70
50
* @param {string } threadID
71
51
*/
72
- getAllForThread : function ( threadID ) {
52
+ getAllForThread ( threadID ) {
73
53
var threadMessages = [ ] ;
74
54
for ( var id in _messages ) {
75
55
if ( _messages [ id ] . threadID === threadID ) {
@@ -85,44 +65,43 @@ var MessageStore = assign({}, EventEmitter.prototype, {
85
65
return 0 ;
86
66
} ) ;
87
67
return threadMessages ;
88
- } ,
68
+ }
89
69
90
- getAllForCurrentThread : function ( ) {
70
+ getAllForCurrentThread ( ) {
91
71
return this . getAllForThread ( ThreadStore . getCurrentID ( ) ) ;
92
72
}
93
73
94
- } ) ;
74
+ }
95
75
96
- MessageStore . dispatchToken = ChatAppDispatcher . register ( function ( action ) {
76
+ var actionHandlers = {
97
77
98
- switch ( action . type ) {
78
+ viewActionHandlers : {
99
79
100
- case ActionTypes . CLICK_THREAD :
101
- ChatAppDispatcher . waitFor ( [ ThreadStore . dispatchToken ] ) ;
80
+ clickThread ( threadID ) {
81
+ this . waitFor ( [ ThreadStore ] ) ;
102
82
_markAllInThreadRead ( ThreadStore . getCurrentID ( ) ) ;
103
- MessageStore . emitChange ( ) ;
104
- break ;
83
+ } ,
105
84
106
- case ActionTypes . CREATE_MESSAGE :
85
+ createMessage ( text , currentThreadID ) {
107
86
var message = ChatMessageUtils . getCreatedMessageData (
108
- action . text ,
109
- action . currentThreadID
87
+ text ,
88
+ currentThreadID
110
89
) ;
111
90
_messages [ message . id ] = message ;
112
- MessageStore . emitChange ( ) ;
113
- break ;
91
+ }
92
+
93
+ } ,
114
94
115
- case ActionTypes . RECEIVE_RAW_MESSAGES :
116
- _addMessages ( action . rawMessages ) ;
117
- ChatAppDispatcher . waitFor ( [ ThreadStore . dispatchToken ] ) ;
95
+ serverActionHandlers : {
96
+
97
+ receiveAll ( rawMessages ) {
98
+ _addMessages ( rawMessages ) ;
99
+ this . waitFor ( [ ThreadStore ] ) ;
118
100
_markAllInThreadRead ( ThreadStore . getCurrentID ( ) ) ;
119
- MessageStore . emitChange ( ) ;
120
- break ;
101
+ }
121
102
122
- default :
123
- // do nothing
124
103
}
125
104
126
- } ) ;
105
+ } ;
127
106
128
- module . exports = MessageStore ;
107
+ module . exports = new MessageStore ( ChatAppDispatcher , actionHandlers ) ;
0 commit comments