aktueller stand
This commit is contained in:
48
server.js
48
server.js
@@ -11,7 +11,9 @@ const {
|
||||
scheduleConfig,
|
||||
runStoreWatchCheck,
|
||||
runImmediatePickupCheck,
|
||||
runDormantMembershipCheck
|
||||
runDormantMembershipCheck,
|
||||
getRegularPickupSchedule,
|
||||
scheduleRegularPickupRefresh
|
||||
} = require('./services/pickupScheduler');
|
||||
const adminConfig = require('./services/adminConfig');
|
||||
const { readNotificationSettings, writeNotificationSettings } = require('./services/userSettingsStore');
|
||||
@@ -162,6 +164,7 @@ function rescheduleAllSessions() {
|
||||
const config = readConfig(session.profile.id);
|
||||
scheduleConfig(session.id, config, settings);
|
||||
});
|
||||
scheduleRegularPickupRefresh(settings);
|
||||
}
|
||||
|
||||
function mergeStoresIntoConfig(config = [], stores = []) {
|
||||
@@ -1323,19 +1326,45 @@ app.get('/api/stores/:storeId/regular-pickup', requireAuth, async (req, res) =>
|
||||
return res.status(400).json({ error: 'Store-ID fehlt' });
|
||||
}
|
||||
try {
|
||||
const rules = await withSessionRetry(
|
||||
req.session,
|
||||
() => foodsharingClient.fetchRegularPickup(storeId, req.session.cookieHeader, req.session),
|
||||
{ label: 'fetchRegularPickup' }
|
||||
);
|
||||
res.json(Array.isArray(rules) ? rules : []);
|
||||
const result = await getRegularPickupSchedule(req.session, storeId);
|
||||
res.json(result);
|
||||
} catch (error) {
|
||||
res.status(400).json({ error: error.message || 'Regular-Pickup konnte nicht geladen werden' });
|
||||
const message = error?.message || 'Regular-Pickup konnte nicht geladen werden';
|
||||
return res.json({ rules: [], error: message });
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/api/stores', requireAuth, async (req, res) => {
|
||||
res.json(req.session.storesCache?.data || []);
|
||||
const stores = req.session.storesCache?.data || [];
|
||||
let regularPickupMap = {};
|
||||
try {
|
||||
const profileId = req.session.profile?.id;
|
||||
if (profileId) {
|
||||
const config = readConfig(profileId);
|
||||
const storeIds = Array.from(
|
||||
new Set(
|
||||
(Array.isArray(config) ? config : [])
|
||||
.filter((entry) => entry?.id && !entry.hidden)
|
||||
.map((entry) => String(entry.id))
|
||||
)
|
||||
);
|
||||
if (storeIds.length > 0) {
|
||||
const results = await Promise.all(
|
||||
storeIds.map(async (storeId) => {
|
||||
const result = await getRegularPickupSchedule(req.session, storeId);
|
||||
return [storeId, Array.isArray(result.rules) ? result.rules : []];
|
||||
})
|
||||
);
|
||||
regularPickupMap = results.reduce((acc, [storeId, rules]) => {
|
||||
acc[storeId] = rules;
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('[PICKUP] Regular-Pickup-Map konnte nicht geladen werden:', error.message);
|
||||
}
|
||||
res.json({ stores, regularPickupMap });
|
||||
});
|
||||
|
||||
app.post('/api/stores/refresh', requireAuth, (req, res) => {
|
||||
@@ -1388,6 +1417,7 @@ async function startServer() {
|
||||
} catch (error) {
|
||||
console.error('[RESTORE] Fehler bei der Session-Wiederherstellung:', error.message);
|
||||
}
|
||||
scheduleRegularPickupRefresh(adminConfig.readSettings());
|
||||
startBackgroundStoreRefreshTicker();
|
||||
app.listen(port, () => {
|
||||
console.log(`Server läuft auf Port ${port}`);
|
||||
|
||||
Reference in New Issue
Block a user