Browse Source

Merge pull request #83 from stakwork/sqlfix

fixes
push-params
Evan Feenstra 4 years ago
committed by GitHub
parent
commit
14b8c1c318
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 43
      dist/src/builtin/welcome.js
  2. 2
      dist/src/builtin/welcome.js.map
  3. 3
      dist/src/controllers/bots.js
  4. 2
      dist/src/controllers/bots.js.map
  5. 87
      dist/src/controllers/chatTribes.js
  6. 2
      dist/src/controllers/chatTribes.js.map
  7. 18
      dist/src/controllers/chats.js
  8. 2
      dist/src/controllers/chats.js.map
  9. 4
      dist/src/controllers/messages.js
  10. 2
      dist/src/controllers/messages.js.map
  11. 2
      dist/src/network/intercept.js
  12. 2
      dist/src/network/intercept.js.map
  13. 5
      dist/src/network/receive.js
  14. 2
      dist/src/network/receive.js.map
  15. 3
      dist/src/network/send.js
  16. 2
      dist/src/network/send.js.map
  17. 40
      src/builtin/welcome.ts
  18. 4
      src/controllers/bots.ts
  19. 98
      src/controllers/chatTribes.ts
  20. 17
      src/controllers/chats.ts
  21. 5
      src/controllers/messages.ts
  22. 2
      src/network/intercept.ts
  23. 5
      src/network/receive.ts
  24. 3
      src/network/send.ts

43
dist/src/builtin/welcome.js

