From e9119f899fc24112694189adec6cefc2778e0fe7 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Sun, 12 Oct 2025 17:11:15 -0500 Subject: [PATCH] keep spaces in friendly name --- web/src/utils/cameraUtil.ts | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/web/src/utils/cameraUtil.ts b/web/src/utils/cameraUtil.ts index f4ad9563a..f85966660 100644 --- a/web/src/utils/cameraUtil.ts +++ b/web/src/utils/cameraUtil.ts @@ -5,12 +5,12 @@ * @param name - The original camera name/display name * @returns A valid camera identifier (lowercase, alphanumeric, max 8 chars) */ -export const generateFixedHash = (name: string): string => { +export function generateFixedHash(name: string): string { const encoded = encodeURIComponent(name); const base64 = btoa(encoded); const cleanHash = base64.replace(/[^a-zA-Z0-9]/g, "").substring(0, 8); return `cam_${cleanHash.toLowerCase()}`; -}; +} /** * Checks if a string is a valid camera name identifier. @@ -19,9 +19,9 @@ export const generateFixedHash = (name: string): string => { * @param name - The camera name to validate * @returns True if the name is valid, false otherwise */ -export const isValidCameraName = (name: string): boolean => { +export function isValidCameraName(name: string): boolean { return /^[a-zA-Z0-9_-]+$/.test(name); -}; +} /** * Processes a user-entered camera name and returns both the final camera name @@ -30,18 +30,21 @@ export const isValidCameraName = (name: string): boolean => { * @param userInput - The name entered by the user (could be display name) * @returns Object with finalCameraName and friendlyName */ -export const processCameraName = ( - userInput: string, -): { +export function processCameraName(userInput: string): { finalCameraName: string; friendlyName?: string; -} => { - if (isValidCameraName(userInput)) { - return { finalCameraName: userInput }; - } else { +} { + const normalizedInput = userInput.replace(/\s+/g, "_"); + + if (isValidCameraName(normalizedInput)) { return { - finalCameraName: generateFixedHash(userInput), - friendlyName: userInput, + finalCameraName: normalizedInput, + friendlyName: userInput.includes(" ") ? userInput : undefined, }; } -}; + + return { + finalCameraName: generateFixedHash(userInput), + friendlyName: userInput, + }; +}