Skip to content

Commit ee23de6

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into develop
2 parents ddbc377 + 04980f9 commit ee23de6

File tree

57 files changed

+1116
-185
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+1116
-185
lines changed

.all-contributorsrc

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,42 @@
773773
"contributions": [
774774
"code"
775775
]
776+
},
777+
{
778+
"login": "lunks",
779+
"name": "Pedro Nascimento",
780+
"avatar_url": "https://avatars.githubusercontent.com/u/91118?v=4",
781+
"profile": "http://twitter.com/lunks/",
782+
"contributions": [
783+
"code"
784+
]
785+
},
786+
{
787+
"login": "owenvoke",
788+
"name": "Owen Voke",
789+
"avatar_url": "https://avatars.githubusercontent.com/u/1899334?v=4",
790+
"profile": "https://voke.dev",
791+
"contributions": [
792+
"code"
793+
]
794+
},
795+
{
796+
"login": "Nimelrian",
797+
"name": "Sebastian K",
798+
"avatar_url": "https://avatars.githubusercontent.com/u/8960836?v=4",
799+
"profile": "https://github.com/Nimelrian",
800+
"contributions": [
801+
"code"
802+
]
803+
},
804+
{
805+
"login": "jariz",
806+
"name": "jariz",
807+
"avatar_url": "https://avatars.githubusercontent.com/u/1415847?v=4",
808+
"profile": "https://github.com/jariz",
809+
"contributions": [
810+
"code"
811+
]
776812
}
777813
],
778814
"badgeTemplate": "<a href=\"#contributors-\"><img alt=\"All Contributors\" src=\"https://img.shields.io/badge/all_contributors-<%= contributors.length %>-orange.svg\"/></a>",

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,8 @@
1616
}
1717
],
1818
"editor.formatOnSave": true,
19-
"typescript.preferences.importModuleSpecifier": "non-relative"
19+
"typescript.preferences.importModuleSpecifier": "non-relative",
20+
"files.associations": {
21+
"globals.css": "tailwindcss"
22+
}
2023
}

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,23 @@
22
<img src="./public/logo_full.svg" alt="Jellyseerr" style="margin: 20px 0;">
33
</p>
44
<p align="center">
5+
<<<<<<< HEAD
56
<a href="https://discord.gg/ckbvBtDJgC"><img src="https://img.shields.io/badge/Discord-Chat-lightgrey" alt="Discord"></a>
67
<a href="https://hub.docker.com/r/fallenbagel/jellyseerr"><img src="https://img.shields.io/docker/pulls/fallenbagel/jellyseerr" alt="Docker pulls"></a>
78
<a href="https://github.com/fallenbagel/jellyseerr/blob/develop/LICENSE"><img alt="GitHub" src="https://img.shields.io/github/license/fallenbagel/jellyseerr"></a>
9+
=======
10+
<img src="https://github.com/sct/overseerr/workflows/Overseerr%20Release/badge.svg?branch=master" alt="Overseerr Release" />
11+
<img src="https://github.com/sct/overseerr/workflows/Overseerr%20CI/badge.svg" alt="Overseerr CI">
12+
</p>
13+
<p align="center">
14+
<a href="https://discord.gg/overseerr"><img src="https://img.shields.io/discord/783137440809746482" alt="Discord"></a>
15+
<a href="https://hub.docker.com/r/sctx/overseerr"><img src="https://img.shields.io/docker/pulls/sctx/overseerr" alt="Docker pulls"></a>
16+
<a href="https://hosted.weblate.org/engage/overseerr/"><img src="https://hosted.weblate.org/widgets/overseerr/-/overseerr-frontend/svg-badge.svg" alt="Translation status" /></a>
17+
<a href="https://github.com/sct/overseerr/blob/develop/LICENSE"><img alt="GitHub" src="https://img.shields.io/github/license/sct/overseerr"></a>
18+
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
19+
<a href="#contributors-"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-88-orange.svg"/></a>
20+
<!-- ALL-CONTRIBUTORS-BADGE:END -->
21+
>>>>>>> upstream/develop
822
</p>
923
1024
**Jellyseerr** is a free and open source software application for managing requests for your media library. It is a a fork of Overseerr built to bring support for Jellyfin & Emby media servers!
@@ -140,4 +154,11 @@ Our [Code of Conduct](https://github.com/fallenbagel/jellyseerr/blob/develop/COD
140154

141155
## Contributing
142156

157+
<<<<<<< HEAD
143158
You can help improve Jellyseerr too! Check out our [Contribution Guide](https://github.com/fallenbagel/jellyseerr/blob/develop/CONTRIBUTING.md) to get started.
159+
=======
160+
You can help improve Overseerr too! Check out our [Contribution Guide](https://github.com/sct/overseerr/blob/develop/CONTRIBUTING.md) to get started.
161+
162+
## Contributors ✨
163+
164+
Thanks goes to all wonderful people who contributed directly to Jellyseerr and Overseerr.

cypress/e2e/settings/discover-customization.cy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ describe('Discover Customization', () => {
9696
.should('be.disabled');
9797

9898
cy.get('#data').clear();
99-
cy.get('#data').type('time travel{enter}', { delay: 100 });
99+
cy.get('#data').type('christmas{enter}', { delay: 100 });
100100

101101
// Confirming we have some results
102102
cy.contains('.slider-header', sliderTitle)

next.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ module.exports = {
2323
},
2424
experimental: {
2525
scrollRestoration: true,
26+
largePageDataBytes: 256000,
2627
},
2728
};

overseerr-api.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3868,7 +3868,7 @@ paths:
38683868
$ref: '#/components/schemas/User'
38693869
/user/{userId}/requests:
38703870
get:
3871-
summary: Get user by ID
3871+
summary: Get requests for a specific user
38723872
description: |
38733873
Retrieves a user's requests in a JSON object.
38743874
tags:
@@ -3964,7 +3964,7 @@ paths:
39643964
example: false
39653965
/user/{userId}/watchlist:
39663966
get:
3967-
summary: Get user by ID
3967+
summary: Get the Plex watchlist for a specific user
39683968
description: |
39693969
Retrieves a user's Plex Watchlist in a JSON object.
39703970
tags:

server/api/servarr/sonarr.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logger from '@server/logger';
22
import ServarrBase from './base';
33

4-
interface SonarrSeason {
4+
export interface SonarrSeason {
55
seasonNumber: number;
66
monitored: boolean;
77
statistics?: {

server/entity/Media.ts

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -115,29 +115,29 @@ class Media {
115115
@Column({ type: 'datetime', nullable: true })
116116
public mediaAddedAt: Date;
117117

118-
@Column({ nullable: true })
119-
public serviceId?: number;
118+
@Column({ nullable: true, type: 'int' })
119+
public serviceId?: number | null;
120120

121-
@Column({ nullable: true })
122-
public serviceId4k?: number;
121+
@Column({ nullable: true, type: 'int' })
122+
public serviceId4k?: number | null;
123123

124-
@Column({ nullable: true })
125-
public externalServiceId?: number;
124+
@Column({ nullable: true, type: 'int' })
125+
public externalServiceId?: number | null;
126126

127-
@Column({ nullable: true })
128-
public externalServiceId4k?: number;
127+
@Column({ nullable: true, type: 'int' })
128+
public externalServiceId4k?: number | null;
129129

130-
@Column({ nullable: true })
131-
public externalServiceSlug?: string;
130+
@Column({ nullable: true, type: 'varchar' })
131+
public externalServiceSlug?: string | null;
132132

133-
@Column({ nullable: true })
134-
public externalServiceSlug4k?: string;
133+
@Column({ nullable: true, type: 'varchar' })
134+
public externalServiceSlug4k?: string | null;
135135

136-
@Column({ nullable: true })
137-
public ratingKey?: string;
136+
@Column({ nullable: true, type: 'varchar' })
137+
public ratingKey?: string | null;
138138

139-
@Column({ nullable: true })
140-
public ratingKey4k?: string;
139+
@Column({ nullable: true, type: 'varchar' })
140+
public ratingKey4k?: string | null;
141141

142142
@Column({ nullable: true })
143143
public jellyfinMediaId?: string;
@@ -288,7 +288,9 @@ class Media {
288288
if (this.mediaType === MediaType.MOVIE) {
289289
if (
290290
this.externalServiceId !== undefined &&
291-
this.serviceId !== undefined
291+
this.externalServiceId !== null &&
292+
this.serviceId !== undefined &&
293+
this.serviceId !== null
292294
) {
293295
this.downloadStatus = downloadTracker.getMovieProgress(
294296
this.serviceId,
@@ -298,7 +300,9 @@ class Media {
298300

299301
if (
300302
this.externalServiceId4k !== undefined &&
301-
this.serviceId4k !== undefined
303+
this.externalServiceId4k !== null &&
304+
this.serviceId4k !== undefined &&
305+
this.serviceId4k !== null
302306
) {
303307
this.downloadStatus4k = downloadTracker.getMovieProgress(
304308
this.serviceId4k,
@@ -310,7 +314,9 @@ class Media {
310314
if (this.mediaType === MediaType.TV) {
311315
if (
312316
this.externalServiceId !== undefined &&
313-
this.serviceId !== undefined
317+
this.externalServiceId !== null &&
318+
this.serviceId !== undefined &&
319+
this.serviceId !== null
314320
) {
315321
this.downloadStatus = downloadTracker.getSeriesProgress(
316322
this.serviceId,
@@ -320,7 +326,9 @@ class Media {
320326

321327
if (
322328
this.externalServiceId4k !== undefined &&
323-
this.serviceId4k !== undefined
329+
this.externalServiceId4k !== null &&
330+
this.serviceId4k !== undefined &&
331+
this.serviceId4k !== null
324332
) {
325333
this.downloadStatus4k = downloadTracker.getSeriesProgress(
326334
this.serviceId4k,

server/entity/MediaRequest.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,3 +1187,5 @@ export class MediaRequest {
11871187
}
11881188
}
11891189
}
1190+
1191+
export default MediaRequest;

server/entity/SeasonRequest.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { MediaRequestStatus } from '@server/constants/media';
2+
import { getRepository } from '@server/datasource';
23
import {
4+
AfterRemove,
35
Column,
46
CreateDateColumn,
57
Entity,
@@ -34,6 +36,18 @@ class SeasonRequest {
3436
constructor(init?: Partial<SeasonRequest>) {
3537
Object.assign(this, init);
3638
}
39+
40+
@AfterRemove()
41+
public async handleRemoveParent(): Promise<void> {
42+
const mediaRequestRepository = getRepository(MediaRequest);
43+
const requestToBeDeleted = await mediaRequestRepository.findOneOrFail({
44+
where: { id: this.request.id },
45+
});
46+
47+
if (requestToBeDeleted.seasons.length === 0) {
48+
await mediaRequestRepository.delete({ id: this.request.id });
49+
}
50+
}
3751
}
3852

3953
export default SeasonRequest;

0 commit comments

Comments
 (0)