mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00
fix: address unhandled promise rejections & bump node to v16.13 (#2398)
* fix: unhandled promise rejections * build(deps): bump node from 14.18 to 16.13 * fix: unhandled promise rejection in new Plex users endpoint * fix: build error Co-authored-by: Ryan Cohen <ryan@sct.dev>
This commit is contained in:
@@ -243,52 +243,63 @@ settingsRoutes.post('/tautulli', async (req, res) => {
|
||||
settingsRoutes.get(
|
||||
'/plex/users',
|
||||
isAuthenticated(Permission.MANAGE_USERS),
|
||||
async (req, res) => {
|
||||
async (req, res, next) => {
|
||||
const userRepository = getRepository(User);
|
||||
const qb = userRepository.createQueryBuilder('user');
|
||||
|
||||
const admin = await userRepository.findOneOrFail({
|
||||
select: ['id', 'plexToken'],
|
||||
order: { id: 'ASC' },
|
||||
});
|
||||
const plexApi = new PlexTvAPI(admin.plexToken ?? '');
|
||||
const plexUsers = (await plexApi.getUsers()).MediaContainer.User.map(
|
||||
(user) => user.$
|
||||
).filter((user) => user.email);
|
||||
try {
|
||||
const admin = await userRepository.findOneOrFail({
|
||||
select: ['id', 'plexToken'],
|
||||
order: { id: 'ASC' },
|
||||
});
|
||||
const plexApi = new PlexTvAPI(admin.plexToken ?? '');
|
||||
const plexUsers = (await plexApi.getUsers()).MediaContainer.User.map(
|
||||
(user) => user.$
|
||||
).filter((user) => user.email);
|
||||
|
||||
const unimportedPlexUsers: {
|
||||
id: string;
|
||||
title: string;
|
||||
username: string;
|
||||
email: string;
|
||||
thumb: string;
|
||||
}[] = [];
|
||||
const unimportedPlexUsers: {
|
||||
id: string;
|
||||
title: string;
|
||||
username: string;
|
||||
email: string;
|
||||
thumb: string;
|
||||
}[] = [];
|
||||
|
||||
const existingUsers = await qb
|
||||
.where('user.plexId IN (:...plexIds)', {
|
||||
plexIds: plexUsers.map((plexUser) => plexUser.id),
|
||||
})
|
||||
.orWhere('user.email IN (:...plexEmails)', {
|
||||
plexEmails: plexUsers.map((plexUser) => plexUser.email.toLowerCase()),
|
||||
})
|
||||
.getMany();
|
||||
const existingUsers = await qb
|
||||
.where('user.plexId IN (:...plexIds)', {
|
||||
plexIds: plexUsers.map((plexUser) => plexUser.id),
|
||||
})
|
||||
.orWhere('user.email IN (:...plexEmails)', {
|
||||
plexEmails: plexUsers.map((plexUser) => plexUser.email.toLowerCase()),
|
||||
})
|
||||
.getMany();
|
||||
|
||||
await Promise.all(
|
||||
plexUsers.map(async (plexUser) => {
|
||||
if (
|
||||
!existingUsers.find(
|
||||
(user) =>
|
||||
user.plexId === parseInt(plexUser.id) ||
|
||||
user.email === plexUser.email.toLowerCase()
|
||||
) &&
|
||||
(await plexApi.checkUserAccess(parseInt(plexUser.id)))
|
||||
) {
|
||||
unimportedPlexUsers.push(plexUser);
|
||||
}
|
||||
})
|
||||
);
|
||||
await Promise.all(
|
||||
plexUsers.map(async (plexUser) => {
|
||||
if (
|
||||
!existingUsers.find(
|
||||
(user) =>
|
||||
user.plexId === parseInt(plexUser.id) ||
|
||||
user.email === plexUser.email.toLowerCase()
|
||||
) &&
|
||||
(await plexApi.checkUserAccess(parseInt(plexUser.id)))
|
||||
) {
|
||||
unimportedPlexUsers.push(plexUser);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
return res.status(200).json(sortBy(unimportedPlexUsers, 'username'));
|
||||
return res.status(200).json(sortBy(unimportedPlexUsers, 'username'));
|
||||
} catch (e) {
|
||||
logger.error('Something went wrong getting unimported Plex users', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
});
|
||||
next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve unimported Plex users.',
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user