diff --git a/.env.example b/.env.example index 0119d7e..c92c023 100644 --- a/.env.example +++ b/.env.example @@ -28,6 +28,12 @@ VITE_PUSH_NOTIFICATIONS_ENABLED=true # Image Upload Configuration (pict-rs) VITE_PICTRS_BASE_URL=https://img.mydomain.com +# Activities / Sortir Configuration +# Default language for the standalone activities app (fr, en, es) +VITE_DEFAULT_LOCALE=fr +# Default map center as "lat,lng" (defaults to France center if not set) +VITE_DEFAULT_MAP_CENTER=42.9667,1.6000 + # Market Configuration VITE_MARKET_NADDR=naddr1qqjxgdp4vv6rydej943n2dny956rwwf4943xzwfc95ekyd3evenrsvrrvc6r2qf8waehxw309akxucnfw3ejuct5d96xcctw9e5k7tmwdaehgunjv4kxz7f0v96xjmczyqrfrfkxv3m8t4elpe28x065z30zszaaqa4u0744qcmadsz3y50cjqcyqqq82scmcafla # OBSOLETE: Not used in codebase - market uses VITE_NOSTR_RELAYS instead diff --git a/src/activities-app/app.config.ts b/src/activities-app/app.config.ts index 30cbb22..eaada70 100644 --- a/src/activities-app/app.config.ts +++ b/src/activities-app/app.config.ts @@ -1,5 +1,12 @@ import type { AppConfig } from '@/core/types' +function parseMapCenter(envValue: string | undefined, fallback: { lat: number; lng: number }) { + if (!envValue) return fallback + const [lat, lng] = envValue.split(',').map(Number) + if (isNaN(lat) || isNaN(lng)) return fallback + return { lat, lng } +} + /** * Standalone activities app configuration. * Only enables base + activities modules. @@ -36,7 +43,7 @@ export const appConfig: AppConfig = { baseUrl: import.meta.env.VITE_LNBITS_BASE_URL || 'http://localhost:5000', apiKey: import.meta.env.VITE_API_KEY || '' }, - defaultMapCenter: { lat: 42.9667, lng: 1.6000 }, // Ariège, France + defaultMapCenter: parseMapCenter(import.meta.env.VITE_DEFAULT_MAP_CENTER, { lat: 42.9667, lng: 1.6000 }), maxTicketsPerUser: 10, enableMap: true, enablePrivateEvents: false diff --git a/src/activities-app/app.ts b/src/activities-app/app.ts index e997b9b..6375cf0 100644 --- a/src/activities-app/app.ts +++ b/src/activities-app/app.ts @@ -12,7 +12,7 @@ import activitiesModule from '@/modules/activities' import App from './App.vue' import '@/assets/index.css' -import { i18n } from '@/i18n' +import { i18n, changeLocale, type AvailableLocale } from '@/i18n' /** * Initialize the standalone activities app @@ -59,6 +59,12 @@ export async function createAppInstance() { app.use(pinia) app.use(i18n) + // Set default locale from env (user's saved preference takes priority via useStorage in i18n) + const defaultLocale = import.meta.env.VITE_DEFAULT_LOCALE as AvailableLocale | undefined + if (defaultLocale && !localStorage.getItem('user-locale')) { + await changeLocale(defaultLocale) + } + // Initialize plugin manager pluginManager.init(app, router) diff --git a/src/app.config.ts b/src/app.config.ts index 11e2df8..5fe63b2 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -1,5 +1,12 @@ import type { AppConfig } from './core/types' +function parseMapCenter(envValue: string | undefined, fallback: { lat: number; lng: number }) { + if (!envValue) return fallback + const [lat, lng] = envValue.split(',').map(Number) + if (isNaN(lat) || isNaN(lng)) return fallback + return { lat, lng } +} + export const appConfig: AppConfig = { modules: { base: { @@ -84,7 +91,7 @@ export const appConfig: AppConfig = { baseUrl: import.meta.env.VITE_LNBITS_BASE_URL || 'http://localhost:5000', apiKey: import.meta.env.VITE_API_KEY || '' }, - defaultMapCenter: { lat: 46.6034, lng: 1.8883 }, + defaultMapCenter: parseMapCenter(import.meta.env.VITE_DEFAULT_MAP_CENTER, { lat: 46.6034, lng: 1.8883 }), maxTicketsPerUser: 10, enableMap: true, enablePrivateEvents: false diff --git a/src/modules/activities/views/ActivitiesMapPage.vue b/src/modules/activities/views/ActivitiesMapPage.vue index 566146b..4a7d533 100644 --- a/src/modules/activities/views/ActivitiesMapPage.vue +++ b/src/modules/activities/views/ActivitiesMapPage.vue @@ -6,6 +6,16 @@ import ActivityMap from '../components/ActivityMap.vue' const { allActivities, isLoading, subscribe } = useActivities() +function parseMapCenter(): { lat: number; lng: number } | undefined { + const raw = import.meta.env.VITE_DEFAULT_MAP_CENTER + if (!raw) return undefined + const [lat, lng] = raw.split(',').map(Number) + if (isNaN(lat) || isNaN(lng)) return undefined + return { lat, lng } +} + +const mapCenter = parseMapCenter() + const geoActivities = computed(() => allActivities.value.filter(a => a.coordinates) ) @@ -33,6 +43,7 @@ onMounted(() => {