forked from coracle/flotilla
Address RBAC review feedback
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import {first, sortBy} from "@welshman/lib"
|
||||
import {first, removeUndefined, sortBy} from "@welshman/lib"
|
||||
import {waitForThunkError, removeRoomMember} from "@welshman/app"
|
||||
import MenuDots from "@assets/icons/menu-dots.svg?dataurl"
|
||||
import MinusCircle from "@assets/icons/minus-circle.svg?dataurl"
|
||||
@@ -21,8 +21,15 @@
|
||||
import RoomName from "@app/components/RoomName.svelte"
|
||||
import RoomMembersAdd from "@app/components/RoomMembersAdd.svelte"
|
||||
import type {RoomMember} from "@app/core/roles"
|
||||
import {deriveRoom, deriveRoomMembers} from "@app/core/state"
|
||||
import {deriveRoomRoles, hasPermission} from "@app/core/roles"
|
||||
import {
|
||||
deriveRoomMembers,
|
||||
deriveRoomRoles,
|
||||
deriveHasPermission,
|
||||
sortRolesDesc,
|
||||
ROOM_PERMISSION_ADD_MEMBER,
|
||||
ROOM_PERMISSION_REMOVE_MEMBER,
|
||||
} from "@app/core/roles"
|
||||
import {deriveRoom} from "@app/core/state"
|
||||
import {pushModal} from "@app/util/modal"
|
||||
import {pushToast} from "@app/util/toast"
|
||||
|
||||
@@ -36,8 +43,8 @@
|
||||
const room = deriveRoom(url, h)
|
||||
const members = deriveRoomMembers(url, h)
|
||||
const roomRoles = deriveRoomRoles(url, h)
|
||||
const canAddMembers = hasPermission(url, h, 9000)
|
||||
const canRemoveMembers = hasPermission(url, h, 9001)
|
||||
const canAddMembers = deriveHasPermission(url, h, ROOM_PERMISSION_ADD_MEMBER)
|
||||
const canRemoveMembers = deriveHasPermission(url, h, ROOM_PERMISSION_REMOVE_MEMBER)
|
||||
|
||||
const back = () => history.back()
|
||||
|
||||
@@ -52,8 +59,7 @@
|
||||
const getResolvedRoles = (member: RoomMember) =>
|
||||
removeUndefined(member.roles.map(roleName => $roomRoles.roles.get(roleName)))
|
||||
|
||||
const getPrimaryRole = (member: RoomMember) =>
|
||||
first(sortBy(role => -(role.order ?? -Infinity), getResolvedRoles(member)))
|
||||
const getPrimaryRole = (member: RoomMember) => first(sortRolesDesc(getResolvedRoles(member)))
|
||||
|
||||
const memberGroups = $derived.by(() => {
|
||||
const byRole = new Map<
|
||||
@@ -102,9 +108,6 @@
|
||||
return groups
|
||||
})
|
||||
|
||||
const removeUndefined = <T,>(items: Array<T | undefined>): T[] =>
|
||||
items.filter((item): item is T => item !== undefined)
|
||||
|
||||
const addMember = () => pushModal(RoomMembersAdd, {url, h})
|
||||
|
||||
const removeMember = (pubkey: string) =>
|
||||
|
||||
Reference in New Issue
Block a user