mirror of
https://github.com/sct/overseerr.git
synced 2025-12-28 00:54:03 +01:00
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:
@@ -3812,6 +3812,11 @@ paths:
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
- in: query
|
||||
name: includeIds
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: A JSON array of all users
|
||||
|
||||
@@ -32,7 +32,14 @@ const router = Router();
|
||||
|
||||
router.get('/', async (req, res, next) => {
|
||||
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 q = req.query.q ? req.query.q.toString().toLowerCase() : '';
|
||||
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) {
|
||||
case 'updated':
|
||||
query = query.orderBy('user.updatedAt', 'DESC');
|
||||
@@ -84,6 +95,7 @@ router.get('/', async (req, res, next) => {
|
||||
const [users, userCount] = await query
|
||||
.take(pageSize)
|
||||
.skip(skip)
|
||||
.distinct(true)
|
||||
.getManyAndCount();
|
||||
|
||||
return res.status(200).json({
|
||||
|
||||
@@ -578,7 +578,10 @@ export const UserSelector = ({
|
||||
|
||||
const users = defaultValue.split(',');
|
||||
|
||||
const res = await fetch(`/api/v1/user`);
|
||||
const res = await fetch(
|
||||
`/api/v1/user?includeIds=${encodeURIComponent(defaultValue)}`
|
||||
);
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error('Network response was not ok');
|
||||
}
|
||||
|
||||
@@ -127,18 +127,18 @@ const OverrideRuleTiles = ({
|
||||
})
|
||||
);
|
||||
setKeywords(keywords);
|
||||
const users = await Promise.all(
|
||||
rules
|
||||
.map((rule) => rule.users?.split(','))
|
||||
.flat()
|
||||
.filter((userId) => userId)
|
||||
.map(async (userId) => {
|
||||
const res = await fetch(`/api/v1/user/${userId}`);
|
||||
if (!res.ok) throw new Error();
|
||||
const user: User = await res.json();
|
||||
return user;
|
||||
})
|
||||
);
|
||||
const allUsersFromRules = rules
|
||||
.map((rule) => rule.users)
|
||||
.filter((users) => users)
|
||||
.join(',');
|
||||
if (allUsersFromRules) {
|
||||
const res = await fetch(
|
||||
`/api/v1/user?includeIds=${encodeURIComponent(allUsersFromRules)}`
|
||||
);
|
||||
if (!res.ok) throw new Error();
|
||||
const users: User[] = (await res.json()).results;
|
||||
setUsers(users);
|
||||
}
|
||||
setUsers(users);
|
||||
})();
|
||||
}, [rules]);
|
||||
|
||||
Reference in New Issue
Block a user