Skip to content

Commit 1237c5b

Browse files
Merge tag 'v10.9.9' into gbs-project-branding
2 parents 1a23513 + 219cda9 commit 1237c5b

25 files changed

+332
-164
lines changed

.github/workflows/automation.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
runs-on: ubuntu-latest
1717
if: ${{ github.repository == 'jellyfin/jellyfin-web' }}
1818
steps:
19-
- uses: eps1lon/actions-label-merge-conflict@1b1b1fcde06a9b3d089f3464c96417961dde1168 # v3.0.2
19+
- uses: eps1lon/actions-label-merge-conflict@6d74047dcef155976a15e4a124dde2c7fe0c5522 # v3.0.1
2020
with:
2121
dirtyLabel: 'merge conflict'
2222
commentOnDirty: 'This pull request has merge conflicts. Please resolve the conflicts so the PR can be successfully reviewed and merged.'

.github/workflows/build.yml

+3-84
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ jobs:
1818

1919
steps:
2020
- name: Check out Git repository
21-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
22-
with:
23-
ref: ${{ github.event.pull_request.head.sha || github.sha }}
21+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
2422

2523
- name: Setup node environment
2624
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
@@ -46,84 +44,5 @@ jobs:
4644
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
4745
with:
4846
name: jellyfin-web__prod
49-
path: dist
50-
51-
publish:
52-
name: Deploy to Cloudflare Pages
53-
runs-on: ubuntu-latest
54-
if: ${{ github.repository == 'jellyfin/jellyfin-web' }}
55-
needs:
56-
- run-build-prod
57-
permissions:
58-
contents: read
59-
deployments: write
60-
61-
steps:
62-
- name: Add comment
63-
uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 # v2.5.0
64-
if: ${{ github.event_name == 'pull_request_target' }}
65-
with:
66-
GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }}
67-
message: |
68-
## Cloudflare Pages deployment
69-
70-
| **Latest commit** | <code>${{ github.event.pull_request.head.sha || github.sha }}</code> |
71-
|-------------------|:-:|
72-
| **Status** | 🔄 Deploying... |
73-
| **Preview URL** | Not available |
74-
| **Type** | 🔀 Preview |
75-
pr_number: ${{ github.event.pull_request.number }}
76-
comment_tag: CFPages-deployment
77-
mode: recreate
78-
79-
- name: Download workflow artifact
80-
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4
81-
with:
82-
name: jellyfin-web__prod
83-
path: dist
84-
85-
- name: Publish to Cloudflare
86-
id: cf
87-
uses: cloudflare/wrangler-action@f84a562284fc78278ff9052435d9526f9c718361 # v3.7.0
88-
with:
89-
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
90-
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
91-
command: pages deploy dist --project-name=jellyfin-web --branch=${{
92-
(github.event_name != 'pull_request_target' || github.event.pull_request.head.repo.full_name == github.repository)
93-
&& (github.event.pull_request.head.ref || github.ref_name)
94-
|| format('{0}/{1}', github.event.pull_request.head.repo.full_name, github.event.pull_request.head.ref)
95-
}} --commit-hash=${{ github.event.pull_request.head.sha || github.sha }}
96-
97-
- name: Update status comment (Success)
98-
if: ${{ github.event_name == 'pull_request_target' && success() }}
99-
uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 # v2.5.0
100-
with:
101-
GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }}
102-
message: |
103-
## Cloudflare Pages deployment
104-
105-
| **Latest commit** | <code>${{ github.event.pull_request.head.sha || github.sha }}</code> |
106-
|-------------------|:-:|
107-
| **Status** | ✅ Deployed! |
108-
| **Preview URL** | ${{ steps.cf.outputs.deployment-url != '' && steps.cf.outputs.deployment-url || 'Not available' }} |
109-
| **Type** | 🔀 Preview |
110-
pr_number: ${{ github.event.pull_request.number }}
111-
comment_tag: CFPages-deployment
112-
mode: recreate
113-
114-
- name: Update status comment (Failure)
115-
if: ${{ github.event_name == 'pull_request_target' && failure() }}
116-
uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 # v2.5.0
117-
with:
118-
GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }}
119-
message: |
120-
## Cloudflare Pages deployment
121-
122-
| **Latest commit** | <code>${{ github.event.pull_request.head.sha || github.sha }}</code> |
123-
|-------------------|:-:|
124-
| **Status** | ❌ Failure. Check workflow logs for details |
125-
| **Preview URL** | Not available |
126-
| **Type** | 🔀 Preview |
127-
pr_number: ${{ github.event.pull_request.number }}
128-
comment_tag: CFPages-deployment
129-
mode: recreate
47+
path: |
48+
dist

.github/workflows/codeql.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ jobs:
1919

