FCM bug fix

This commit is contained in:
2026-03-24 19:16:36 -04:00
parent f48ce589ca
commit 8c4650d1bc

View File

@@ -3,6 +3,7 @@ const multer = require('multer');
const path = require('path');
const fs = require('fs');
const { query, queryOne, queryResult, exec } = require('../models/db');
const { sendPushToUser } = require('./push');
function deleteImageFile(imageUrl) {
if (!imageUrl) return;
@@ -101,6 +102,32 @@ module.exports = function(io) {
`, [r.rows[0].id]);
message.reactions = [];
io.to(R(req.schema,'group',req.params.groupId)).emit('message:new', message);
// Push notifications
const senderName = message.user_display_name || message.user_name || 'Someone';
const msgBody = (content?.trim() || '').slice(0, 100);
if (group.type === 'private') {
const members = await query(req.schema,
'SELECT user_id FROM group_members WHERE group_id = $1', [req.params.groupId]
);
for (const m of members) {
if (m.user_id === req.user.id) continue;
sendPushToUser(req.schema, m.user_id, {
title: senderName, body: msgBody, url: '/', groupId: group.id,
}).catch(() => {});
}
} else if (group.type === 'public') {
const subUsers = await query(req.schema,
'SELECT DISTINCT user_id FROM push_subscriptions WHERE fcm_token IS NOT NULL AND user_id != $1',
[req.user.id]
);
for (const sub of subUsers) {
sendPushToUser(req.schema, sub.user_id, {
title: `${senderName} in ${group.name}`, body: msgBody, url: '/', groupId: group.id,
}).catch(() => {});
}
}
res.json({ message });
} catch (e) { res.status(500).json({ error: e.message }); }
});
@@ -124,6 +151,31 @@ module.exports = function(io) {
);
message.reactions = [];
io.to(R(req.schema,'group',req.params.groupId)).emit('message:new', message);
// Push notifications for image messages
const senderName = message.user_display_name || message.user_name || 'Someone';
if (group.type === 'private') {
const members = await query(req.schema,
'SELECT user_id FROM group_members WHERE group_id = $1', [req.params.groupId]
);
for (const m of members) {
if (m.user_id === req.user.id) continue;
sendPushToUser(req.schema, m.user_id, {
title: senderName, body: '📷 Image', url: '/', groupId: group.id,
}).catch(() => {});
}
} else if (group.type === 'public') {
const subUsers = await query(req.schema,
'SELECT DISTINCT user_id FROM push_subscriptions WHERE fcm_token IS NOT NULL AND user_id != $1',
[req.user.id]
);
for (const sub of subUsers) {
sendPushToUser(req.schema, sub.user_id, {
title: `${senderName} in ${group.name}`, body: '📷 Image', url: '/', groupId: group.id,
}).catch(() => {});
}
}
res.json({ message });
} catch (e) { res.status(500).json({ error: e.message }); }
});