# syntax=docker/dockerfile:1

FROM node:25-bookworm-slim AS builder

WORKDIR /build

ENV ELECTRON_SKIP_BINARY_DOWNLOAD=1

RUN apt-get update \
    && apt-get install --yes --no-install-recommends patch \
    && rm -rf /var/lib/apt/lists/*

COPY upstream/HubFrontend/package.json upstream/HubFrontend/package-lock.json upstream/HubFrontend/.npmrc ./
RUN --mount=type=cache,target=/root/.npm npm ci

COPY upstream/HubFrontend/ ./
COPY docker/hcaptcha-sitekey.patch /tmp/hcaptcha-sitekey.patch
COPY docker/remove-analytics.mjs /tmp/remove-analytics.mjs
COPY docker/replace-fallback-avatar.mjs /tmp/replace-fallback-avatar.mjs

RUN if grep -q 'sitekey="1788882d-3695-4807-abac-7d7166ec6325"' src/routes/auth/login.js; then \
        patch -p1 < /tmp/hcaptcha-sitekey.patch; \
    elif grep -q 'VITE_HCAPTCHA_SITEKEY' src/routes/auth/login.js; then \
        echo "Upstream already supports VITE_HCAPTCHA_SITEKEY; skip the deployment patch."; \
    else \
        echo "Unsupported upstream hCaptcha configuration." >&2; \
        exit 1; \
    fi

RUN node /tmp/remove-analytics.mjs
RUN node /tmp/replace-fallback-avatar.mjs

ARG ASSETS_BASE=""
ARG VITE_USE_MULTIHUB=false
ARG VITE_MULTIHUB_DISCOVERY=""
ARG VITE_CONFIG_URL
ARG VITE_HCAPTCHA_SITEKEY

ENV ASSETS_BASE=${ASSETS_BASE} \
    VITE_USE_MULTIHUB=${VITE_USE_MULTIHUB} \
    VITE_MULTIHUB_DISCOVERY=${VITE_MULTIHUB_DISCOVERY} \
    VITE_CONFIG_URL=${VITE_CONFIG_URL} \
    VITE_HCAPTCHA_SITEKEY=${VITE_HCAPTCHA_SITEKEY}

RUN test -n "$VITE_HCAPTCHA_SITEKEY" \
    || (echo "VITE_HCAPTCHA_SITEKEY must be set." >&2; exit 1)

RUN npm run build

FROM nginx:alpine AS runtime

COPY nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /build/build/ /usr/share/nginx/html/

EXPOSE 8080