2020
steps:
2121
- name: Checkout repository
22-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
22+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
2323

2424
- name: Initialize CodeQL
25-
uses: github/codeql-action/init@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0
25+
uses: github/codeql-action/init@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6
2626
with:
2727
languages: javascript
2828
queries: +security-extended
2929

3030
- name: Autobuild
31-
uses: github/codeql-action/autobuild@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0
31+
uses: github/codeql-action/autobuild@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6
3232

3333
- name: Perform CodeQL Analysis
34-
uses: github/codeql-action/analyze@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0
34+
uses: github/codeql-action/analyze@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6

.github/workflows/commands.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
comment-id: ${{ github.event.comment.id }}
1919
reactions: '+1'
2020
- name: Checkout the latest code
21-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
21+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
2222
with:
2323
token: ${{ secrets.JF_BOT_TOKEN }}
2424
fetch-depth: 0

.github/workflows/pr-suggestions.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515

1616
steps:
1717
- name: Check out Git repository
18-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
18+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
1919
with:
2020
ref: ${{ github.event.pull_request.head.sha }}
2121

@@ -31,6 +31,6 @@ jobs:
3131

3232
- name: Run eslint
3333
if: ${{ github.repository == 'jellyfin/jellyfin-web' }}
34-
uses: CatChen/eslint-suggestion-action@bc82950fa97bb3e46d9cca16a8bf2ad3e3c010fc # v4.1.5
34+
uses: CatChen/eslint-suggestion-action@b110ac684564c7b73e47cc223eb7a5266ec83fd3 # v4.1.1
3535
with:
3636
github-token: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/publish.yml

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Publish
2+
3+
on:
4+
workflow_run:
5+
workflows:
6+
- Build
7+
types:
8+
- completed
9+
10+
jobs:
11+
publish:
12+
name: Deploy to Cloudflare Pages
13+
if: ${{ always() }}
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: read
17+
deployments: write
18+
# We set the environment variable here (and as an output) because,
19+
# given no real runner is dispatched in compose-comment job (it's dispatched in the reusable workflow) in this workflow definition,
20+
# the env. context is not valid.
21+
env:
22+
TARGET_BRANCH: |
23+
${{
24+
github.event.workflow_run.head_repository.full_name == github.repository
25+
&& github.event.workflow_run.head_branch
26+
|| format('{0}/{1}', github.event.workflow_run.head_repository.full_name, github.event.workflow_run.head_branch)
27+
}}
28+
outputs:
29+
url: ${{ steps.cf.outputs.url }}
30+
branch: ${{ env.TARGET_BRANCH }}
31+
32+
steps:
33+
- name: Download workflow artifact
34+
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4
35+
with:
36+
run_id: ${{ github.event.workflow_run.id }}
37+
name: jellyfin-web__prod
38+
path: dist
39+
40+
- name: Publish
41+
id: cf
42+
uses: cloudflare/pages-action@f0a1cd58cd66095dee69bfa18fa5efd1dde93bca # 1
43+
with:
44+
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
45+
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
46+
projectName: jellyfin-web
47+
branch: ${{ env.TARGET_BRANCH }}
48+
directory: dist
49+
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
50+
51+
compose-comment:
52+
name: Compose comment
53+
if: ${{ always() }}
54+
uses: ./.github/workflows/job-messages.yml
55+
needs:
56+
- publish
57+
58+
with:
59+
branch: ${{ needs.publish.outputs.branch }}
60+
commit: ${{ github.event.workflow_run.head_commit.id }}
61+
preview_url: ${{ needs.publish.outputs.url }}
62+
build_workflow_run_id: ${{ github.event.workflow_run.id }}
63+
commenting_workflow_run_id: ${{ github.run_id }}
64+
in_progress: false
65+
66+
comment-status:
67+
name: Create comment status
68+
if: |
69+
always() &&
70+
github.event.workflow_run.event == 'pull_request' &&
71+
github.event.workflow_run.pull_requests[0].number != ''
72+
runs-on: ubuntu-latest
73+
needs:
74+
- compose-comment
75+
76+
steps:
77+
- name: Update job summary in PR comment
78+
uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 # v2.5.0
79+
with:
80+
GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }}
81+
message: ${{ needs.compose-comment.outputs.msg }}
82+
pr_number: ${{ github.event.workflow_run.pull_requests[0].number }}
83+
comment_tag: ${{ needs.compose-comment.outputs.marker }}
84+
mode: recreate

.github/workflows/quality.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717

1818
steps:
1919
- name: Check out Git repository
20-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
20+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
2121

2222
- name: Setup node environment
2323
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
@@ -41,7 +41,7 @@ jobs:
4141

4242
steps:
4343
- name: Check out Git repository
44-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
44+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
4545

