feat: add ntfy and telegram notification workflows
This commit is contained in:
51
server.js
51
server.js
@@ -9,6 +9,8 @@ const { readConfig, writeConfig } = require('./services/configStore');
|
||||
const foodsharingClient = require('./services/foodsharingClient');
|
||||
const { scheduleConfig } = require('./services/pickupScheduler');
|
||||
const adminConfig = require('./services/adminConfig');
|
||||
const { readNotificationSettings, writeNotificationSettings } = require('./services/userSettingsStore');
|
||||
const notificationService = require('./services/notificationService');
|
||||
|
||||
const ONE_YEAR_MS = 365 * 24 * 60 * 60 * 1000;
|
||||
const adminEmail = (process.env.ADMIN_EMAIL || '').toLowerCase();
|
||||
@@ -388,6 +390,55 @@ app.post('/api/config', requireAuth, (req, res) => {
|
||||
res.json({ success: true });
|
||||
});
|
||||
|
||||
app.get('/api/notifications/settings', requireAuth, (req, res) => {
|
||||
const userSettings = readNotificationSettings(req.session.profile.id);
|
||||
const adminSettings = adminConfig.readSettings();
|
||||
res.json({
|
||||
settings: userSettings.notifications,
|
||||
capabilities: {
|
||||
ntfy: {
|
||||
enabled: !!(
|
||||
adminSettings.notifications?.ntfy?.enabled && adminSettings.notifications?.ntfy?.serverUrl
|
||||
),
|
||||
serverUrl: adminSettings.notifications?.ntfy?.serverUrl || '',
|
||||
topicPrefix: adminSettings.notifications?.ntfy?.topicPrefix || ''
|
||||
},
|
||||
telegram: {
|
||||
enabled: !!(
|
||||
adminSettings.notifications?.telegram?.enabled && adminSettings.notifications?.telegram?.botToken
|
||||
)
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.post('/api/notifications/settings', requireAuth, (req, res) => {
|
||||
const payload = {
|
||||
notifications: {
|
||||
ntfy: {
|
||||
enabled: !!req.body?.notifications?.ntfy?.enabled,
|
||||
topic: req.body?.notifications?.ntfy?.topic || '',
|
||||
serverUrl: req.body?.notifications?.ntfy?.serverUrl || ''
|
||||
},
|
||||
telegram: {
|
||||
enabled: !!req.body?.notifications?.telegram?.enabled,
|
||||
chatId: req.body?.notifications?.telegram?.chatId || ''
|
||||
}
|
||||
}
|
||||
};
|
||||
const updated = writeNotificationSettings(req.session.profile.id, payload);
|
||||
res.json(updated.notifications);
|
||||
});
|
||||
|
||||
app.post('/api/notifications/test', requireAuth, async (req, res) => {
|
||||
try {
|
||||
await notificationService.sendTestNotification(req.session.profile.id, req.body?.channel);
|
||||
res.json({ success: true });
|
||||
} catch (error) {
|
||||
res.status(400).json({ error: error.message || 'Testbenachrichtigung fehlgeschlagen' });
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/api/stores', requireAuth, async (req, res) => {
|
||||
res.json(req.session.storesCache?.data || []);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user