@ -26,33 +26,40 @@ function init() {
const arr = (message.content && message.content.split(' ')) || [];
console.log('message.type', message.type);
const isGroupJoin = message.type === constants.message_types.group_join;
console.log('isGroupJoin', isGroupJoin);
if (arr.length < 2 && !isGroupJoin)
return;
if (arr[0] !== '/welcome' && !isGroupJoin)
return;
const cmd = arr[1];
const isAdmin = message.member.roles.find(role => role.name === 'Admin');
if (!isAdmin)
return;
if (isGroupJoin) {
const chat = yield models_1.models.Chat.findOne({ where: { uuid: message.channel.id } });
if (!chat)
return;
const chatBot = yield models_1.models.ChatBot.findOne({
where: {
chatId: chat.id, botPrefix: '/welcome', botType: constants.bot_types.builtin
try {
const chat = yield models_1.models.Chat.findOne({ where: { uuid: message.channel.id } });
if (!chat)
return;
const chatBot = yield models_1.models.ChatBot.findOne({
where: {
chatId: chat.id, botPrefix: '/welcome', botType: constants.bot_types.builtin
}
});
let meta = 'Welcome to the tribe!';
if (chatBot && chatBot.meta) {
meta = chatBot.meta;
}
});
let meta = 'Welcome to the tribe!';
if (chatBot && chatBot.meta) {
meta = chatBot.meta;
console.log("=> WELCOMEMETA", meta);
const resEmbed = new Sphinx.MessageEmbed()
.setAuthor('WelcomeBot')
.setDescription(meta);
message.channel.send({ embed: resEmbed });
return;
}
catch (e) {
console.log("WELCOME BOT ERROR", e);
}
const resEmbed = new Sphinx.MessageEmbed()
.setAuthor('WelcomeBot')
.setDescription(meta);
message.channel.send({ embed: resEmbed });
return;
}
const isAdmin = message.member.roles.find(role => role.name === 'Admin');
if (!isAdmin)
return;
switch (cmd) {
case 'setmessage':
if (arr.length < 3)

2
dist/src/builtin/welcome.js.map

@ -1 +1 @@
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../../src/builtin/welcome.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qCAAoC;AACpC,4CAAgD;AAChD,sCAAkC;AAClC,6BAA4B;AAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAA;AAEjC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,CAAA;AAE9E,IAAI,OAAO,GAAG,KAAK,CAAA;AAEnB,SAAgB,IAAI;IAClB,IAAI,OAAO;QAAE,OAAM;IACnB,OAAO,GAAG,IAAI,CAAA;IAEd,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAA;IAClC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAW,CAAC,CAAA;IAE9B,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAO,OAAuB,EAAE,EAAE;QAC7D,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACjE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,CAAC,UAAU,CAAA;QACvE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW;YAAE,OAAM;QAC1C,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,WAAW;YAAE,OAAM;QACjD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAElB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;QACxE,IAAG,CAAC,OAAO;YAAE,OAAM;QAEnB,IAAI,WAAW,EAAE;YACf,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAC/E,IAAI,CAAC,IAAI;gBAAE,OAAM;YACjB,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC3C,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO;iBAC7E;aACF,CAAC,CAAA;YACF,IAAI,IAAI,GAAG,uBAAuB,CAAA;YAClC,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;gBAC3B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;aACpB;YACD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;iBACvC,SAAS,CAAC,YAAY,CAAC;iBACvB,cAAc,CAAC,IAAI,CAAC,CAAA;YACvB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;YACzC,OAAM;SACP;QAED,QAAQ,GAAG,EAAE;YAEX,KAAK,YAAY;gBACf,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAM;gBAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7B,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC/E,IAAI,CAAC,IAAI;oBAAE,OAAM;gBACjB,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC3C,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO;qBAC7E;iBACF,CAAC,CAAA;gBACF,IAAI,CAAC,OAAO;oBAAE,OAAM;gBACpB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChD,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC9B,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;qBACvC,SAAS,CAAC,YAAY,CAAC;qBACvB,cAAc,CAAC,uCAAuC,CAAC,CAAA;gBAC1D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;gBACzC,OAAM;YAER;gBACE,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;qBACpC,SAAS,CAAC,YAAY,CAAC;qBACvB,QAAQ,CAAC,eAAe,CAAC;qBACzB,SAAS,CAAC;oBACT,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,+BAA+B,EAAE;oBACvE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE;iBACzC,CAAC;qBACD,YAAY,CAAC,MAAM,CAAC,CAAA;gBACvB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC/B,OAAM;SACT;IACH,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC;AAvED,oBAuEC;AAED,MAAM,MAAM,GAAG;;OAER,CAAA"}
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../../src/builtin/welcome.ts"],"names":[],"mappings":"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"}

3
dist/src/controllers/bots.js

@ -309,6 +309,7 @@ function receiveBotRes(payload) {
const action = dat.action;
const bot_name = dat.bot_name;
const sender_alias = dat.sender.alias;
const date_string = dat.message.date;
if (!chat_uuid)
return console.log('=> receiveBotRes Error no chat_uuid');
const chat = yield models_1.models.Chat.findOne({ where: { uuid: chat_uuid } });
@ -334,6 +335,8 @@ function receiveBotRes(payload) {
return console.log('=> receiveBotRes as sub error no chat');
var date = new Date();
date.setMilliseconds(0);
if (date_string)
date = new Date(date_string);
const sender = yield models_1.models.Contact.findOne({ where: { publicKey: sender_pub_key } });
const msg = {
chatId: chat.id,

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

File diff suppressed because one or more lines are too long

87
dist/src/controllers/chatTribes.js

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

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

File diff suppressed because one or more lines are too long

18
dist/src/controllers/chats.js

@ -310,6 +310,7 @@ exports.deleteChat = (req, res) => __awaiter(void 0, void 0, void 0, function* (
name: ''
});
yield models_1.models.Message.destroy({ where: { chatId: id } });
yield models_1.models.ChatMember.destroy({ where: { chatId: id } });
res_1.success(res, { chat_id: id });
});
function receiveGroupJoin(payload) {
@ -358,13 +359,16 @@ function receiveGroupJoin(payload) {
return console.log('no sender'); // fail (no contact key?)
yield chat.update({ contactIds: JSON.stringify(contactIds) });
if (isTribeOwner) { // IF TRIBE, ADD new member TO XREF
models_1.models.ChatMember.upsert({
contactId: theSender.id,
chatId: chat.id,
role: constants.chat_roles.reader,
lastActive: date,
status: constants.chat_statuses.approved
});
try {
models_1.models.ChatMember.upsert({
contactId: theSender.id,
chatId: chat.id,
role: constants.chat_roles.reader,
lastActive: date,
status: constants.chat_statuses.approved
});
}
catch (e) { }
chatTribes_1.replayChatHistory(chat, theSender);
tribes.putstats({
chatId: chat.id,

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

File diff suppressed because one or more lines are too long

4
dist/src/controllers/messages.js

@ -185,14 +185,14 @@ exports.sendMessage = (req, res) => __awaiter(void 0, void 0, void 0, function*
});
exports.receiveMessage = (payload) => __awaiter(void 0, void 0, void 0, function* () {
// console.log('received message', { payload })
var date = new Date();
date.setMilliseconds(0);
const total_spent = 1;
const { owner, sender, chat, content, remote_content, msg_id, chat_type, sender_alias, msg_uuid, date_string, reply_uuid } = yield helpers.parseReceiveParams(payload);
if (!owner || !sender || !chat) {
return console.log('=> no group chat!');
}
const text = content;
var date = new Date();
date.setMilliseconds(0);
if (date_string)
date = new Date(date_string);
const msg = {

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

File diff suppressed because one or more lines are too long

2
dist/src/network/intercept.js

@ -77,7 +77,7 @@ function isBotMsg(msg, sentByMe) {
exports.isBotMsg = isBotMsg;
function emitMessageToBot(msg, botInTribe) {
return __awaiter(this, void 0, void 0, function* () {
console.log('=> emitMessageToBot', JSON.stringify(msg, null, 2));
// console.log('=> emitMessageToBot',JSON.stringify(msg,null,2))
switch (botInTribe.botType) {
case constants.bot_types.builtin:
builtin_1.builtinBotEmit(msg);

2
dist/src/network/intercept.js.map

@ -1 +1 @@
{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../../src/network/intercept.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,sCAAkC;AAClC,wCAA2C;AAC3C,8CAAoE;AACpE,6BAA4B;AAC5B,wCAAuC;AAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,CAAA;AAE9E;;;EAGE;AAEF,kDAAkD;AAClD,SAAsB,QAAQ,CAAC,GAAQ,EAAE,QAAiB;;QACxD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAA;QAE9C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAA;QACxB,IAAI,OAAO,KAAK,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE;YAC/C,OAAO,KAAK,CAAA,CAAC,sCAAsC;SACpD;QACD,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YACrC,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI;aACpB;SACF,CAAC,CAAA;QACF,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QAEvB,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAClC,wBAAc,CAAC,GAAG,CAAC,CAAA;YACnB,OAAO,GAAG,IAAI,CAAA;SACf;QACD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAA;QAE3B,MAAM,WAAW,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YAC/C,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,EAAE;aAChB;SACF,CAAC,CAAA;QACF,6CAA6C;QAE7C,IAAI,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAA;QAEtD,MAAM,YAAY,CAAC,WAAW,EAAE,CAAM,UAAU,EAAC,EAAE;YACjD,IAAI,UAAU,CAAC,QAAQ,EAAE;gBACvB,oDAAoD;gBACpD,IAAI;oBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;oBAChD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;wBAC9B,MAAM,eAAe,GAAG,OAAO,KAAK,SAAS,CAAC,aAAa,CAAC,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,SAAS,GAAG,CAAC,CAAA;wBACxH,MAAM,QAAQ,GAAG,OAAO,KAAK,SAAS,CAAC,aAAa,CAAC,OAAO,CAAA;wBAC5D,IAAI,eAAe,IAAI,QAAQ,EAAE;4BAC/B,OAAO,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;yBAC7D;qBACF;iBACF;gBAAC,OAAO,CAAC,EAAE,GAAG;aAChB;iBAAM,EAAE,oCAAoC;gBAC3C,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE;oBACrD,oEAAoE;oBACpE,OAAO,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;iBAC7D;aACF;QACH,CAAC,CAAA,CAAC,CAAA;QAEF,OAAO,OAAO,CAAA;IAChB,CAAC;CAAA;AArDD,4BAqDC;AAED,SAAe,gBAAgB,CAAC,GAAG,EAAE,UAAU;;QAC7C,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC,CAAA;QAC7D,QAAQ,UAAU,CAAC,OAAO,EAAE;YAC1B,KAAK,SAAS,CAAC,SAAS,CAAC,OAAO;gBAC9B,wBAAc,CAAC,GAAG,CAAC,CAAA;gBACnB,OAAO,IAAI,CAAA;YACb,KAAK,SAAS,CAAC,SAAS,CAAC,KAAK;gBAC5B,MAAM,GAAG,GAAG,MAAM,eAAM,CAAC,GAAG,CAAC,OAAO,CAAC;oBACnC,KAAK,EAAE;wBACL,IAAI,EAAE,UAAU,CAAC,OAAO;qBACzB;iBACF,CAAC,CAAA;gBACF,OAAO,sBAAe,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC9D,KAAK,SAAS,CAAC,SAAS,CAAC,MAAM;gBAC7B,OAAO,oBAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;YACvC;gBACE,OAAO,KAAK,CAAA;SACf;IACH,CAAC;CAAA;AAED,SAAe,YAAY,CAAC,KAAK,EAAE,QAAQ;;QACzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACjD,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC5C;IACH,CAAC;CAAA"}
{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../../src/network/intercept.ts"],"names":[],"mappings":"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"}

5
dist/src/network/receive.js

@ -40,7 +40,10 @@ const typesThatNeedPricePerMessage = [
msgtypes.message, msgtypes.attachment
];
exports.typesToReplay = [
msgtypes.message, msgtypes.group_join, msgtypes.group_leave
msgtypes.message,
msgtypes.group_join,
msgtypes.group_leave,
msgtypes.bot_res,
];
const botTypes = [
constants.message_types.bot_install,

2
dist/src/network/receive.js.map

File diff suppressed because one or more lines are too long

3
dist/src/network/send.js

@ -94,6 +94,7 @@ function sendMessage(params) {
mqttTopic = ''; // FORCE KEYSEND!!!
}
const m = yield msg_1.personalizeMessage(msg, contact, isTribeOwner);
// console.log('-> personalized msg',m)
const opts = {
dest: destkey,
data: m,
@ -134,7 +135,7 @@ function signAndSend(opts, mqttTopic, replayingHistory) {
opts.amt = opts.amt || 0;
const sig = yield signer.signAscii(data);
data = data + sig;
// console.log("ACTUALLY SEND", mqttTopic)
// console.log("-> ACTUALLY SEND: topic:", mqttTopic)
try {
if (mqttTopic) {
yield tribes.publish(mqttTopic, data, function () {

2
dist/src/network/send.js.map

File diff suppressed because one or more lines are too long

40
src/builtin/welcome.ts

@ -19,32 +19,38 @@ export function init() {
const arr = (message.content && message.content.split(' ')) || []
console.log('message.type', message.type)
const isGroupJoin = message.type === constants.message_types.group_join
console.log('isGroupJoin',isGroupJoin)
if (arr.length < 2 && !isGroupJoin) return
if (arr[0] !== '/welcome' && !isGroupJoin) return
const cmd = arr[1]
const isAdmin = message.member.roles.find(role => role.name === 'Admin')
if(!isAdmin) return
if (isGroupJoin) {
const chat = await models.Chat.findOne({ where: { uuid: message.channel.id } })
if (!chat) return
const chatBot = await models.ChatBot.findOne({
where: {
chatId: chat.id, botPrefix: '/welcome', botType: constants.bot_types.builtin
try{
const chat = await models.Chat.findOne({ where: { uuid: message.channel.id } })
if (!chat) return
const chatBot = await models.ChatBot.findOne({
where: {
chatId: chat.id, botPrefix: '/welcome', botType: constants.bot_types.builtin
}
})
let meta = 'Welcome to the tribe!'
if (chatBot && chatBot.meta) {
meta = chatBot.meta
}
})
let meta = 'Welcome to the tribe!'
if (chatBot && chatBot.meta) {
meta = chatBot.meta
console.log("=> WELCOMEMETA", meta)
const resEmbed = new Sphinx.MessageEmbed()
.setAuthor('WelcomeBot')
.setDescription(meta)
message.channel.send({ embed: resEmbed })
return
} catch(e) {
console.log("WELCOME BOT ERROR",e)
}
const resEmbed = new Sphinx.MessageEmbed()
.setAuthor('WelcomeBot')
.setDescription(meta)
message.channel.send({ embed: resEmbed })
return
}
const isAdmin = message.member.roles.find(role => role.name === 'Admin')
if(!isAdmin) return
switch (cmd) {
case 'setmessage':

4
src/controllers/bots.ts

@ -299,6 +299,8 @@ export async function receiveBotRes(payload) {
const action = dat.action
const bot_name = dat.bot_name
const sender_alias = dat.sender.alias
const date_string = dat.message.date
if(!chat_uuid) return console.log('=> receiveBotRes Error no chat_uuid')
const chat = await models.Chat.findOne({where:{uuid:chat_uuid}})
@ -324,6 +326,8 @@ export async function receiveBotRes(payload) {
if(!chat) return console.log('=> receiveBotRes as sub error no chat')
var date = new Date();
date.setMilliseconds(0)
if(date_string) date=new Date(date_string)
const sender = await models.Contact.findOne({ where: { publicKey: sender_pub_key } })
const msg: { [k: string]: any } = {
chatId: chat.id,

98
src/controllers/chatTribes.ts

@ -415,58 +415,64 @@ export async function receiveTribeDelete(payload) {
}
export async function replayChatHistory(chat, contact) {
console.log('-> replayHistory')
if(!(chat&&chat.id&&contact&&contact.id)){
return console.log('[tribes] cant replay history')
}
const msgs = await models.Message.findAll({
where:{chatId:chat.id, type:{[Op.in]:network.typesToReplay}},
order: [['id', 'desc']],
limit: 40
})
msgs.reverse()
const owner = await models.Contact.findOne({ where: { isOwner: true } })
asyncForEach(msgs, async m=>{
if(!network.typesToReplay.includes(m.type)) return // only for message for now
const sender = {
...owner.dataValues,
...m.senderAlias && {alias: m.senderAlias},
role: constants.chat_roles.reader,
}
let content = ''
try {content = JSON.parse(m.remoteMessageContent)} catch(e) {}
const dateString = m.date&&m.date.toISOString()
let mediaKeyMap
let newMediaTerms
if(m.type===constants.message_types.attachment) {
if(m.mediaKey&&m.mediaToken) {
const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1]
if(muid) {
const mediaKey = await models.MediaKey.findOne({where:{
muid, chatId: chat.id,
}})
// console.log("FOUND MEDIA KEY!!",mediaKey.dataValues)
mediaKeyMap = {chat: mediaKey.key}
newMediaTerms = {muid: mediaKey.muid}
try {
const msgs = await models.Message.findAll({
where:{chatId:chat.id, type:{[Op.in]:network.typesToReplay}},
order: [['id', 'desc']],
limit: 40
})
msgs.reverse()
const owner = await models.Contact.findOne({ where: { isOwner: true } })
asyncForEach(msgs, async m=>{
if(!network.typesToReplay.includes(m.type)) return // only for message for now
const sender = {
...owner.dataValues,
...m.senderAlias && {alias: m.senderAlias},
role: constants.chat_roles.reader,
}
let content = ''
try {content = JSON.parse(m.remoteMessageContent)} catch(e) {}
const dateString = m.date&&m.date.toISOString()
let mediaKeyMap
let newMediaTerms
if(m.type===constants.message_types.attachment) {
if(m.mediaKey&&m.mediaToken) {
const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1]
if(muid) {
const mediaKey = await models.MediaKey.findOne({where:{
muid, chatId: chat.id,
}})
// console.log("FOUND MEDIA KEY!!",mediaKey.dataValues)
mediaKeyMap = {chat: mediaKey.key}
newMediaTerms = {muid: mediaKey.muid}
}
}
}
}
let msg = network.newmsg(m.type, chat, sender, {
content, // replaced with the remoteMessageContent (u are owner) {}
...mediaKeyMap && {mediaKey: mediaKeyMap},
...newMediaTerms && {mediaToken: newMediaTerms},
...m.mediaType && {mediaType: m.mediaType},
...dateString && {date: dateString}
let msg = network.newmsg(m.type, chat, sender, {
content, // replaced with the remoteMessageContent (u are owner) {}
...mediaKeyMap && {mediaKey: mediaKeyMap},
...newMediaTerms && {mediaToken: newMediaTerms},
...m.mediaType && {mediaType: m.mediaType},
...dateString && {date: dateString}
})
msg = await decryptMessage(msg, chat)
const data = await personalizeMessage(msg, contact, true)
const mqttTopic = `${contact.publicKey}/${chat.uuid}`
const replayingHistory = true
// console.log("-> HISTORY DATA:",data)
await network.signAndSend({
data,
dest: contact.publicKey,
}, mqttTopic, replayingHistory)
})
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)
})
} catch(e) {
console.log('replayChatHistory ERROR', e)
}
}
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}> {

17
src/controllers/chats.ts

@ -315,6 +315,7 @@ export const deleteChat = async (req, res) => {
name:''
})
await models.Message.destroy({ where: { chatId: id } })
await models.ChatMember.destroy({ where: {chatId: id} })
success(res, { chat_id: id })
}
@ -366,13 +367,15 @@ export async function receiveGroupJoin(payload) {
await chat.update({ contactIds: JSON.stringify(contactIds) })
if(isTribeOwner){ // IF TRIBE, ADD new member TO XREF
models.ChatMember.upsert({
contactId: theSender.id,
chatId: chat.id,
role: constants.chat_roles.reader,
lastActive: date,
status: constants.chat_statuses.approved
})
try{
models.ChatMember.upsert({
contactId: theSender.id,
chatId: chat.id,
role: constants.chat_roles.reader,
lastActive: date,
status: constants.chat_statuses.approved
})
} catch(e) {}
replayChatHistory(chat, theSender)
tribes.putstats({
chatId: chat.id,

5
src/controllers/messages.ts

@ -209,9 +209,6 @@ export const sendMessage = async (req, res) => {
export const receiveMessage = async (payload) => {
// console.log('received message', { payload })
var date = new Date();
date.setMilliseconds(0)
const total_spent = 1
const {owner, sender, chat, content, remote_content, msg_id, chat_type, sender_alias, msg_uuid, date_string, reply_uuid} = await helpers.parseReceiveParams(payload)
if(!owner || !sender || !chat) {
@ -219,6 +216,8 @@ export const receiveMessage = async (payload) => {
}
const text = content
var date = new Date();
date.setMilliseconds(0)
if(date_string) date=new Date(date_string)
const msg:{[k:string]:any} = {

2
src/network/intercept.ts

@ -69,7 +69,7 @@ export async function isBotMsg(msg: Msg, sentByMe: boolean): Promise<boolean> {
}
async function emitMessageToBot(msg, botInTribe): Promise<boolean> {
console.log('=> emitMessageToBot',JSON.stringify(msg,null,2))
// console.log('=> emitMessageToBot',JSON.stringify(msg,null,2))
switch (botInTribe.botType) {
case constants.bot_types.builtin:
builtinBotEmit(msg)

5
src/network/receive.ts

@ -32,7 +32,10 @@ const typesThatNeedPricePerMessage = [
msgtypes.message, msgtypes.attachment
]
export const typesToReplay=[ // should match typesToForward
msgtypes.message, msgtypes.group_join, msgtypes.group_leave
msgtypes.message,
msgtypes.group_join,
msgtypes.group_leave,
msgtypes.bot_res,
]
const botTypes=[
constants.message_types.bot_install,

3
src/network/send.ts

@ -93,6 +93,7 @@ export async function sendMessage(params) {
}
const m = await personalizeMessage(msg, contact, isTribeOwner)
// console.log('-> personalized msg',m)
const opts = {
dest: destkey,
data: m,
@ -130,7 +131,7 @@ export function signAndSend(opts, mqttTopic?:string, replayingHistory?:boolean){
const sig = await signer.signAscii(data)
data = data + sig
// console.log("ACTUALLY SEND", mqttTopic)
// console.log("-> ACTUALLY SEND: topic:", mqttTopic)
try {
if(mqttTopic) {
await tribes.publish(mqttTopic, data, function(){

Loading…
Cancel
Save