filter roles that doesn't exists and fix uncategorized listing

This commit is contained in:
41666 2019-03-21 09:32:31 -05:00
parent 7e79d65390
commit f2cf88e58f

View file

@ -54,18 +54,18 @@ export const toggleRole = action('toggleRole', (state: ViewState, role: string,
} }
}) })
const getUncategorized = (roleMap: OrderedMap<RenderedRole>, allCategories): RenderedCategory => { const getUncategorized = (roleMap: OrderedMap<RenderedRole>, allCategories: Set): RenderedCategory => {
const roles = Set(roleMap.keys()) const roles = roleMap.keySeq().toSet()
const knownRoles = Set([...Object.values(allCategories).map((c: any) => c.roles)]) const knownRoles = allCategories.map(v => v.roles).flatMap(v => v)
const rolesLeft = roles.subtract(knownRoles) const rolesLeft = roles.subtract(knownRoles)
// console.log({ roles, knownRoles, rolesLeft }) // console.log(Map({ roles, knownRoles, rolesLeft }).toJS())
return { return {
id: 'Uncategorized', id: 'Uncategorized',
name: 'Uncategorized', name: 'Uncategorized',
position: -1, position: -1,
roles: rolesLeft, 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, hidden: true,
type: 'multi' type: 'multi'
} }
@ -93,13 +93,14 @@ export const renderRoles = (id: string) => (dispatch: *, getState: *) => {
let render = OrderedSet() let render = OrderedSet()
for (let catId in categories) { for (let catId in categories) {
const category = categories[catId] 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) render = render.add(category)
} }
// console.log({id}) // console.log({id})
render = render.add(getUncategorized(roleMap, categories)) render = render.add(getUncategorized(roleMap, render.toSet()))
render = render.sortBy(h => (h.position) ? h.position : h.name)
render = render.sortBy(h => h.position || 0)
dispatch(updateCurrentView({ server: id, categories: render, invalidated: false, selected: Set(current.gm.roles), originalSelected: Set(current.gm.roles) })) dispatch(updateCurrentView({ server: id, categories: render, invalidated: false, selected: Set(current.gm.roles), originalSelected: Set(current.gm.roles) }))
} }