From 9178b7b295a854b427d4d80d1edfc03974280491 Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Mon, 10 Aug 2026 17:29:46 +0200 Subject: [PATCH] fix: TypeScript errors + workflow pipeline ordering - Fix hls! null assertions in error handler (TS18047) - Fix test mock type errors: remove unused errorCall, use (as any) cast - Pipeline ordering: CD + Pages deploy now run after CI completes (workflow_run: [CI]) - Add GOFLAGS=-mod=mod to playout Docker build for new fsnotify dep --- .gitea/workflows/cd.yml | 6 ++++-- .gitea/workflows/pages-deploy.yml | 6 ++++-- backend/playout/Dockerfile | 2 +- frontend/src/main.test.ts | 10 +++------- frontend/src/main.ts | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.gitea/workflows/cd.yml b/.gitea/workflows/cd.yml index 6629f46..fd64605 100644 --- a/.gitea/workflows/cd.yml +++ b/.gitea/workflows/cd.yml @@ -6,12 +6,14 @@ name: CD on: - push: - branches: [main] + workflow_run: + workflows: [CI] + types: [completed] workflow_dispatch: jobs: deploy: + if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} runs-on: [ubuntu-latest] steps: - name: Checkout code diff --git a/.gitea/workflows/pages-deploy.yml b/.gitea/workflows/pages-deploy.yml index 1ce3d7b..522b9b9 100644 --- a/.gitea/workflows/pages-deploy.yml +++ b/.gitea/workflows/pages-deploy.yml @@ -1,12 +1,14 @@ name: Deploy to Cloudflare Pages on: - push: - branches: ["main"] + workflow_run: + workflows: [CI] + types: [completed] workflow_dispatch: {} jobs: deploy: + if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: - name: Checkout diff --git a/backend/playout/Dockerfile b/backend/playout/Dockerfile index f4a9419..606311c 100644 --- a/backend/playout/Dockerfile +++ b/backend/playout/Dockerfile @@ -6,7 +6,7 @@ COPY src/go.mod src/go.sum ./ # Download dependencies and build RUN go mod download -RUN CGO_ENABLED=0 GOOS=linux go build -o /playlist-manager ./src/playlist.go +RUN CGO_ENABLED=0 GOOS=linux GOFLAGS=-mod=mod go build -o /playlist-manager ./src/playlist.go FROM alpine:3.20 diff --git a/frontend/src/main.test.ts b/frontend/src/main.test.ts index 59f0c31..61de79d 100644 --- a/frontend/src/main.test.ts +++ b/frontend/src/main.test.ts @@ -353,13 +353,9 @@ describe("player error recovery", () => { await main.initPlayerAndChat(async () => ({ default: HlsMock }) as any); // Find the error handler registered by initPlayerAndChat - const errorCall = HlsMock.mock.results?.[0]?.value?.on?.mock?.calls?.find( - (c: [string, Function]) => c[0] === "hlsError" - ); - // Use hlsInstance.on mock calls - const errorHandler = hlsInstance.on.mock.calls.find( - (c: [string, Function]) => c[0] === "hlsError" - ); + const errorHandler = (hlsInstance.on as any).mock.calls.find( + (c: any) => c[0] === "hlsError" + ) as [string, Function] | undefined; if (errorHandler) { const handler = errorHandler[1]; diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 44cc7f2..16ffa3c 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -198,17 +198,17 @@ export async function initPlayerAndChat(loadHlsModule: () => Promise<{ default: if (playerErrorCount <= 1) { console.warn("HLS media error, attempting recovery..."); showReconnecting("Recovering..."); - hls.recoverMediaError(); + hls!.recoverMediaError(); } else { console.error("HLS media error: recovery failed"); - hls.destroy(); + hls!.destroy(); showReconnecting("Stream temporarily unavailable"); } break; default: console.error("HLS fatal error:", data.type, data.details); - hls.destroy(); + hls!.destroy(); showReconnecting("Stream temporarily unavailable"); break; }