Browse Source

log history date

push-params
Evan Feenstra 4 years ago
parent
commit
ba8bffc571
  1. 87
      dist/src/controllers/chatTribes.js
  2. 2
      dist/src/controllers/chatTribes.js.map
  3. 98
      src/controllers/chatTribes.ts

87
dist/src/controllers/chatTribes.js

@ -418,48 +418,55 @@ function replayChatHistory(chat, contact) {
if (!(chat && chat.id && contact && contact.id)) { if (!(chat && chat.id && contact && contact.id)) {
return console.log('[tribes] cant replay history'); return console.log('[tribes] cant replay history');
} }
const msgs = yield models_1.models.Message.findAll({ try {
where: { chatId: chat.id, type: { [sequelize_1.Op.in]: network.typesToReplay } }, const msgs = yield models_1.models.Message.findAll({
order: [['id', 'desc']], where: { chatId: chat.id, type: { [sequelize_1.Op.in]: network.typesToReplay } },
limit: 40 order: [['id', 'desc']],
}); limit: 40
msgs.reverse(); });
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } }); msgs.reverse();
asyncForEach(msgs, (m) => __awaiter(this, void 0, void 0, function* () { const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
if (!network.typesToReplay.includes(m.type)) asyncForEach(msgs, (m) => __awaiter(this, void 0, void 0, function* () {
return; // only for message for now if (!network.typesToReplay.includes(m.type))
const sender = Object.assign(Object.assign(Object.assign({}, owner.dataValues), m.senderAlias && { alias: m.senderAlias }), { role: constants.chat_roles.reader }); return; // only for message for now
let content = ''; const sender = Object.assign(Object.assign(Object.assign({}, owner.dataValues), m.senderAlias && { alias: m.senderAlias }), { role: constants.chat_roles.reader });
try { let content = '';
content = JSON.parse(m.remoteMessageContent); try {
} content = JSON.parse(m.remoteMessageContent);
catch (e) { } }
const dateString = m.date && m.date.toISOString(); catch (e) { }
let mediaKeyMap; console.log("HISTORY DATE", m.date, typeof m.date);
let newMediaTerms; console.log("HISTORY DATE STRING", m.date.toISOString());
if (m.type === constants.message_types.attachment) { const dateString = m.date && m.date.toISOString();
if (m.mediaKey && m.mediaToken) { let mediaKeyMap;
const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1]; let newMediaTerms;
if (muid) { if (m.type === constants.message_types.attachment) {
const mediaKey = yield models_1.models.MediaKey.findOne({ where: { if (m.mediaKey && m.mediaToken) {
muid, chatId: chat.id, const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1];
} }); if (muid) {
// console.log("FOUND MEDIA KEY!!",mediaKey.dataValues) const mediaKey = yield models_1.models.MediaKey.findOne({ where: {
mediaKeyMap = { chat: mediaKey.key }; muid, chatId: chat.id,
newMediaTerms = { muid: mediaKey.muid }; } });
// console.log("FOUND MEDIA KEY!!",mediaKey.dataValues)
mediaKeyMap = { chat: mediaKey.key };
newMediaTerms = { muid: mediaKey.muid };
}
} }
} }
} let msg = network.newmsg(m.type, chat, sender, Object.assign(Object.assign(Object.assign(Object.assign({ content }, mediaKeyMap && { mediaKey: mediaKeyMap }), newMediaTerms && { mediaToken: newMediaTerms }), m.mediaType && { mediaType: m.mediaType }), dateString && { date: dateString }));
let msg = network.newmsg(m.type, chat, sender, Object.assign(Object.assign(Object.assign(Object.assign({ content }, mediaKeyMap && { mediaKey: mediaKeyMap }), newMediaTerms && { mediaToken: newMediaTerms }), m.mediaType && { mediaType: m.mediaType }), dateString && { date: dateString })); msg = yield msg_1.decryptMessage(msg, chat);
msg = yield msg_1.decryptMessage(msg, chat); const data = yield msg_1.personalizeMessage(msg, contact, true);
const data = yield msg_1.personalizeMessage(msg, contact, true); const mqttTopic = `${contact.publicKey}/${chat.uuid}`;
const mqttTopic = `${contact.publicKey}/${chat.uuid}`; const replayingHistory = true;
const replayingHistory = true; yield network.signAndSend({
yield network.signAndSend({ data,
data, dest: contact.publicKey,
dest: contact.publicKey, }, mqttTopic, replayingHistory);
}, mqttTopic, replayingHistory); }));
})); }
catch (e) {
console.log('replayChatHistory ERROR', e);
}
}); });
} }
exports.replayChatHistory = replayChatHistory; exports.replayChatHistory = replayChatHistory;

