Created
August 31, 2016 07:37
-
-
Save aenario/20d17f182a72ff6716c472dda1a93a3b to your computer and use it in GitHub Desktop.
Exemple reselect getter/router
This file contains 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
diff --git a/client/app/getters/router.coffee b/client/app/getters/router.coffee | |
index 50f0cb6..8bd9e24 100644 | |
--- a/client/app/getters/router.coffee | |
+++ b/client/app/getters/router.coffee | |
@@ -1,6 +1,7 @@ | |
Routes = require '../routes' | |
{MessageFilter} = require '../constants/app_constants' | |
Immutable = require 'immutable' | |
+{createSelector} = require 'reselect' | |
Routes = require '../routes' | |
{MessageActions, AccountActions} = require '../constants/app_constants' | |
@@ -12,7 +13,7 @@ RequestsGetter = require './requests' | |
Message = require '../models/message' | |
-module.exports = | |
+module.exports = RouterGetter = | |
getRouteObject: (state) -> state.get('route') | |
getDefaultAccount: (state) -> | |
@@ -105,16 +106,15 @@ module.exports = | |
return Routes.makeURL(action, params, forServer) | |
- getMessagesList: (state) -> | |
- mailboxID = @getMailboxID(state) | |
- | |
+ getSortOrder: (state) -> | |
sort = @getFilter(state).get('sort') | |
- sortOrder = parseInt "#{sort.charAt(0)}1", 10 | |
- | |
- filterFunction = @getFilterFunction(state) | |
+ return parseInt "#{sort.charAt(0)}1", 10 | |
+ getMessagesList: createSelector( | |
+ [RouterGetter.getMailboxID, RouterGetter.getSortOrder, | |
+ RouterGetter.getFilterFunction, MessageGetter.getAll], | |
+ (mailboxID, sortOrder, filterFunction, messages) -> | |
existingConversations = Immutable.Set() | |
- messages = MessageGetter.getAll(state) | |
messages = messages.filter (message) -> | |
# Display only last Message of conversation | |
@@ -136,6 +136,7 @@ module.exports = | |
messages = messages.reverse() if sortOrder is -1 | |
return messages | |
+ ) | |
getMessagesListWithIsDeleted: (state) -> | |
@getMessagesList(state).map (message) => | |
@@ -168,14 +169,18 @@ module.exports = | |
message ?= @getPreviousConversation state | |
return message | |
- getFilterFunction: (state) -> | |
- return (message) => | |
+ getFilterFunction: createSelector( | |
+ [RouterGetter.isFlagged, RouterGetter.isAttached, | |
+ RouterGetter.isUnread], | |
+ (isFlagged, isAttached, isUnread) -> | |
+ return (message) -> | |
unless message instanceof Message | |
throw new Error('message should be a Message') | |
- if @isFlagged(state) then return message.isFlagged() | |
- if @isAttached(state) then return message.isAttached() | |
- if @isUnread(state) then return message.isUnread() | |
+ if isFlagged then return message.isFlagged() | |
+ if isAttached then return message.isAttached() | |
+ if isUnread then return message.isUnread() | |
return true | |
+ ) | |
getConversation: (state, conversationID, mailboxID) -> | |
mailboxID ?= @getMailboxID(state) | |
@@ -264,7 +269,10 @@ module.exports = | |
else t 'list empty' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment