fix: resolve production UI and API issues

- Fixed backend version endpoint by adding retry logic import
- Gallery login page improvements:
  * Increased title size from text-xl to text-2xl (responsive scaling)
  * Title now uses event's custom primary color (var(--color-primary))
  * Removed event category badge from login page
- Fixed Umami analytics configuration check:
  * Added proper enabled state tracking
  * Warning now only shows when Umami is explicitly not configured
  * Checks both admin settings and environment variables properly

These changes improve user experience and fix false warnings in production.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-07-20 21:00:43 +02:00
parent a72741c0d9
commit 3a4dccd9f0
3 changed files with 14 additions and 16 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
const express = require('express');
const { db } = require('../database/db');
const { db, withRetry } = require('../database/db');
const { adminAuth } = require('../middleware/auth-enhanced-v2');
const fs = require('fs').promises;
const path = require('path');
+1 -10
View File
@@ -289,18 +289,9 @@ export const GalleryPage: React.FC = () => {
alt={settingsData?.branding_company_name || 'PicPeak'}
className="h-12 sm:h-16 lg:h-20 w-auto object-contain mx-auto mb-3 sm:mb-4"
/>
<h1 className="text-xl sm:text-2xl lg:text-3xl font-bold mb-2 px-2" style={{ color: 'var(--color-text, #171717)' }}>
<h1 className="text-2xl sm:text-3xl lg:text-4xl font-bold mb-2 px-2" style={{ color: 'var(--color-primary, #5C8762)' }}>
{galleryInfo?.event_name}
</h1>
{galleryInfo?.event_type && (
<div className="flex items-center justify-center text-xs sm:text-sm" style={{ color: 'var(--color-text, #171717)', opacity: 0.7 }}>
<span className="px-3 py-1 rounded-full" style={{ backgroundColor: 'var(--color-primary, #5C8762)', opacity: 0.1 }}>
<span style={{ color: 'var(--color-primary, #5C8762)' }}>
{t(`events.types.${galleryInfo.event_type}`)}
</span>
</span>
</div>
)}
</div>
{/* Expiration Warning */}
+12 -5
View File
@@ -53,7 +53,7 @@ export const AnalyticsPage: React.FC = () => {
const [isEmbedMode, setIsEmbedMode] = useState(false);
// Check if Umami is configured from settings or environment
const [umamiConfig, setUmamiConfig] = useState<{ url?: string; shareUrl?: string }>({});
const [umamiConfig, setUmamiConfig] = useState<{ url?: string; shareUrl?: string; enabled?: boolean }>({});
// Fetch analytics data from backend
const { data: apiData, isLoading, refetch } = useQuery({
@@ -82,7 +82,8 @@ export const AnalyticsPage: React.FC = () => {
if (settings.umami_enabled && settings.umami_url && settings.umami_website_id) {
setUmamiConfig({
url: settings.umami_url,
shareUrl: settings.umami_share_url
shareUrl: settings.umami_share_url,
enabled: true
});
} else {
// Fall back to environment variables if they exist
@@ -92,8 +93,11 @@ export const AnalyticsPage: React.FC = () => {
if (envUrl && envWebsiteId) {
setUmamiConfig({
url: envUrl,
shareUrl: import.meta.env.VITE_UMAMI_SHARE_URL
shareUrl: import.meta.env.VITE_UMAMI_SHARE_URL,
enabled: true
});
} else {
setUmamiConfig({ enabled: false });
}
}
} catch (error) {
@@ -105,8 +109,11 @@ export const AnalyticsPage: React.FC = () => {
if (envUrl && envWebsiteId) {
setUmamiConfig({
url: envUrl,
shareUrl: import.meta.env.VITE_UMAMI_SHARE_URL
shareUrl: import.meta.env.VITE_UMAMI_SHARE_URL,
enabled: true
});
} else {
setUmamiConfig({ enabled: false });
}
}
};
@@ -450,7 +457,7 @@ export const AnalyticsPage: React.FC = () => {
</div>
{/* Configuration Notice */}
{!umamiConfig.url && (
{umamiConfig.enabled === false && (
<Card padding="md" className="mt-6 bg-amber-50 border-amber-200">
<div className="flex items-start gap-3">
<Activity className="w-5 h-5 text-amber-600 flex-shrink-0" />