From 7999c6fcd18f750b53e624bc3de988220a63c5bb Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Wed, 12 Feb 2025 18:12:27 -0300 Subject: [PATCH] wip --- src/composables/settingsSyncer.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/composables/settingsSyncer.ts b/src/composables/settingsSyncer.ts index ea60e6a2f..80aba1c1d 100644 --- a/src/composables/settingsSyncer.ts +++ b/src/composables/settingsSyncer.ts @@ -167,7 +167,7 @@ export function useBlueOsStorage(key: string, defaultValue: MaybeRef): Rem const vehicleAddress = await getVehicleAddress() const username = await getUsername() - logger.debug(`Updating '${key}' on BlueOS.`) + logger.debug(`Updating '${key}' on BlueOS. New value:`, newValue, 'New epoch:', updateEpoch) const tryToUpdateBlueOsValue = async (): Promise => { // Clear update routine if there's one left, as we are going to start a new one @@ -222,6 +222,21 @@ export function useBlueOsStorage(key: string, defaultValue: MaybeRef): Rem // By default, if there's a conflict, we use the value with the newest epoch let useBlueOsValue = (remoteEpoch ?? 0) > (localEpoch ?? 0) + // Do nothing if both values are undefined + if (currentValue.value === undefined && valueOnBlueOS === undefined) { + logger.debug(`Both local and remote values for '${key}' are undefined. No need to update.`) + finishedInitialFetch.value = true + return + } else if (currentValue.value === undefined) { + // If only the local value is undefined, use the value from BlueOS + logger.debug(`Local value for '${key}' is undefined. Using value from BlueOS.`) + useBlueOsValue = true + } else if (valueOnBlueOS === undefined) { + // If only the remote value is undefined, use the value from local storage + logger.debug(`Remote value for '${key}' is undefined. Using value from local storage.`) + useBlueOsValue = false + } + const msg = `Key: ${key} // Epochs: Remote: ${remoteEpoch}, Local: ${localEpoch} // Use BlueOS value: ${useBlueOsValue}` logger.debug(msg) @@ -245,6 +260,8 @@ export function useBlueOsStorage(key: string, defaultValue: MaybeRef): Rem const message = `Fetched remote value of key ${key} from the vehicle.` openSnackbar({ message, duration: 3000, variant: 'success' }) + finishedInitialFetch.value = true + if (key === savedProfilesKey) { await showDialog({ title: 'Widget profiles imported',