21 changed files with 288 additions and 95 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,103 @@ |
|||
"use strict"; |
|||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { |
|||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } |
|||
return new (P || (P = Promise))(function (resolve, reject) { |
|||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } |
|||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } |
|||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } |
|||
step((generator = generator.apply(thisArg, _arguments || [])).next()); |
|||
}); |
|||
}; |
|||
Object.defineProperty(exports, "__esModule", { value: true }); |
|||
const models_1 = require("../models"); |
|||
const helpers = require("../helpers"); |
|||
const res_1 = require("../utils/res"); |
|||
const constants_1 = require("../constants"); |
|||
exports.streamFeed = (req, res) => __awaiter(void 0, void 0, void 0, function* () { |
|||
const { destinations, amount, chat_id, text } = req.body; |
|||
if (!(destinations && destinations.length)) { |
|||
return res_1.failure(res, 'no destinations'); |
|||
} |
|||
let meta; |
|||
try { |
|||
meta = JSON.parse(text); |
|||
} |
|||
catch (e) { } |
|||
if (!meta) { |
|||
return res_1.failure(res, 'no meta'); |
|||
} |
|||
if (meta && meta.itemID) { |
|||
const cm = { |
|||
itemID: meta.itemID, |
|||
timestamp: meta.timestamp || 0, |
|||
sats_per_minute: amount || 0, |
|||
}; |
|||
const chat = yield models_1.models.Chat.findOne({ where: { id: chat_id } }); |
|||
if (!chat) { |
|||
return res_1.failure(res, 'no chat'); |
|||
} |
|||
yield chat.update({ meta: JSON.stringify(cm) }); |
|||
} |
|||
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } }); |
|||
if (amount && typeof amount === 'number') { |
|||
yield asyncForEach(destinations, (d) => __awaiter(void 0, void 0, void 0, function* () { |
|||
if (d.type === 'node') { |
|||
if (!d.address) |
|||
return; |
|||
if (d.address.length !== 66) |
|||
return; |
|||
if (d.address === owner.publicKey) |
|||
return; // dont send to self
|
|||
const amt = Math.max(Math.round((d.split / 100) * amount), 1); |
|||
yield anonymousKeysend(owner, d.address, amt, text, function () { }, function () { }); |
|||
} |
|||
})); |
|||
} |
|||
res_1.success(res, {}); |
|||
}); |
|||
function anonymousKeysend(owner, destination_key, amount, text, onSuccess, onFailure) { |
|||
return __awaiter(this, void 0, void 0, function* () { |
|||
const msg = { |
|||
type: constants_1.default.message_types.keysend, |
|||
}; |
|||
if (text) |
|||
msg.message = { content: text }; |
|||
return helpers.performKeysendMessage({ |
|||
sender: owner, |
|||
destination_key, |
|||
amount, |
|||
msg, |
|||
success: () => { |
|||
console.log('payment sent!'); |
|||
var date = new Date(); |
|||
date.setMilliseconds(0); |
|||
models_1.models.Message.create({ |
|||
chatId: 0, |
|||
type: constants_1.default.message_types.keysend, |
|||
sender: 1, |
|||
amount, |
|||
amountMsat: amount * 1000, |
|||
paymentHash: '', |
|||
date, |
|||
messageContent: text || '', |
|||
status: constants_1.default.statuses.confirmed, |
|||
createdAt: date, |
|||
updatedAt: date |
|||
}); |
|||
onSuccess({ destination_key, amount }); |
|||
}, |
|||
failure: (error) => { |
|||
onFailure(error); |
|||
} |
|||
}); |
|||
}); |
|||
} |
|||
exports.anonymousKeysend = anonymousKeysend; |
|||
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=feed.js.map
|
@ -0,0 +1 @@ |
|||
{"version":3,"file":"feed.js","sourceRoot":"","sources":["../../../src/controllers/feed.ts"],"names":[],"mappings":"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"} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/models/ts/chat.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,IAAI,GAAzB,MAAqB,IAAK,SAAQ,4BAAW;CA2F5C,CAAA;AAnFC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;gCACQ;AAGV;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;sCACS;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;kCACZ;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;oCACV;AAGd;IADC,6BAAM;;wCACW;AAGlB;IADC,6BAAM;;qCACS;AAGhB;IADC,6BAAM;8BACI,IAAI;uCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;uCAAA;AAOf;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;qCACc;AAGhB;IADC,6BAAM;;sCACS;AAGhB;IADC,6BAAM;;6CACgB;AAGvB;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;yCACY;AAGnB;IADC,6BAAM;;6CACgB;AAGvB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACJ;AAGpB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACJ;AAOpB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;KAEpB,CAAC;;sCACe;AAGjB;IADC,6BAAM;;qCACS;AAGhB;IADC,6BAAM;;yCACY;AAOnB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;kCACW;AAGb;IADC,6BAAM;;oCACO;AAGd;IADC,6BAAM;;qCACQ;AAzFI,IAAI;IADxB,4BAAK,CAAC,EAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACjC,IAAI,CA2FxB;kBA3FoB,IAAI"} |
|||
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/models/ts/chat.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,IAAI,GAAzB,MAAqB,IAAK,SAAQ,4BAAW;CA8F5C,CAAA;AAtFC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;gCACQ;AAGV;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;sCACS;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;kCACZ;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;oCACV;AAGd;IADC,6BAAM;;wCACW;AAGlB;IADC,6BAAM;;qCACS;AAGhB;IADC,6BAAM;8BACI,IAAI;uCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;uCAAA;AAOf;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;qCACc;AAGhB;IADC,6BAAM;;sCACS;AAGhB;IADC,6BAAM;;6CACgB;AAGvB;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;yCACY;AAGnB;IADC,6BAAM;;6CACgB;AAGvB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACJ;AAGpB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACJ;AAOpB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;KAEpB,CAAC;;sCACe;AAGjB;IADC,6BAAM;;qCACS;AAGhB;IADC,6BAAM;;yCACY;AAOnB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;kCACW;AAGb;IADC,6BAAM;;oCACO;AAGd;IADC,6BAAM;;qCACQ;AAGf;IADC,6BAAM;;kCACK;AA5FO,IAAI;IADxB,4BAAK,CAAC,EAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACjC,IAAI,CA8FxB;kBA9FoB,IAAI"} |
@ -1 +1 @@ |
|||
{"version":3,"file":"contact.js","sourceRoot":"","sources":["../../../../src/models/ts/contact.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,OAAO,GAA5B,MAAqB,OAAQ,SAAQ,4BAAc;CAiElD,CAAA;AAzDC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;mCACQ;AAGV;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;sCACM;AAGb;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;;6CACc;AAGrB;IADC,6BAAM;;wCACS;AAOhB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;wCACc;AAGhB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;2CACJ;AAGlB;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;;0CACW;AAGlB;IADC,6BAAM;;kDACkB;AAGzB;IADC,6BAAM;8BACK,IAAI;2CAAA;AA/DG,OAAO;IAD3B,4BAAK,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACpC,OAAO,CAiE3B;kBAjEoB,OAAO"} |
|||
{"version":3,"file":"contact.js","sourceRoot":"","sources":["../../../../src/models/ts/contact.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,OAAO,GAA5B,MAAqB,OAAQ,SAAQ,4BAAc;CAoElD,CAAA;AA5DC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;mCACQ;AAGV;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;sCACM;AAGb;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;;6CACc;AAGrB;IADC,6BAAM;;wCACS;AAOhB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;wCACc;AAGhB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;2CACJ;AAGlB;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;;0CACW;AAGlB;IADC,6BAAM;;kDACkB;AAGzB;IADC,6BAAM;8BACK,IAAI;2CAAA;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACP;AAlEE,OAAO;IAD3B,4BAAK,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACpC,OAAO,CAoE3B;kBApEoB,OAAO"} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,115 @@ |
|||
|
|||
import {models} from '../models' |
|||
import * as helpers from '../helpers' |
|||
import { failure, success } from '../utils/res' |
|||
import constants from '../constants' |
|||
|
|||
export interface ChatMeta { |
|||
itemID: number, |
|||
timestamp: number, |
|||
sats_per_minute: number, |
|||
} |
|||
|
|||
type DestinationType = 'wallet' | 'node' |
|||
export interface Destination { |
|||
address: string |
|||
split: number |
|||
type: DestinationType |
|||
} |
|||
|
|||
export const streamFeed = async (req,res) => { |
|||
const { |
|||
destinations, |
|||
amount, |
|||
chat_id, |
|||
text |
|||
}:{ |
|||
destinations:Destination[], |
|||
amount:number, |
|||
chat_id:number, |
|||
text:string |
|||
} = req.body |
|||
|
|||
if(!(destinations && destinations.length)) { |
|||
return failure(res, 'no destinations') |
|||
} |
|||
let meta; |
|||
try { |
|||
meta = JSON.parse(text) |
|||
} catch(e) {} |
|||
if(!meta) { |
|||
return failure(res, 'no meta') |
|||
} |
|||
|
|||
if(meta && meta.itemID) { |
|||
const cm:ChatMeta = { |
|||
itemID: meta.itemID, |
|||
timestamp: meta.timestamp||0, |
|||
sats_per_minute: amount||0, |
|||
} |
|||
const chat = await models.Chat.findOne({ where: { id: chat_id } }) |
|||
if(!chat) { |
|||
return failure(res, 'no chat') |
|||
} |
|||
await chat.update({meta: JSON.stringify(cm)}) |
|||
} |
|||
|
|||
const owner = await models.Contact.findOne({ where: { isOwner: true }}) |
|||
|
|||
if(amount && typeof amount==='number') { |
|||
await asyncForEach(destinations, async (d:Destination)=>{ |
|||
if (d.type === 'node') { |
|||
if (!d.address) return |
|||
if (d.address.length !== 66) return |
|||
if (d.address===owner.publicKey) return // dont send to self
|
|||
const amt = Math.max(Math.round((d.split / 100) * amount), 1) |
|||
await anonymousKeysend(owner, d.address, amt, text, function(){}, function(){}) |
|||
} |
|||
}) |
|||
} |
|||
|
|||
success(res, {}) |
|||
} |
|||
|
|||
|
|||
export async function anonymousKeysend(owner, destination_key:string, amount:number, text:string, onSuccess:Function, onFailure:Function){ |
|||
const msg:{[k:string]:any} = { |
|||
type:constants.message_types.keysend, |
|||
} |
|||
if(text) msg.message = {content:text} |
|||
|
|||
return helpers.performKeysendMessage({ |
|||
sender:owner, |
|||
destination_key, |
|||
amount, |
|||
msg, |
|||
success: () => { |
|||
console.log('payment sent!') |
|||
var date = new Date(); |
|||
date.setMilliseconds(0) |
|||
models.Message.create({ |
|||
chatId: 0, |
|||
type: constants.message_types.keysend, |
|||
sender: 1, |
|||
amount, |
|||
amountMsat: amount*1000, |
|||
paymentHash: '', |
|||
date, |
|||
messageContent: text||'', |
|||
status: constants.statuses.confirmed, |
|||
createdAt: date, |
|||
updatedAt: date |
|||
}) |
|||
onSuccess({destination_key, amount}) |
|||
}, |
|||
failure: (error) => { |
|||
onFailure(error) |
|||
} |
|||
}) |
|||
} |
|||
|
|||
async function asyncForEach(array, callback) { |
|||
for (let index = 0; index < array.length; index++) { |
|||
await callback(array[index], index, array); |
|||
} |
|||
} |
Loading…
Reference in new issue