fix(overriderules): allows every user to be added to the override rules (#1333)

* fix: allows every user to be added to the override rules

* chore: code cleanup

* fix(overriderules): displaying more than ten users at a time

* fix(overriderules): pageSize unaffected by duplicate includeIds

Co-authored-by: Gauthier <mail@gauthierth.fr>

* fix: allows every user to be added to the override rules

* chore(overriderules): readding override rules after rebase

* chore(overriderules): removing empty file

* chore(overriderules): fixing bad merge

---------

Co-authored-by: Gauthier <mail@gauthierth.fr>
This commit is contained in:
RankWeis
2025-03-09 07:37:47 -07:00
committed by GitHub
parent dcc13080bc
commit af8d6b475c
4 changed files with 34 additions and 14 deletions

View File

@@ -3812,6 +3812,11 @@ paths:
required: false required: false
schema: schema:
type: string type: string
- in: query
name: includeIds
required: false
schema:
type: string
responses: responses:
'200': '200':
description: A JSON array of all users description: A JSON array of all users

View File

@@ -32,7 +32,14 @@ const router = Router();
router.get('/', async (req, res, next) => { router.get('/', async (req, res, next) => {
try { try {
const pageSize = req.query.take ? Number(req.query.take) : 10; const includeIds = [
...new Set(
req.query.includeIds ? req.query.includeIds.toString().split(',') : []
),
];
const pageSize = req.query.take
? Number(req.query.take)
: Math.max(10, includeIds.length);
const skip = req.query.skip ? Number(req.query.skip) : 0; const skip = req.query.skip ? Number(req.query.skip) : 0;
const q = req.query.q ? req.query.q.toString().toLowerCase() : ''; const q = req.query.q ? req.query.q.toString().toLowerCase() : '';
let query = getRepository(User).createQueryBuilder('user'); let query = getRepository(User).createQueryBuilder('user');
@@ -44,6 +51,10 @@ router.get('/', async (req, res, next) => {
); );
} }
if (includeIds.length > 0) {
query.andWhereInIds(includeIds);
}
switch (req.query.sort) { switch (req.query.sort) {
case 'updated': case 'updated':
query = query.orderBy('user.updatedAt', 'DESC'); query = query.orderBy('user.updatedAt', 'DESC');
@@ -84,6 +95,7 @@ router.get('/', async (req, res, next) => {
const [users, userCount] = await query const [users, userCount] = await query
.take(pageSize) .take(pageSize)
.skip(skip) .skip(skip)
.distinct(true)
.getManyAndCount(); .getManyAndCount();
return res.status(200).json({ return res.status(200).json({

View File

@@ -578,7 +578,10 @@ export const UserSelector = ({
const users = defaultValue.split(','); const users = defaultValue.split(',');
const res = await fetch(`/api/v1/user`); const res = await fetch(
`/api/v1/user?includeIds=${encodeURIComponent(defaultValue)}`
);
if (!res.ok) { if (!res.ok) {
throw new Error('Network response was not ok'); throw new Error('Network response was not ok');
} }

View File

@@ -127,18 +127,18 @@ const OverrideRuleTiles = ({
}) })
); );
setKeywords(keywords); setKeywords(keywords);
const users = await Promise.all( const allUsersFromRules = rules
rules .map((rule) => rule.users)
.map((rule) => rule.users?.split(',')) .filter((users) => users)
.flat() .join(',');
.filter((userId) => userId) if (allUsersFromRules) {
.map(async (userId) => { const res = await fetch(
const res = await fetch(`/api/v1/user/${userId}`); `/api/v1/user?includeIds=${encodeURIComponent(allUsersFromRules)}`
if (!res.ok) throw new Error(); );
const user: User = await res.json(); if (!res.ok) throw new Error();
return user; const users: User[] = (await res.json()).results;
}) setUsers(users);
); }
setUsers(users); setUsers(users);
})(); })();
}, [rules]); }, [rules]);