refactoring

This commit is contained in:
2025-11-10 13:43:13 +01:00
parent ea95188dd7
commit 7b3625ae3b
4 changed files with 286 additions and 220 deletions

View File

@@ -0,0 +1,71 @@
export const normalizeAdminSettings = (raw) => {
if (!raw) {
return null;
}
return {
scheduleCron: raw.scheduleCron || '',
randomDelayMinSeconds: raw.randomDelayMinSeconds ?? '',
randomDelayMaxSeconds: raw.randomDelayMaxSeconds ?? '',
initialDelayMinSeconds: raw.initialDelayMinSeconds ?? '',
initialDelayMaxSeconds: raw.initialDelayMaxSeconds ?? '',
storePickupCheckDelayMs: raw.storePickupCheckDelayMs ?? '',
ignoredSlots: Array.isArray(raw.ignoredSlots)
? raw.ignoredSlots.map((slot) => ({
storeId: slot?.storeId ? String(slot.storeId) : '',
description: slot?.description || ''
}))
: [],
notifications: {
ntfy: {
enabled: !!raw.notifications?.ntfy?.enabled,
serverUrl: raw.notifications?.ntfy?.serverUrl || 'https://ntfy.sh',
topicPrefix: raw.notifications?.ntfy?.topicPrefix || '',
username: raw.notifications?.ntfy?.username || '',
password: raw.notifications?.ntfy?.password || ''
},
telegram: {
enabled: !!raw.notifications?.telegram?.enabled,
botToken: raw.notifications?.telegram?.botToken || ''
}
}
};
};
const toNumberOrUndefined = (value) => {
if (value === '' || value === null || value === undefined) {
return undefined;
}
const parsed = Number(value);
return Number.isFinite(parsed) ? parsed : undefined;
};
export const serializeAdminSettings = (adminSettings) => {
if (!adminSettings) {
return null;
}
return {
scheduleCron: adminSettings.scheduleCron,
randomDelayMinSeconds: toNumberOrUndefined(adminSettings.randomDelayMinSeconds),
randomDelayMaxSeconds: toNumberOrUndefined(adminSettings.randomDelayMaxSeconds),
initialDelayMinSeconds: toNumberOrUndefined(adminSettings.initialDelayMinSeconds),
initialDelayMaxSeconds: toNumberOrUndefined(adminSettings.initialDelayMaxSeconds),
storePickupCheckDelayMs: toNumberOrUndefined(adminSettings.storePickupCheckDelayMs),
ignoredSlots: (adminSettings.ignoredSlots || []).map((slot) => ({
storeId: slot.storeId || '',
description: slot.description || ''
})),
notifications: {
ntfy: {
enabled: !!adminSettings.notifications?.ntfy?.enabled,
serverUrl: adminSettings.notifications?.ntfy?.serverUrl || '',
topicPrefix: adminSettings.notifications?.ntfy?.topicPrefix || '',
username: adminSettings.notifications?.ntfy?.username || '',
password: adminSettings.notifications?.ntfy?.password || ''
},
telegram: {
enabled: !!adminSettings.notifications?.telegram?.enabled,
botToken: adminSettings.notifications?.telegram?.botToken || ''
}
}
};
};