Add timezone support and auto-sync push subscriptions

- Install tzdata in Docker for proper Australia/Perth timezone handling
- Update VAPID email to standard placeholder
- Auto-sync browser push subscriptions to server on page load

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Gemini Agent
2026-01-25 14:29:42 +00:00
parent cae436a20d
commit a5181cf6fe
3 changed files with 15 additions and 1 deletions

View File

@@ -33,6 +33,8 @@ RUN npm run build
FROM node:20-slim AS runner
WORKDIR /app
RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV TZ=Australia/Perth

View File

@@ -18,7 +18,7 @@ services:
# Push notification VAPID keys
- NEXT_PUBLIC_VAPID_PUBLIC_KEY=BEFs_VtoxY7SpNnd-ubz1ioliESlRI4sY6ny7Qp3rm7V1cm0gqyZX8TAHp4AaQ81yKC4LfWtJFQz_aHc25G-Tww
- VAPID_PRIVATE_KEY=KgVQVO7XhfCklrJ3o9wowzK90AxI6Exg9pXPq76Qx4A
- VAPID_EMAIL=mailto:admin@nextstep.local
- VAPID_EMAIL=mailto:admin@example.com
depends_on:
db:
condition: service_healthy

View File

@@ -52,6 +52,18 @@ export function NotificationPermission({ workspaceId }: NotificationPermissionPr
if (registration.pushManager) {
const subscription = await registration.pushManager.getSubscription()
setIsSubscribed(!!subscription)
// Auto-sync subscription to server to ensure it exists
if (subscription) {
fetch('/api/notifications/subscribe', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
subscription: subscription.toJSON(),
workspaceId,
}),
}).catch(console.error)
}
}
} catch (err) {
console.error('Failed to check subscription:', err)