Skip to content

Commit 0129baa

Browse files
committed
Converts UnreadThreadStore
Finally we have the last store. This one is fairly straightforward.
1 parent bce2aad commit 0129baa

1 file changed

Lines changed: 29 additions & 65 deletions

File tree

Lines changed: 29 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,42 @@
1-
/**
2-
* This file is provided by Facebook for testing and evaluation purposes
3-
* only. Facebook reserves all rights not expressly granted.
4-
*
5-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
8-
* FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
9-
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
10-
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
11-
*/
1+
var alt = require('../alt')
122

13-
var ChatAppDispatcher = require('../dispatcher/ChatAppDispatcher');
14-
var ChatConstants = require('../constants/ChatConstants');
15-
var EventEmitter = require('events').EventEmitter;
16-
var MessageStore = require('../stores/MessageStore');
17-
var ThreadStore = require('../stores/ThreadStore');
18-
var merge = require('react/lib/merge');
3+
var ChatThreadActionCreators = require('../actions/ChatThreadActionCreators')
4+
var ChatServerActionCreators = require('../actions/ChatServerActionCreators')
195

20-
var ActionTypes = ChatConstants.ActionTypes;
21-
var CHANGE_EVENT = 'change';
6+
var MessageStore = require('../stores/MessageStore')
7+
var ThreadStore = require('../stores/ThreadStore')
228

23-
var UnreadThreadStore = merge(EventEmitter.prototype, {
9+
class UnreadThreadStore {
10+
constructor() {
11+
this.bindActions(ChatThreadActionCreators)
12+
this.bindActions(ChatServerActionCreators)
13+
}
2414

25-
emitChange: function() {
26-
this.emit(CHANGE_EVENT);
27-
},
15+
onClickThread(threadID) {
16+
this.wait()
17+
}
2818

29-
/**
30-
* @param {function} callback
31-
*/
32-
addChangeListener: function(callback) {
33-
this.on(CHANGE_EVENT, callback);
34-
},
19+
onReceiveRawMessages(rawMessages) {
20+
this.wait()
21+
}
3522

36-
/**
37-
* @param {function} callback
38-
*/
39-
removeChangeListener: function(callback) {
40-
this.removeListener(CHANGE_EVENT, callback);
41-
},
23+
wait() {
24+
this.waitFor([
25+
ThreadStore.dispatchToken,
26+
MessageStore.dispatchToken
27+
])
28+
}
4229

43-
getCount: function() {
44-
var threads = ThreadStore.getAll();
45-
var unreadCount = 0;
30+
static getCount() {
31+
var threads = ThreadStore.getAll()
32+
var unreadCount = 0
4633
for (var id in threads) {
4734
if (!threads[id].lastMessage.isRead) {
48-
unreadCount++;
35+
unreadCount++
4936
}
5037
}
51-
return unreadCount;
52-
}
53-
54-
});
55-
56-
UnreadThreadStore.dispatchToken = ChatAppDispatcher.register(function(payload) {
57-
ChatAppDispatcher.waitFor([
58-
ThreadStore.dispatchToken,
59-
MessageStore.dispatchToken
60-
]);
61-
62-
var action = payload.action;
63-
switch (action.type) {
64-
65-
case ActionTypes.CLICK_THREAD:
66-
UnreadThreadStore.emitChange();
67-
break;
68-
69-
case ActionTypes.RECEIVE_RAW_MESSAGES:
70-
UnreadThreadStore.emitChange();
71-
break;
72-
73-
default:
74-
// do nothing
38+
return unreadCount
7539
}
76-
});
40+
}
7741

78-
module.exports = UnreadThreadStore;
42+
module.exports = alt.createStore(UnreadThreadStore, 'UnreadThreadStore')

0 commit comments

Comments
 (0)