4646
- name: Setup node environment
4747
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
@@ -62,7 +62,7 @@ jobs:
6262

6363
steps:
6464
- name: Check out Git repository
65-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
65+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
6666

6767
- name: Setup node environment
6868
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
@@ -86,7 +86,7 @@ jobs:
8686

8787
steps:
8888
- name: Check out Git repository
89-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
89+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
9090

9191
- name: Setup node environment
9292
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
@@ -107,7 +107,7 @@ jobs:
107107

108108
steps:
109109
- name: Check out Git repository
110-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
110+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
111111

112112
- name: Setup node environment
113113
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3

.github/workflows/update-sdk.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616

1717
steps:
1818
- name: Check out Git repository
19-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
19+
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
2020
with:
2121
ref: master
2222
token: ${{ secrets.JF_BOT_TOKEN }}

CONTRIBUTORS.md

+3
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@
9191
- [Chaitanya Shahare](https://github.com/Chaitanya-Shahare)
9292
- [Venkat Karasani](https://github.com/venkat-karasani)
9393
- [Connor Smith](https://github.com/ConnorS1110)
94+
- [Chaitanya Shahare](https://github.com/Chaitanya-Shahare)
95+
- [Connor Smith](https://github.com/ConnorS1110)
96+
- [Venkat Karasani](https://github.com/venkat-karasani)
9497

9598
## Emby Contributors
9699

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jellyfin-web",
3-
"version": "10.9.2",
3+
"version": "10.9.9",
44
"description": "Web interface for Jellyfin",
55
"repository": "https://github.com/jellyfin/jellyfin-web",
66
"license": "GPL-2.0-or-later",

src/RootApp.tsx

+13-11
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,19 @@ import { ApiProvider } from 'hooks/useApi';
66
import { WebConfigProvider } from 'hooks/useWebConfig';
77
import { queryClient } from 'utils/query/queryClient';
88

9-
import RootAppRouter from 'RootAppRouter';
9+
import RootAppRouter from './RootAppRouter';
1010

11-
const RootApp = () => (
12-
<QueryClientProvider client={queryClient}>
13-
<ApiProvider>
14-
<WebConfigProvider>
15-
<RootAppRouter />
16-
</WebConfigProvider>
17-
</ApiProvider>
18-
<ReactQueryDevtools initialIsOpen={false} />
19-
</QueryClientProvider>
20-
);
11+
const RootApp = () => {
12+
return (
13+
<QueryClientProvider client={queryClient}>
14+
<ApiProvider>
15+
<WebConfigProvider>
16+
<RootAppRouter />
17+
</WebConfigProvider>
18+
</ApiProvider>
19+
<ReactQueryDevtools initialIsOpen={false} />
20+
</QueryClientProvider>
21+
);
22+
};
2123

2224
export default RootApp;

src/apps/dashboard/routes/users/access.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import type { BaseItemDto, DeviceInfo, UserDto } from '@jellyfin/sdk/lib/generated-client';
2-
import React, { useCallback, useEffect, useState, useRef } from 'react';
1+
import type { UserDto } from '@jellyfin/sdk/lib/generated-client';
2+
import React, { FunctionComponent, useCallback, useEffect, useState, useRef } from 'react';
33
import { useSearchParams } from 'react-router-dom';
44

55
import loading from '../../../../components/loading/loading';
@@ -20,7 +20,7 @@ type ItemsArr = {
2020
checkedAttribute?: string
2121
};
2222

23-
const UserLibraryAccess = () => {
23+
const UserLibraryAccess: FunctionComponent = () => {
2424
const [ searchParams ] = useSearchParams();
2525
const userId = searchParams.get('userId');
2626
const [ userName, setUserName ] = useState('');

src/apps/dashboard/routes/users/parentalcontrol.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { AccessSchedule, ParentalRating, UserDto } from '@jellyfin/sdk/lib/
22
import { UnratedItem } from '@jellyfin/sdk/lib/generated-client/models/unrated-item';
33
import { DynamicDayOfWeek } from '@jellyfin/sdk/lib/generated-client/models/dynamic-day-of-week';
44
import escapeHTML from 'escape-html';
5-
import React, { useCallback, useEffect, useState, useRef } from 'react';
5+
import React, { FunctionComponent, useCallback, useEffect, useState, useRef } from 'react';
66
import { useSearchParams } from 'react-router-dom';
77

88
import globalize from '../../../../scripts/globalize';
@@ -60,7 +60,7 @@ function handleSaveUser(
6060
};
6161
}
6262

63-
const UserParentalControl = () => {
63+
const UserParentalControl: FunctionComponent = () => {
6464
const [ searchParams ] = useSearchParams();
6565
const userId = searchParams.get('userId');
6666
const [ userName, setUserName ] = useState('');

0 commit comments

Comments
 (0)