FCM bug fix
This commit is contained in:
@@ -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 }); }
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user