fix: client perms, @everyone/@channel, docs, unit tests
- usePermissions ORs current user roles + @everyone only (not all server roles) - cache myRolesByServer; load on active server; refresh after self role edit - gate/notify @everyone and @channel; plain @username push; special mention UI - refresh FEATURE_PARITY (DMs exist; drop stale critical gaps) - README production deploy notes dumpster.service - unit tests for permission bits and broadcast mention tokens
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useRoleStore, type Role } from '../stores/role.ts';
|
||||
import type { User } from '../stores/auth.ts';
|
||||
import { useAuthStore, type User } from '../stores/auth.ts';
|
||||
import { usePermissions } from '../lib/usePermissions.ts';
|
||||
|
||||
interface MemberRoleAssignProps {
|
||||
@@ -12,8 +12,10 @@ interface MemberRoleAssignProps {
|
||||
export function MemberRoleAssign({ serverId, member }: MemberRoleAssignProps) {
|
||||
const roles = useRoleStore((s) => s.roles);
|
||||
const fetchRoles = useRoleStore((s) => s.fetchRoles);
|
||||
const fetchMyRoles = useRoleStore((s) => s.fetchMyRoles);
|
||||
const setMemberRoles = useRoleStore((s) => s.setMemberRoles);
|
||||
const getMemberRoles = useRoleStore((s) => s.getMemberRoles);
|
||||
const currentUserId = useAuthStore((s) => s.user?.id);
|
||||
|
||||
const { isOwner, canManageRoles } = usePermissions(serverId);
|
||||
const canEdit = isOwner || canManageRoles;
|
||||
@@ -56,6 +58,9 @@ export function MemberRoleAssign({ serverId, member }: MemberRoleAssignProps) {
|
||||
try {
|
||||
await setMemberRoles(serverId, member.id, Array.from(selectedIds));
|
||||
setMemberRolesState(roles.filter((r) => selectedIds.has(r.id)));
|
||||
if (currentUserId && member.id === currentUserId) {
|
||||
await fetchMyRoles(serverId, currentUserId);
|
||||
}
|
||||
setOpen(false);
|
||||
} catch {
|
||||
// error in store
|
||||
|
||||
Reference in New Issue
Block a user