fix: Improve plugin ui entry points, Fix chat scroll, fix notifications, fix user rights
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import type { Room } from '../../../../shared-kernel';
|
||||
import { SYSTEM_ROLE_IDS } from '../constants/access-control.constants';
|
||||
import { normalizeRoomAccessControl } from './room.rules';
|
||||
|
||||
function buildRoom(overrides: Partial<Room> = {}): Room {
|
||||
return {
|
||||
id: 'room-1',
|
||||
name: 'Room',
|
||||
hostId: 'host-1',
|
||||
isPrivate: false,
|
||||
createdAt: 1,
|
||||
userCount: 1,
|
||||
members: [
|
||||
{
|
||||
id: 'user-1',
|
||||
oderId: 'oder-1',
|
||||
username: 'alice',
|
||||
displayName: 'Alice',
|
||||
role: 'admin',
|
||||
joinedAt: 1,
|
||||
lastSeenAt: 1
|
||||
}
|
||||
],
|
||||
...overrides
|
||||
};
|
||||
}
|
||||
|
||||
describe('normalizeRoomRoleAssignments', () => {
|
||||
it('uses legacy member roles when assignments are missing', () => {
|
||||
const room = normalizeRoomAccessControl(buildRoom());
|
||||
|
||||
expect(room.roleAssignments).toEqual([
|
||||
{
|
||||
userId: 'user-1',
|
||||
oderId: 'oder-1',
|
||||
roleIds: [SYSTEM_ROLE_IDS.admin]
|
||||
}
|
||||
]);
|
||||
|
||||
expect(room.members?.[0]?.role).toBe('admin');
|
||||
});
|
||||
|
||||
it('honors an explicit empty assignment list', () => {
|
||||
const room = normalizeRoomAccessControl(buildRoom({ roleAssignments: [] }));
|
||||
|
||||
expect(room.roleAssignments).toEqual([]);
|
||||
expect(room.members?.[0]?.role).toBe('member');
|
||||
});
|
||||
});
|
||||
@@ -45,6 +45,7 @@ export function normalizeRoomRoleAssignments(
|
||||
): RoomRoleAssignment[] {
|
||||
const validRoleIds = new Set(roles.map((role) => role.id).filter((roleId) => roleId !== SYSTEM_ROLE_IDS.everyone));
|
||||
const normalizedByUserKey = new Map<string, RoomRoleAssignment>();
|
||||
const hasExplicitAssignments = Array.isArray(assignments);
|
||||
|
||||
for (const assignment of assignments ?? []) {
|
||||
if (!assignment || typeof assignment !== 'object') {
|
||||
@@ -72,7 +73,7 @@ export function normalizeRoomRoleAssignments(
|
||||
});
|
||||
}
|
||||
|
||||
if (normalizedByUserKey.size > 0) {
|
||||
if (hasExplicitAssignments) {
|
||||
return sortAssignments(Array.from(normalizedByUserKey.values()));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user