From b79fde777d07ef557a2ac2c0318462ce526a3c1d Mon Sep 17 00:00:00 2001 From: Toba Ojo Date: Mon, 22 Dec 2025 15:40:53 +0000 Subject: [PATCH 1/3] bump version to 1.0.21 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4e84885..ec631ef 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "in-car-system-fe", "private": true, - "version": "1.0.20", + "version": "1.0.21", "type": "module", "scripts": { "dev": "vite", From 79e759d811bc48ff43287d04e61d344ca81a8754 Mon Sep 17 00:00:00 2001 From: Toba Ojo Date: Mon, 22 Dec 2025 15:57:07 +0000 Subject: [PATCH 2/3] refactor: clean up unused imports and improve code readability and fixed endpoint to use window location --- package.json | 2 +- src/components/SettingForms/System/SystemFileUpload.tsx | 3 ++- src/hooks/usecachedSoundSrc.ts | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index ec631ef..ed0d75e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "in-car-system-fe", "private": true, - "version": "1.0.21", + "version": "1.0.22", "type": "module", "scripts": { "dev": "vite", diff --git a/src/components/SettingForms/System/SystemFileUpload.tsx b/src/components/SettingForms/System/SystemFileUpload.tsx index a7c63cc..7443806 100644 --- a/src/components/SettingForms/System/SystemFileUpload.tsx +++ b/src/components/SettingForms/System/SystemFileUpload.tsx @@ -2,6 +2,7 @@ import { useFormikContext } from "formik"; import FormGroup from "../components/FormGroup"; import { toast } from "sonner"; import { useSystemConfig } from "../../../hooks/useSystemConfig"; +import { CAM_BASE } from "../../../utils/config"; type SystemFileUploadProps = { name: string; @@ -19,7 +20,7 @@ const SystemFileUpload = ({ name, selectedFile }: SystemFileUploadProps) => { opts: { timeoutMs: 30000, fieldName: "upload", - uploadUrl: "http://192.168.75.11/upload/software-update/4", + uploadUrl: `${CAM_BASE}/upload/software-update/4`, }, }; uploadSettings(settings); diff --git a/src/hooks/usecachedSoundSrc.ts b/src/hooks/usecachedSoundSrc.ts index ed99974..58796ff 100644 --- a/src/hooks/usecachedSoundSrc.ts +++ b/src/hooks/usecachedSoundSrc.ts @@ -1,8 +1,8 @@ import { useEffect, useMemo, useRef, useState } from "react"; -import { useFileUpload } from "./useFileUpload"; import { getSoundFileURL } from "../utils/utils"; import type { SoundUploadValue } from "../types/types"; import { resolveSoundSource } from "../utils/soundResolver"; +import { useGetUploadedFiles } from "./useGetUploadedFiles"; export function useCachedSoundSrc( selected: string | undefined, @@ -13,7 +13,7 @@ export function useCachedSoundSrc( const resolved = resolveSoundSource(selected, soundOptions); - const { query } = useFileUpload({ + const { query } = useGetUploadedFiles({ queryKey: resolved?.type === "uploaded" ? [resolved?.url] : undefined, }); From ac9b3cc1ea50c6bec3e92ab37245c9065bf2b38a Mon Sep 17 00:00:00 2001 From: Toba Ojo Date: Tue, 6 Jan 2026 12:28:08 +0000 Subject: [PATCH 3/3] - updated version to 1.0.23, enhance audio file handling, and improve UTC synchronization checks --- package.json | 2 +- .../SettingForms/Sound/SoundUpload.tsx | 20 +++++++++----- .../System/SystemConfigFields.tsx | 26 ++++++++++++++++--- .../SightingModal/SightingModal.tsx | 4 --- src/utils/cacheSound.ts | 13 ++++++++++ src/utils/config.ts | 5 ++-- src/utils/utils.ts | 18 +++++++++++++ vite.config.ts | 3 ++- 8 files changed, 73 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index ed0d75e..ed5eb90 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "in-car-system-fe", "private": true, - "version": "1.0.22", + "version": "1.0.23", "type": "module", "scripts": { "dev": "vite", diff --git a/src/components/SettingForms/Sound/SoundUpload.tsx b/src/components/SettingForms/Sound/SoundUpload.tsx index 09df9d8..1ce5a88 100644 --- a/src/components/SettingForms/Sound/SoundUpload.tsx +++ b/src/components/SettingForms/Sound/SoundUpload.tsx @@ -84,15 +84,23 @@ const SoundUpload = () => { if (currentUrlRef.current) { URL.revokeObjectURL(currentUrlRef.current); } - if (e.target?.files && e.target?.files[0]?.type === "audio/mpeg") { - currentUrlRef.current = URL.createObjectURL(e.target.files[0]); + const files = e.target?.files; + if ( + files && + (files[0]?.type === "audio/mp3" || + files[0]?.type === "audio/mpeg" || + files[0]?.name.endsWith(".wav")) + ) { + const file = e.target?.files; + if(file === null) return; + currentUrlRef.current = URL.createObjectURL(file[0]); const url = currentUrlRef.current; setFieldValue("soundUrl", url); - setFieldValue("name", e.target.files[0].name); - setFieldValue("soundFileName", e.target.files[0].name); - setFieldValue("soundFile", e.target.files[0]); + setFieldValue("name", file[0].name); + setFieldValue("soundFileName", file[0].name); + setFieldValue("soundFile", file[0]); setFieldValue("uploadedAt", Date.now()); - if (e?.target?.files[0]?.size >= 1 * 1024 * 1024) { + if (file[0]?.size >= 1 * 1024 * 1024) { setFieldError("soundFile", "larger than 1mb"); toast.error("File larger than 1MB"); return; diff --git a/src/components/SettingForms/System/SystemConfigFields.tsx b/src/components/SettingForms/System/SystemConfigFields.tsx index 225c9c9..c343c8a 100644 --- a/src/components/SettingForms/System/SystemConfigFields.tsx +++ b/src/components/SettingForms/System/SystemConfigFields.tsx @@ -5,16 +5,29 @@ import { timezones } from "./timezones"; import SystemFileUpload from "./SystemFileUpload"; import type { SystemValues, SystemValuesErrors } from "../../../types/types"; import { useDNSSettings, useSystemConfig } from "../../../hooks/useSystemConfig"; -import { ValidateIPaddress } from "../../../utils/utils"; +import { ValidateIPaddress, isUtcOutOfSync } from "../../../utils/utils"; import { toast } from "sonner"; -// import { useSystemStatus } from "../../../hooks/useSystemStatus"; +import { useSystemStatus } from "../../../hooks/useSystemStatus"; const SystemConfigFields = () => { const { saveSystemSettings, systemSettingsData, saveSystemSettingsLoading } = useSystemConfig(); - // const { systemStatusQuery } = useSystemStatus(); + const { systemStatusQuery } = useSystemStatus(); const { hardRebootMutation } = useReboots(); const { dnsQuery, dnsMutation } = useDNSSettings(); + if (systemStatusQuery?.isLoading || !systemStatusQuery?.data) { + return
Loading...
; + } + const utcTime = systemStatusQuery?.data?.SystemStatus?.utctime; + const localDate = systemStatusQuery?.data?.SystemStatus?.localdate; + const localTime = systemStatusQuery?.data?.SystemStatus?.localtime; + + const utcOutOfSync = isUtcOutOfSync({ + utctime: utcTime, + localdate: localDate, + localtime: localTime, + }); + const sntpInterval = systemSettingsData?.sntpInterval; const dnsPrimary = dnsQuery?.data?.propNameServerPrimary?.value; const dnsSecondary = dnsQuery?.data?.propNameServerSecondary?.value; @@ -71,6 +84,13 @@ const SystemConfigFields = () => { > {({ values, errors, touched, isSubmitting }) => (
+
+ {utcOutOfSync?.outOfSync ? ( + UTC is out of sync + ) : ( + UTC is in sync + )} +