Skip to content

Commit

Permalink
fix: Fixed an issue where Overseerr's 'requested by' rule failed to f…
Browse files Browse the repository at this point in the history
…etch the Plex user when the user uses a display name
  • Loading branch information
jorenn92 committed Aug 26, 2024
1 parent f9423ee commit a4422f5
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 3 deletions.
57 changes: 57 additions & 0 deletions server/src/modules/api/overseerr-api/overseerr-api.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ interface OverseerrUser {
email: string;
username: string;
plexToken: string;
plexId?: number;
plexUsername: string;
userType: number;
permissions: number;
Expand Down Expand Up @@ -116,6 +117,31 @@ interface OverseerMedia {
serviceUrl: string;
}

interface OverseerrUserResponse {
pageInfo: {
pages: number;
pageSize: number;
results: number;
page: number;
};
results: OverseerrUserResponseResult[];
}

interface OverseerrUserResponseResult {
permissions: number;
id: number;
email: string;
plexUsername: string;
username: string;
userType: number;
plexId: number;
avatar: string;
createdAt: string;
updatedAt: string;
requestCount: number;
displayName: string;
}

@Injectable()
export class OverseerrApiService {
api: OverseerrApi;
Expand Down Expand Up @@ -170,6 +196,37 @@ export class OverseerrApiService {
}
}

public async getUsers(): Promise<any> {
try {
const size = 50;
let hasNext = true;
let skip = 0;

let users: OverseerrUserResponseResult[] = [];

while (hasNext) {
let resp: OverseerrUserResponse = await this.api.get(
`/user?take=${size}&skip=${skip}`,
);

users.push(...resp.results);

if (resp?.pageInfo?.page < resp?.pageInfo?.pages) {
skip = skip + size;
} else {
hasNext = false;
}
}
return users;
} catch (err) {
this.logger.warn(
`Couldn't fetch Overseerr users. Is the application running?`,
);
this.logger.debug(err);
return [];
}
}

public async deleteRequest(requestId: string) {
try {
const response: OverseerBasicApiResponse = await this.api.delete(
Expand Down
7 changes: 4 additions & 3 deletions server/src/modules/rules/getter/overseerr-getter.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ export class OverseerrGetterService {

const prop = this.appProperties.find((el) => el.id === id);
const tmdb = await this.tmdbIdHelper.getTmdbIdFromPlexData(libItem);
// const overseerrUsers = await this.overseerrApi.getUsers();

let mediaResponse: OverSeerrMediaResponse;
if (tmdb && tmdb.id) {
Expand Down Expand Up @@ -123,8 +124,8 @@ export class OverseerrGetterService {
? request.requestedBy?.username
: plexUsers.find(
(u) =>
u.username ===
request.requestedBy?.plexUsername,
u.plexId ===
request.requestedBy?.plexId,
)?.username,
);
}
Expand All @@ -135,7 +136,7 @@ export class OverseerrGetterService {
? request.requestedBy?.username
: plexUsers.find(
(u) =>
u.username === request.requestedBy?.plexUsername,
u.plexId === request.requestedBy?.plexId,
)?.username,
);
}
Expand Down

0 comments on commit a4422f5

Please sign in to comment.