FCM bug fix
This commit is contained in:
@@ -3,6 +3,7 @@ const multer = require('multer');
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const { query, queryOne, queryResult, exec } = require('../models/db');
|
const { query, queryOne, queryResult, exec } = require('../models/db');
|
||||||
|
const { sendPushToUser } = require('./push');
|
||||||
|
|
||||||
function deleteImageFile(imageUrl) {
|
function deleteImageFile(imageUrl) {
|
||||||
if (!imageUrl) return;
|
if (!imageUrl) return;
|
||||||
@@ -101,6 +102,32 @@ module.exports = function(io) {
|
|||||||
`, [r.rows[0].id]);
|
`, [r.rows[0].id]);
|
||||||
message.reactions = [];
|
message.reactions = [];
|
||||||
io.to(R(req.schema,'group',req.params.groupId)).emit('message:new', message);
|
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 });
|
res.json({ message });
|
||||||
} catch (e) { res.status(500).json({ error: e.message }); }
|
} catch (e) { res.status(500).json({ error: e.message }); }
|
||||||
});
|
});
|
||||||
@@ -124,6 +151,31 @@ module.exports = function(io) {
|
|||||||
);
|
);
|
||||||
message.reactions = [];
|
message.reactions = [];
|
||||||
io.to(R(req.schema,'group',req.params.groupId)).emit('message:new', message);
|
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 });
|
res.json({ message });
|
||||||
} catch (e) { res.status(500).json({ error: e.message }); }
|
} catch (e) { res.status(500).json({ error: e.message }); }
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user