|
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') |
12 | 2 |
|
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') |
19 | 5 |
|
20 | | -var ActionTypes = ChatConstants.ActionTypes; |
21 | | -var CHANGE_EVENT = 'change'; |
| 6 | +var MessageStore = require('../stores/MessageStore') |
| 7 | +var ThreadStore = require('../stores/ThreadStore') |
22 | 8 |
|
23 | | -var UnreadThreadStore = merge(EventEmitter.prototype, { |
| 9 | +class UnreadThreadStore { |
| 10 | + constructor() { |
| 11 | + this.bindActions(ChatThreadActionCreators) |
| 12 | + this.bindActions(ChatServerActionCreators) |
| 13 | + } |
24 | 14 |
|
25 | | - emitChange: function() { |
26 | | - this.emit(CHANGE_EVENT); |
27 | | - }, |
| 15 | + onClickThread(threadID) { |
| 16 | + this.wait() |
| 17 | + } |
28 | 18 |
|
29 | | - /** |
30 | | - * @param {function} callback |
31 | | - */ |
32 | | - addChangeListener: function(callback) { |
33 | | - this.on(CHANGE_EVENT, callback); |
34 | | - }, |
| 19 | + onReceiveRawMessages(rawMessages) { |
| 20 | + this.wait() |
| 21 | + } |
35 | 22 |
|
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 | + } |
42 | 29 |
|
43 | | - getCount: function() { |
44 | | - var threads = ThreadStore.getAll(); |
45 | | - var unreadCount = 0; |
| 30 | + static getCount() { |
| 31 | + var threads = ThreadStore.getAll() |
| 32 | + var unreadCount = 0 |
46 | 33 | for (var id in threads) { |
47 | 34 | if (!threads[id].lastMessage.isRead) { |
48 | | - unreadCount++; |
| 35 | + unreadCount++ |
49 | 36 | } |
50 | 37 | } |
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 |
75 | 39 | } |
76 | | -}); |
| 40 | +} |
77 | 41 |
|
78 | | -module.exports = UnreadThreadStore; |
| 42 | +module.exports = alt.createStore(UnreadThreadStore, 'UnreadThreadStore') |
0 commit comments