|
|
@ -93,8 +93,11 @@ function onReceive(payload) { |
|
|
|
const needsPricePerMessage = typesThatNeedPricePerMessage.includes(payload.type); |
|
|
|
// CHECK THEY ARE IN THE GROUP if message
|
|
|
|
const senderContact = yield models_1.models.Contact.findOne({ where: { publicKey: payload.sender.pub_key } }); |
|
|
|
if (!senderContact) |
|
|
|
return; // need sender contact!
|
|
|
|
const senderContactId = senderContact.id; |
|
|
|
if (needsPricePerMessage) { |
|
|
|
const senderMember = senderContact && (yield models_1.models.ChatMember.findOne({ where: { contactId: senderContact.id, chatId: chat.id } })); |
|
|
|
const senderMember = yield models_1.models.ChatMember.findOne({ where: { contactId: senderContactId, chatId: chat.id } }); |
|
|
|
if (!senderMember) |
|
|
|
doAction = false; |
|
|
|
} |
|
|
@ -107,7 +110,7 @@ function onReceive(payload) { |
|
|
|
timers.addTimer({ |
|
|
|
amount: chat.escrowAmount, |
|
|
|
millis: chat.escrowMillis, |
|
|
|
receiver: senderContact.id, |
|
|
|
receiver: senderContactId, |
|
|
|
msgId: payload.message.id, |
|
|
|
chatId: chat.id, |
|
|
|
}); |
|
|
@ -118,7 +121,7 @@ function onReceive(payload) { |
|
|
|
if (payload.message.amount < chat.priceToJoin) |
|
|
|
doAction = false; |
|
|
|
if (chat.private) { // check if has been approved
|
|
|
|
const senderMember = senderContact && (yield models_1.models.ChatMember.findOne({ where: { contactId: senderContact.id, chatId: chat.id } })); |
|
|
|
const senderMember = yield models_1.models.ChatMember.findOne({ where: { contactId: senderContactId, chatId: chat.id } }); |
|
|
|
if (!(senderMember && senderMember.status === constants_1.default.chat_statuses.approved)) { |
|
|
|
doAction = false; // dont let if private and not approved
|
|
|
|
} |
|
|
@ -130,7 +133,7 @@ function onReceive(payload) { |
|
|
|
if (payload.message.uuid) { |
|
|
|
const ogMsg = yield models_1.models.Message.findOne({ where: { |
|
|
|
uuid: payload.message.uuid, |
|
|
|
sender: senderContact.id, |
|
|
|
sender: senderContactId, |
|
|
|
} }); |
|
|
|
if (ogMsg) |
|
|
|
doAction = true; |
|
|
@ -214,6 +217,9 @@ function forwardMessageToTribe(ogpayload, sender, realSatsContactId, amtToForwar |
|
|
|
return __awaiter(this, void 0, void 0, function* () { |
|
|
|
// console.log('forwardMessageToTribe')
|
|
|
|
const chat = yield models_1.models.Chat.findOne({ where: { uuid: ogpayload.chat.uuid } }); |
|
|
|
if (!chat) |
|
|
|
return; |
|
|
|
const senderContactId = sender.id; // og msg sender
|
|
|
|
let payload; |
|
|
|
if (sender && typesToModify.includes(ogpayload.type)) { |
|
|
|
payload = yield modify_1.modifyPayloadAndSaveMediaKey(ogpayload, chat, sender); |
|
|
@ -221,16 +227,32 @@ function forwardMessageToTribe(ogpayload, sender, realSatsContactId, amtToForwar |
|
|
|
else { |
|
|
|
payload = ogpayload; |
|
|
|
} |
|
|
|
// dont need sender beyond here
|
|
|
|
//const sender = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
|
|
|
|
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } }); |
|
|
|
const type = payload.type; |
|
|
|
const message = payload.message; |
|
|
|
// HERE: NEED TO MAKE SURE ALIAS IS UNIQUE
|
|
|
|
// ASK xref TABLE and put alias there too?
|
|
|
|
const owner_alias = chat.myAlias || owner.alias; |
|
|
|
const sender_alias = payload.sender && payload.sender.alias; |
|
|
|
let final_sender_alias = sender_alias; |
|
|
|
const chatMembers = yield models_1.models.ChatMember.findAll({ where: { chatId: chat.id } }); |
|
|
|
if (!(chatMembers && chatMembers.length)) |
|
|
|
return; |
|
|
|
asyncForEach(chatMembers, (cm) => { |
|
|
|
if (cm.contactId === senderContactId) |
|
|
|
return; // dont check against self of course
|
|
|
|
if (sender_alias === cm.lastAlias || sender_alias === owner_alias) { |
|
|
|
// impersonating! switch it up!
|
|
|
|
final_sender_alias = `${sender_alias}_2`; |
|
|
|
} |
|
|
|
}); |
|
|
|
if (sender_alias !== final_sender_alias) { |
|
|
|
const theChatMember = yield models_1.models.ChatMember.findOne({ where: { chatId: chat.id, contactId: senderContactId } }); |
|
|
|
yield theChatMember.update({ lastAlias: final_sender_alias }); |
|
|
|
} |
|
|
|
send_1.sendMessage({ |
|
|
|
type, message, |
|
|
|
sender: Object.assign(Object.assign({}, owner.dataValues), { alias: (payload.sender && payload.sender.alias) || '', photoUrl: (payload.sender && payload.sender.photo_url) || '', role: constants_1.default.chat_roles.reader }), |
|
|
|
sender: Object.assign(Object.assign({}, owner.dataValues), { alias: final_sender_alias || '', photoUrl: (payload.sender && payload.sender.photo_url) || '', role: constants_1.default.chat_roles.reader }), |
|
|
|
amount: amtToForwardToRealSatsContactId || 0, |
|
|
|
chat: chat, |
|
|
|
skipPubKey: payload.sender.pub_key, |
|
|
@ -418,4 +440,11 @@ function weave(p) { |
|
|
|
return payload; |
|
|
|
} |
|
|
|
} |
|
|
|
function asyncForEach(array, callback) { |
|
|
|
return __awaiter(this, void 0, void 0, function* () { |
|
|
|
for (let index = 0; index < array.length; index++) { |
|
|
|
yield callback(array[index], index, array); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
//# sourceMappingURL=receive.js.map
|