feat: Update c3nav event from 38c3 to 39c3
- Add 39c3 to all valid event lists - Change default event ID from 38c3 to 39c3 - Update examples and placeholders throughout codebase - Maintain backwards compatibility with 38c3 and older events 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
003d3b0187
commit
8eed0deadf
|
|
@ -4,8 +4,8 @@
|
|||
NODE_ENV=development
|
||||
PORT=3000
|
||||
|
||||
# c3nav Integration (optional - defaults to 38c3)
|
||||
C3NAV_BASE_URL=https://38c3.c3nav.de
|
||||
# c3nav Integration (optional - defaults to 39c3)
|
||||
C3NAV_BASE_URL=https://39c3.c3nav.de
|
||||
|
||||
# WebSocket Sync Server (required for multi-user location sharing)
|
||||
# For local development: ws://localhost:3001
|
||||
|
|
|
|||
|
|
@ -268,7 +268,7 @@ export default function RoomPage() {
|
|||
waypoints={waypoints}
|
||||
currentUserId={currentParticipantId || undefined}
|
||||
currentLocation={currentLocation}
|
||||
eventId="38c3"
|
||||
eventId="39c3"
|
||||
isSharing={isSharing}
|
||||
onToggleSharing={handleToggleSharing}
|
||||
onParticipantClick={(p) => {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ interface RouteParams {
|
|||
}
|
||||
|
||||
// Valid c3nav events
|
||||
const VALID_EVENTS = ['38c3', '37c3', 'eh22', 'eh2025', 'camp2023'];
|
||||
const VALID_EVENTS = ['39c3', '38c3', '37c3', 'eh22', 'eh2025', 'camp2023'];
|
||||
|
||||
// Allowed API endpoints (whitelist for security)
|
||||
const ALLOWED_ENDPOINTS = [
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface RouteParams {
|
|||
}
|
||||
|
||||
// Valid c3nav events
|
||||
const VALID_EVENTS = ['38c3', '37c3', 'eh22', 'eh2025', 'camp2023'];
|
||||
const VALID_EVENTS = ['39c3', '38c3', '37c3', 'eh22', 'eh2025', 'camp2023'];
|
||||
|
||||
export async function GET(request: NextRequest, { params }: RouteParams) {
|
||||
const { event, level, z, x, y } = params;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import type { RouteSegment, C3NavRouteRequest } from '@/types';
|
|||
const OSRM_API = 'https://router.project-osrm.org';
|
||||
|
||||
// c3nav routing API
|
||||
const C3NAV_EVENTS = ['38c3', '37c3', 'eh22', 'eh2025', 'camp2023'];
|
||||
const C3NAV_EVENTS = ['39c3', '38c3', '37c3', 'eh22', 'eh2025', 'camp2023'];
|
||||
|
||||
interface RouteRequest {
|
||||
origin: {
|
||||
|
|
@ -222,7 +222,7 @@ async function getIndoorRoute(
|
|||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const body: RouteRequest = await request.json();
|
||||
const { origin, destination, mode = 'walking', eventId = '38c3', options } = body;
|
||||
const { origin, destination, mode = 'walking', eventId = '39c3', options } = body;
|
||||
|
||||
if (!origin || !destination) {
|
||||
return NextResponse.json(
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import './globals.css';
|
|||
export const metadata: Metadata = {
|
||||
title: 'rMaps - Find Your Friends',
|
||||
description: 'Collaborative real-time friend-finding navigation for events',
|
||||
keywords: ['maps', 'navigation', 'friends', 'realtime', 'CCC', '38c3'],
|
||||
keywords: ['maps', 'navigation', 'friends', 'realtime', 'CCC', '39c3'],
|
||||
authors: [{ name: 'Jeff Emmett' }],
|
||||
openGraph: {
|
||||
title: 'rMaps - Find Your Friends',
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ export default function HomePage() {
|
|||
type="text"
|
||||
value={roomName}
|
||||
onChange={(e) => setRoomName(e.target.value)}
|
||||
placeholder="e.g., 38c3-crew"
|
||||
placeholder="e.g., 39c3-crew"
|
||||
className="input flex-1"
|
||||
maxLength={20}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { useState, useEffect, useRef } from 'react';
|
|||
import type { Participant } from '@/types';
|
||||
|
||||
interface C3NavEmbedProps {
|
||||
/** Event identifier (e.g., '38c3', 'eh2025') */
|
||||
/** Event identifier (e.g., '39c3', 'eh2025') */
|
||||
eventId?: string;
|
||||
/** Initial location to show */
|
||||
initialLocation?: string;
|
||||
|
|
@ -22,6 +22,7 @@ interface C3NavEmbedProps {
|
|||
|
||||
// c3nav event URLs
|
||||
const C3NAV_EVENTS: Record<string, string> = {
|
||||
'39c3': 'https://39c3.c3nav.de',
|
||||
'38c3': 'https://38c3.c3nav.de',
|
||||
'37c3': 'https://37c3.c3nav.de',
|
||||
'eh2025': 'https://eh2025.c3nav.de',
|
||||
|
|
@ -30,7 +31,7 @@ const C3NAV_EVENTS: Record<string, string> = {
|
|||
};
|
||||
|
||||
export default function C3NavEmbed({
|
||||
eventId = '38c3',
|
||||
eventId = '39c3',
|
||||
initialLocation,
|
||||
participants = [],
|
||||
currentUserId,
|
||||
|
|
@ -43,7 +44,7 @@ export default function C3NavEmbed({
|
|||
const [error, setError] = useState<string | null>(null);
|
||||
|
||||
// Get the c3nav base URL for the event
|
||||
const baseUrl = C3NAV_EVENTS[eventId] || C3NAV_EVENTS['38c3'];
|
||||
const baseUrl = C3NAV_EVENTS[eventId] || C3NAV_EVENTS['39c3'];
|
||||
|
||||
// Build the embed URL
|
||||
const embedUrl = new URL(baseUrl);
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ export default function DualMapView({
|
|||
waypoints = [],
|
||||
currentUserId,
|
||||
currentLocation,
|
||||
eventId = '38c3',
|
||||
eventId = '39c3',
|
||||
initialMode = 'auto',
|
||||
onParticipantClick,
|
||||
onWaypointClick,
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ import type {
|
|||
C3NavRouteResponse,
|
||||
} from '@/types';
|
||||
|
||||
// Default to 38c3, can be overridden per-room
|
||||
const DEFAULT_C3NAV_BASE = 'https://38c3.c3nav.de';
|
||||
// Default to 39c3, can be overridden per-room
|
||||
const DEFAULT_C3NAV_BASE = 'https://39c3.c3nav.de';
|
||||
|
||||
export class C3NavClient {
|
||||
private baseUrl: string;
|
||||
|
|
|
|||
|
|
@ -283,7 +283,7 @@ export const useRoomStore = create<RoomState>((set, get) => ({
|
|||
},
|
||||
destination: destLocation,
|
||||
mode: 'walking',
|
||||
eventId: room?.settings.eventId || '38c3',
|
||||
eventId: room?.settings.eventId || '39c3',
|
||||
}),
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ export interface RoomSettings {
|
|||
defaultPrecision: PrecisionLevel;
|
||||
allowGuestJoin: boolean;
|
||||
showC3NavIndoor: boolean; // enable c3nav integration
|
||||
eventId?: string; // e.g., '38c3', 'eh2025'
|
||||
eventId?: string; // e.g., '39c3', 'eh2025'
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
|
|
|
|||
Loading…
Reference in New Issue