Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from

Conversation

RankWeis
Copy link

@RankWeis RankWeis commented Feb 5, 2025

Description

  • Updates /users API to allow efficient retrieving of multiple users at once.
  • Uses this API to ensure that all users selected in an overridden rule are selected.

Screenshot (if UI-related)

image image

To-Dos

  • Successful build pnpm build
  • Translation keys pnpm i18n:extract
  • Database migration (if required)

Issues Fixed or Closed

@gauthier-th gauthier-th changed the title fix(OverridenRules): allows every user to be added to the override rules fix(overriderules): allows every user to be added to the override rules Feb 5, 2025
const user: User = await res.json();
return user;
})
const distinctUsers = new Array(
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Set to distinct, back to array to rejoin. Probably unnecessary as the repository query is set to distinct already, but it doesn't hurt.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't hurt but it's not necessary at all, because the User Select will not allow you to add an user twice, and because the /user endpoint will not return an user twice even if specified twice.
It would be more clean without it.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is getting all the rules on the page, not just a single rule. I've implemented the fix, but the request will be making duplicates:

image

const user: User = await res.json();
return user;
})
const distinctUsers = new Array(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't hurt but it's not necessary at all, because the User Select will not allow you to add an user twice, and because the /user endpoint will not return an user twice even if specified twice.
It would be more clean without it.

Comment on lines 87 to 89
(distinctUsers
? `?includeIds=${encodeURIComponent(distinctUsers)}`
: '')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can do a if (rule.users) before the const res = ... instead of this ternary. It would be more clear and avoid an unnecessary api call if the override rule has no rule with an user.

const includeIds = req.query.includeIds
? req.query.includeIds.toString().split(',')
: [];
const pageSize = req.query.take
Copy link
Author

@RankWeis RankWeis Feb 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without this, if you had more than ten users in a single rule, it would only display the first ten. There may be better ways of doing this (i.e. from the Tile rather than in here), but this felt cleanest to me.

ETA - this does introduce the small issue where if you pass in duplicates, your pageSize is actually too large. i.e. I pass in eleven userIds but they're all the same, this will pageSize to 11. This seems minor but wanted to call it out.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then you could make the ids unique to make sure this doesn't happen? It would easily remove the issue

const includeIds = req.query.includeIds
? req.query.includeIds.toString().split(',')
: [];
const pageSize = req.query.take
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then you could make the ids unique to make sure this doesn't happen? It would easily remove the issue

server/routes/user/index.ts Outdated Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Override Rules only allow you to select from first ten users
2 participants