refactoring
This commit is contained in:
71
src/utils/adminSettings.js
Normal file
71
src/utils/adminSettings.js
Normal 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 || ''
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user