From f2cf88e58f087867d847f75427714d14f0bd9b41 Mon Sep 17 00:00:00 2001 From: Kata Date: Thu, 21 Mar 2019 09:32:31 -0500 Subject: [PATCH] filter roles that doesn't exists and fix uncategorized listing --- ui/stores/roles.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ui/stores/roles.js b/ui/stores/roles.js index f493bdc..7e8eb82 100644 --- a/ui/stores/roles.js +++ b/ui/stores/roles.js @@ -54,18 +54,18 @@ export const toggleRole = action('toggleRole', (state: ViewState, role: string, } }) -const getUncategorized = (roleMap: OrderedMap, allCategories): RenderedCategory => { - const roles = Set(roleMap.keys()) - const knownRoles = Set([...Object.values(allCategories).map((c: any) => c.roles)]) +const getUncategorized = (roleMap: OrderedMap, allCategories: Set): RenderedCategory => { + const roles = roleMap.keySeq().toSet() + const knownRoles = allCategories.map(v => v.roles).flatMap(v => v) const rolesLeft = roles.subtract(knownRoles) - // console.log({ roles, knownRoles, rolesLeft }) + // console.log(Map({ roles, knownRoles, rolesLeft }).toJS()) return { id: 'Uncategorized', name: 'Uncategorized', position: -1, roles: rolesLeft, - _roles: OrderedSet(rolesLeft.map(r => roleMap.get(r))).sortBy(v => -(v.position || 0)), + _roles: rolesLeft.map(v => roleMap.get(v)).filter(v => v != null), hidden: true, type: 'multi' } @@ -93,13 +93,14 @@ export const renderRoles = (id: string) => (dispatch: *, getState: *) => { let render = OrderedSet() for (let catId in categories) { const category = categories[catId] - category._roles = OrderedSet(category.roles.map(r => roleMap.get(r))).sortBy(v => -(v.position || 0)) + category._roles = OrderedSet( + category.roles.map(r => roleMap.get(r)) + ).filter(role => role != null).sortBy(role => role ? -(role.position || 0) : 0) render = render.add(category) } // console.log({id}) - render = render.add(getUncategorized(roleMap, categories)) - - render = render.sortBy(h => h.position || 0) + render = render.add(getUncategorized(roleMap, render.toSet())) + render = render.sortBy(h => (h.position) ? h.position : h.name) dispatch(updateCurrentView({ server: id, categories: render, invalidated: false, selected: Set(current.gm.roles), originalSelected: Set(current.gm.roles) })) }