Initial commit
This commit is contained in:
76
src_frontend_orig/carStorage.js
Normal file
76
src_frontend_orig/carStorage.js
Normal file
@@ -0,0 +1,76 @@
|
||||
import defaultCars from './carOptions.json';
|
||||
|
||||
const storageKey = 'kentekenCars';
|
||||
|
||||
const normalizeCars = (cars) =>
|
||||
Array.isArray(cars) && cars.length ? cars : defaultCars;
|
||||
|
||||
export const loadCars = async () => {
|
||||
if (typeof window === 'undefined') {
|
||||
return normalizeCars(defaultCars);
|
||||
}
|
||||
if (window.api?.loadCars) {
|
||||
try {
|
||||
const cars = await window.api.loadCars();
|
||||
return normalizeCars(cars);
|
||||
} catch (error) {
|
||||
return normalizeCars(defaultCars);
|
||||
}
|
||||
}
|
||||
const stored = window.localStorage.getItem(storageKey);
|
||||
if (!stored) {
|
||||
const fallback = normalizeCars(defaultCars);
|
||||
window.localStorage.setItem(storageKey, JSON.stringify(fallback));
|
||||
return fallback;
|
||||
}
|
||||
try {
|
||||
const parsed = JSON.parse(stored);
|
||||
return normalizeCars(parsed);
|
||||
} catch (error) {
|
||||
const fallback = normalizeCars(defaultCars);
|
||||
window.localStorage.setItem(storageKey, JSON.stringify(fallback));
|
||||
return fallback;
|
||||
}
|
||||
};
|
||||
|
||||
export const saveCars = async (cars) => {
|
||||
if (typeof window === 'undefined') {
|
||||
return;
|
||||
}
|
||||
if (window.api?.saveCars) {
|
||||
await window.api.saveCars(normalizeCars(cars));
|
||||
return;
|
||||
}
|
||||
const normalized = normalizeCars(cars);
|
||||
window.localStorage.setItem(storageKey, JSON.stringify(normalized));
|
||||
};
|
||||
|
||||
export const getCarsFolder = async () => {
|
||||
if (typeof window === 'undefined') {
|
||||
return '';
|
||||
}
|
||||
if (window.api?.getCarsFolder) {
|
||||
return window.api.getCarsFolder();
|
||||
}
|
||||
return '';
|
||||
};
|
||||
|
||||
export const selectCarsFolder = async () => {
|
||||
if (typeof window === 'undefined') {
|
||||
return null;
|
||||
}
|
||||
if (window.api?.selectCarsFolder) {
|
||||
return window.api.selectCarsFolder();
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
export const resetCarsFolder = async () => {
|
||||
if (typeof window === 'undefined') {
|
||||
return null;
|
||||
}
|
||||
if (window.api?.resetCarsFolder) {
|
||||
return window.api.resetCarsFolder();
|
||||
}
|
||||
return null;
|
||||
};
|
||||
Reference in New Issue
Block a user