Browse Source

confirmations in tribes, send conf on excrow timer done, fix timers table to store chat_id and ref id of og msg

hosting-provider
Evan Feenstra 5 years ago
parent
commit
d6c8c2dcd5
  1. 2
      api/controllers/confirmations.ts
  2. 3
      api/controllers/messages.ts
  3. 3
      api/models/ts/timer.ts
  4. 9
      api/network/send.ts
  5. 4
      api/utils/setup.ts
  6. 20
      api/utils/timers.ts
  7. 2
      dist/api/controllers/confirmations.js
  8. 2
      dist/api/controllers/confirmations.js.map
  9. 3
      dist/api/controllers/messages.js
  10. 2
      dist/api/controllers/messages.js.map
  11. 4
      dist/api/models/ts/timer.js
  12. 2
      dist/api/models/ts/timer.js.map
  13. 9
      dist/api/network/send.js
  14. 2
      dist/api/network/send.js.map
  15. 4
      dist/api/utils/setup.js
  16. 2
      dist/api/utils/setup.js.map
  17. 20
      dist/api/utils/timers.js
  18. 2
      dist/api/utils/timers.js.map

2
api/controllers/confirmations.ts

@ -17,7 +17,7 @@ export function sendConfirmation({ chat, sender, msg_id }) {
}
export async function receiveConfirmation(payload) {
console.log('=> received confirmation')
console.log('=> received confirmation', JSON.stringify(payload))
const dat = payload.content || payload
const chat_uuid = dat.chat.uuid

3
api/controllers/messages.ts

@ -183,7 +183,8 @@ const receiveMessage = async (payload) => {
updatedAt: date,
status: constants.statuses.received
}
if(chat_type===constants.chat_types.tribe) {
const isTribe = chat_type===constants.chat_types.tribe
if(isTribe) {
msg.senderAlias = sender_alias
if(remote_content) msg.remoteMessageContent=remote_content
}

3
api/models/ts/timer.ts

@ -11,6 +11,9 @@ export default class Timer extends Model<Timer> {
})
id: number
@Column(DataType.BIGINT)
chatId: number
@Column(DataType.BIGINT)
millis: number

9
api/network/send.ts

@ -10,8 +10,7 @@ type NetworkType = undefined | 'mqtt' | 'lightning'
export async function sendMessage(params) {
const { type, chat, message, sender, amount, success, failure, skipPubKey } = params
const m = newmsg(type, chat, sender, message)
let msg = m
let msg = newmsg(type, chat, sender, message)
// console.log(type,message)
if(!(sender&&sender.publicKey)) {
@ -32,9 +31,9 @@ export async function sendMessage(params) {
let isTribeOwner = false
const chatUUID = chat.uuid
if(isTribe) {
if(type===constants.message_types.confirmation) {
return // dont send confs for tribe
}
// if(type===constants.message_types.confirmation) {
// return // dont send confs for tribe
// }
console.log("is tribe!")
const tribeOwnerPubKey = chat.ownerPubkey
if(sender.publicKey===tribeOwnerPubKey){

4
api/utils/setup.ts

@ -35,9 +35,11 @@ async function migrate(){
await sequelize.query(`
CREATE TABLE sphinx_timers (
id BIGINT,
chat_id BIGINT,
receiver BIGINT,
millis BIGINT,
amount DECIMAL
amount DECIMAL,
ref BIGINT
)`)
} catch(e){console.log(e)}
addTableColumn('sphinx_chats', 'escrow_amount', 'BIGINT')

20
api/utils/timers.ts

@ -1,5 +1,8 @@
import { models } from '../models'
import * as network from '../network'
import * as path from 'path'
const constants = require(path.join(__dirname,'../../config/constants.json'))
export async function addTimer({amount, millis, receiver}){
const now = new Date().valueOf()
@ -27,13 +30,16 @@ export async function reloadTimers(){
}
export async function payBack(t){
console.log("PAY BACK")
const contact = await models.Contact.findOne({where:{id:t.receiver}})
if(contact){
console.log("SEND ",t.amount,"TO",contact.publicKey)
network.signAndSend({
amt: t.amount,
dest: contact.publicKey,
const chat = await models.Chat.findOne({ where: {id:t.chatId} })
const owner = await models.Contact.findOne({ where: {isOwner:true} })
if(!chat) return
const theChat = {...chat.dataValues, contactIds:[t.receiver]}
network.sendMessage({
chat: theChat,
sender: owner,
message: {id:t.ref},
amount: t.amount,
type: constants.message_types.confirmation,
})
}
models.Timer.destroy({where:{id:t.id}})
}

2
dist/api/controllers/confirmations.js

@ -27,7 +27,7 @@ function sendConfirmation({ chat, sender, msg_id }) {
exports.sendConfirmation = sendConfirmation;
function receiveConfirmation(payload) {
return __awaiter(this, void 0, void 0, function* () {
console.log('=> received confirmation');
console.log('=> received confirmation', JSON.stringify(payload));
const dat = payload.content || payload;
const chat_uuid = dat.chat.uuid;
const msg_id = dat.message.id;

2
dist/api/controllers/confirmations.js.map

@ -1 +1 @@
{"version":3,"file":"confirmations.js","sourceRoot":"","sources":["../../../api/controllers/confirmations.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"confirmations.js","sourceRoot":"","sources":["../../../api/controllers/confirmations.ts"],"names":[],"mappings":"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"}

3
dist/api/controllers/messages.js

@ -166,7 +166,8 @@ const receiveMessage = (payload) => __awaiter(void 0, void 0, void 0, function*
updatedAt: date,
status: constants.statuses.received
};
if (chat_type === constants.chat_types.tribe) {
const isTribe = chat_type === constants.chat_types.tribe;
if (isTribe) {
msg.senderAlias = sender_alias;
if (remote_content)
msg.remoteMessageContent = remote_content;

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

File diff suppressed because one or more lines are too long

4
dist/api/models/ts/timer.js

@ -21,6 +21,10 @@ __decorate([
}),
__metadata("design:type", Number)
], Timer.prototype, "id", void 0);
__decorate([
sequelize_typescript_1.Column(sequelize_typescript_1.DataType.BIGINT),
__metadata("design:type", Number)
], Timer.prototype, "chatId", void 0);
__decorate([
sequelize_typescript_1.Column(sequelize_typescript_1.DataType.BIGINT),
__metadata("design:type", Number)

2
dist/api/models/ts/timer.js.map

@ -1 +1 @@
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../../api/models/ts/timer.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,KAAK,GAA1B,MAAqB,KAAM,SAAQ,4BAAY;CAmB9C,CAAA;AAXC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;iCACQ;AAGV;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;qCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;qCACX;AAjBK,KAAK;IADzB,4BAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GAClC,KAAK,CAmBzB;kBAnBoB,KAAK"}
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../../api/models/ts/timer.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,KAAK,GAA1B,MAAqB,KAAM,SAAQ,4BAAY;CAsB9C,CAAA;AAdC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;iCACQ;AAGV;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;qCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;qCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;qCACX;AApBK,KAAK;IADzB,4BAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GAClC,KAAK,CAsBzB;kBAtBoB,KAAK"}

9
dist/api/network/send.js

@ -18,8 +18,7 @@ const constants = require(path.join(__dirname, '../../config/constants.json'));
function sendMessage(params) {
return __awaiter(this, void 0, void 0, function* () {
const { type, chat, message, sender, amount, success, failure, skipPubKey } = params;
const m = newmsg(type, chat, sender, message);
let msg = m;
let msg = newmsg(type, chat, sender, message);
// console.log(type,message)
if (!(sender && sender.publicKey)) {
console.log("NO SENDER?????");
@ -38,9 +37,9 @@ function sendMessage(params) {
let isTribeOwner = false;
const chatUUID = chat.uuid;
if (isTribe) {
if (type === constants.message_types.confirmation) {
return; // dont send confs for tribe
}
// if(type===constants.message_types.confirmation) {
// return // dont send confs for tribe
// }
console.log("is tribe!");
const tribeOwnerPubKey = chat.ownerPubkey;
if (sender.publicKey === tribeOwnerPubKey) {

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

File diff suppressed because one or more lines are too long

4
dist/api/utils/setup.js

@ -48,9 +48,11 @@ function migrate() {
yield models_1.sequelize.query(`
CREATE TABLE sphinx_timers (
id BIGINT,
chat_id BIGINT,
receiver BIGINT,
millis BIGINT,
amount DECIMAL
amount DECIMAL,
ref BIGINT
)`);
}
catch (e) {

2
dist/api/utils/setup.js.map

@ -1 +1 @@
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../api/utils/setup.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../api/utils/setup.ts"],"names":[],"mappings":"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"}

20
dist/api/utils/timers.js

@ -11,6 +11,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
Object.defineProperty(exports, "__esModule", { value: true });
const models_1 = require("../models");
const network = require("../network");
const path = require("path");
const constants = require(path.join(__dirname, '../../config/constants.json'));
function addTimer({ amount, millis, receiver }) {
return __awaiter(this, void 0, void 0, function* () {
const now = new Date().valueOf();
@ -47,14 +49,18 @@ exports.reloadTimers = reloadTimers;
function payBack(t) {
return __awaiter(this, void 0, void 0, function* () {
console.log("PAY BACK");
const contact = yield models_1.models.Contact.findOne({ where: { id: t.receiver } });
if (contact) {
console.log("SEND ", t.amount, "TO", contact.publicKey);
network.signAndSend({
amt: t.amount,
dest: contact.publicKey,
const chat = yield models_1.models.Chat.findOne({ where: { id: t.chatId } });
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
if (!chat)
return;
const theChat = Object.assign(Object.assign({}, chat.dataValues), { contactIds: [t.receiver] });
network.sendMessage({
chat: theChat,
sender: owner,
message: { id: t.ref },
amount: t.amount,
type: constants.message_types.confirmation,
});
}
models_1.models.Timer.destroy({ where: { id: t.id } });
});
}

2
dist/api/utils/timers.js.map

@ -1 +1 @@
{"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../api/utils/timers.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAkC;AAClC,sCAAqC;AAErC,SAAsB,QAAQ,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC;;QACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QAChC,MAAM,IAAI,GAAG,GAAG,GAAG,MAAM,CAAA;QACzB,MAAM,CAAC,GAAG,MAAM,eAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAChC,MAAM,EAAE,MAAM,EAAC,IAAI,EAAE,QAAQ;SAChC,CAAC,CAAA;QACF,QAAQ,CAAC,IAAI,EAAE,GAAQ,EAAE;YACrB,OAAO,CAAC,CAAC,CAAC,CAAA;QACd,CAAC,CAAA,CAAC,CAAA;IACN,CAAC;CAAA;AATD,4BASC;AACD,SAAgB,QAAQ,CAAC,IAAW,EAAE,EAAE;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAChC,MAAM,EAAE,GAAG,IAAI,GAAC,GAAG,CAAA;IACnB,IAAG,EAAE,GAAC,CAAC;QAAE,EAAE,EAAE,CAAA,CAAC,wCAAwC;;QACjD,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACxB,CAAC;AALD,4BAKC;AACD,SAAsB,YAAY;;QACjC,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;QAC3C,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE;YAC3B,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,GAAQ,EAAE;gBAC5B,OAAO,CAAC,CAAC,CAAC,CAAA;YACX,CAAC,CAAA,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IACH,CAAC;CAAA;AAPD,oCAOC;AACD,SAAsB,OAAO,CAAC,CAAC;;QAC3B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACvB,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,KAAK,EAAC,EAAC,EAAE,EAAC,CAAC,CAAC,QAAQ,EAAC,EAAC,CAAC,CAAA;QACrE,IAAG,OAAO,EAAC;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,EAAC,CAAC,CAAC,MAAM,EAAC,IAAI,EAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YACpD,OAAO,CAAC,WAAW,CAAC;gBAChB,GAAG,EAAE,CAAC,CAAC,MAAM;gBACb,IAAI,EAAE,OAAO,CAAC,SAAS;aAC1B,CAAC,CAAA;SACL;QACD,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAC,KAAK,EAAC,EAAC,EAAE,EAAC,CAAC,CAAC,EAAE,EAAC,EAAC,CAAC,CAAA;IAC3C,CAAC;CAAA;AAXD,0BAWC"}
{"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../api/utils/timers.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAkC;AAClC,sCAAqC;AACrC,6BAA4B;AAE5B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAC,6BAA6B,CAAC,CAAC,CAAA;AAE7E,SAAsB,QAAQ,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC;;QACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QAChC,MAAM,IAAI,GAAG,GAAG,GAAG,MAAM,CAAA;QACzB,MAAM,CAAC,GAAG,MAAM,eAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAChC,MAAM,EAAE,MAAM,EAAC,IAAI,EAAE,QAAQ;SAChC,CAAC,CAAA;QACF,QAAQ,CAAC,IAAI,EAAE,GAAQ,EAAE;YACrB,OAAO,CAAC,CAAC,CAAC,CAAA;QACd,CAAC,CAAA,CAAC,CAAA;IACN,CAAC;CAAA;AATD,4BASC;AACD,SAAgB,QAAQ,CAAC,IAAW,EAAE,EAAE;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAChC,MAAM,EAAE,GAAG,IAAI,GAAC,GAAG,CAAA;IACnB,IAAG,EAAE,GAAC,CAAC;QAAE,EAAE,EAAE,CAAA,CAAC,wCAAwC;;QACjD,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACxB,CAAC;AALD,4BAKC;AACD,SAAsB,YAAY;;QACjC,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;QAC3C,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE;YAC3B,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,GAAQ,EAAE;gBAC5B,OAAO,CAAC,CAAC,CAAC,CAAA;YACX,CAAC,CAAA,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IACH,CAAC;CAAA;AAPD,oCAOC;AACD,SAAsB,OAAO,CAAC,CAAC;;QAC3B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACvB,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAC,EAAE,EAAC,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,CAAA;QAChE,MAAM,KAAK,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAC,OAAO,EAAC,IAAI,EAAC,EAAE,CAAC,CAAA;QACrE,IAAG,CAAC,IAAI;YAAE,OAAM;QAChB,MAAM,OAAO,mCAAO,IAAI,CAAC,UAAU,KAAE,UAAU,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAC,CAAA;QAC7D,OAAO,CAAC,WAAW,CAAC;YAChB,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAC,EAAE,EAAC,CAAC,CAAC,GAAG,EAAC;YACnB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,YAAY;SAC7C,CAAC,CAAA;QACF,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAC,KAAK,EAAC,EAAC,EAAE,EAAC,CAAC,CAAC,EAAE,EAAC,EAAC,CAAC,CAAA;IAC3C,CAAC;CAAA;AAdD,0BAcC"}
Loading…
Cancel
Save