2
dist/src/controllers/chatTribes.js.map

File diff suppressed because one or more lines are too long

98
src/controllers/chatTribes.ts

@ -419,55 +419,61 @@ export async function replayChatHistory(chat, contact) {
if(!(chat&&chat.id&&contact&&contact.id)){ if(!(chat&&chat.id&&contact&&contact.id)){
return console.log('[tribes] cant replay history') return console.log('[tribes] cant replay history')
} }
const msgs = await models.Message.findAll({ try {
where:{chatId:chat.id, type:{[Op.in]:network.typesToReplay}}, const msgs = await models.Message.findAll({
order: [['id', 'desc']], where:{chatId:chat.id, type:{[Op.in]:network.typesToReplay}},
limit: 40 order: [['id', 'desc']],
}) limit: 40
msgs.reverse() })
const owner = await models.Contact.findOne({ where: { isOwner: true } }) msgs.reverse()
asyncForEach(msgs, async m=>{ const owner = await models.Contact.findOne({ where: { isOwner: true } })
if(!network.typesToReplay.includes(m.type)) return // only for message for now asyncForEach(msgs, async m=>{
const sender = { if(!network.typesToReplay.includes(m.type)) return // only for message for now
...owner.dataValues, const sender = {
...m.senderAlias && {alias: m.senderAlias}, ...owner.dataValues,
role: constants.chat_roles.reader, ...m.senderAlias && {alias: m.senderAlias},
} role: constants.chat_roles.reader,
let content = '' }
try {content = JSON.parse(m.remoteMessageContent)} catch(e) {} let content = ''
try {content = JSON.parse(m.remoteMessageContent)} catch(e) {}
const dateString = m.date&&m.date.toISOString()
let mediaKeyMap console.log("HISTORY DATE",m.date,typeof m.date)
let newMediaTerms console.log("HISTORY DATE STRING",m.date.toISOString())
if(m.type===constants.message_types.attachment) { const dateString = m.date&&m.date.toISOString()
if(m.mediaKey&&m.mediaToken) { let mediaKeyMap
const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1] let newMediaTerms
if(muid) { if(m.type===constants.message_types.attachment) {
const mediaKey = await models.MediaKey.findOne({where:{ if(m.mediaKey&&m.mediaToken) {
muid, chatId: chat.id, const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1]
}}) if(muid) {
// console.log("FOUND MEDIA KEY!!",mediaKey.dataValues) const mediaKey = await models.MediaKey.findOne({where:{
mediaKeyMap = {chat: mediaKey.key} muid, chatId: chat.id,
newMediaTerms = {muid: mediaKey.muid} }})
// console.log("FOUND MEDIA KEY!!",mediaKey.dataValues)
mediaKeyMap = {chat: mediaKey.key}
newMediaTerms = {muid: mediaKey.muid}
}
} }
} }
} let msg = network.newmsg(m.type, chat, sender, {
let msg = network.newmsg(m.type, chat, sender, { content, // replaced with the remoteMessageContent (u are owner) {}
content, // replaced with the remoteMessageContent (u are owner) {} ...mediaKeyMap && {mediaKey: mediaKeyMap},
...mediaKeyMap && {mediaKey: mediaKeyMap}, ...newMediaTerms && {mediaToken: newMediaTerms},
...newMediaTerms && {mediaToken: newMediaTerms}, ...m.mediaType && {mediaType: m.mediaType},
...m.mediaType && {mediaType: m.mediaType}, ...dateString && {date: dateString}
...dateString && {date: dateString} })
msg = await decryptMessage(msg, chat)
const data = await personalizeMessage(msg, contact, true)
const mqttTopic = `${contact.publicKey}/${chat.uuid}`
const replayingHistory = true
await network.signAndSend({
data,
dest: contact.publicKey,
}, mqttTopic, replayingHistory)
}) })
msg = await decryptMessage(msg, chat) } catch(e) {
const data = await personalizeMessage(msg, contact, true) console.log('replayChatHistory ERROR', e)
const mqttTopic = `${contact.publicKey}/${chat.uuid}` }
const replayingHistory = true
await network.signAndSend({
data,
dest: contact.publicKey,
}, mqttTopic, replayingHistory)
})
} }
export async function createTribeChatParams(owner, contactIds, name, img, price_per_message, price_to_join, escrow_amount, escrow_millis, unlisted, is_private, app_url): Promise<{[k:string]:any}> { export async function createTribeChatParams(owner, contactIds, name, img, price_per_message, price_to_join, escrow_amount, escrow_millis, unlisted, is_private, app_url): Promise<{[k:string]:any}> {

Loading…
Cancel
Save