Merge pull request #800 from stakwork/fix/pay-by-bot

Fix/pay by bot
This commit is contained in:
Evan Feenstra 2024-01-30 12:53:08 -08:00 committed by GitHub
commit fc11ae7e18
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 46 additions and 22 deletions

View file

@ -17,10 +17,11 @@ const socket = require("../../utils/socket");
const constants_1 = require("../../constants");
const logger_1 = require("../../utils/logger");
const errMsgString_1 = require("../../utils/errMsgString");
const rsa = require("../../crypto/rsa");
const index_1 = require("./index");
function pay(a) {
return __awaiter(this, void 0, void 0, function* () {
const { amount, bot_name, msg_uuid, reply_uuid, recipient_id, parent_id } = a;
const { amount, bot_name, msg_uuid, reply_uuid, recipient_id, parent_id, content, } = a;
logger_1.sphinxLogger.info(`=> BOT PAY ${JSON.stringify(a, null, 2)}`);
if (!a.recipient_id)
return logger_1.sphinxLogger.error(`no recipient_id`);
@ -31,27 +32,24 @@ function pay(a) {
const tenant = owner.id;
const alias = bot_name || owner.alias;
const botContactId = -1;
const encryptedForMeText = rsa.encrypt(owner.contactKey, content || '');
const encryptedText = rsa.encrypt(chat.groupKey, content || '');
const textMap = { chat: encryptedText };
const date = new Date();
date.setMilliseconds(0);
const msg = {
chatId: chat.id,
uuid: msg_uuid || short.generate(),
type: constants_1.default.message_types.boost,
sender: botContactId,
amount: amount || 0,
date: date,
status: constants_1.default.statuses.confirmed,
replyUuid: reply_uuid || '',
createdAt: date,
updatedAt: date,
senderAlias: alias,
tenant,
};
const msg = Object.assign({ chatId: chat.id, uuid: msg_uuid || short.generate(), type: reply_uuid
? constants_1.default.message_types.boost
: constants_1.default.message_types.direct_payment, sender: botContactId, amount: amount || 0, date: date, status: constants_1.default.statuses.confirmed, replyUuid: reply_uuid || '', createdAt: date, updatedAt: date, senderAlias: alias, tenant }, (reply_uuid
? {}
: {
messageContent: encryptedForMeText,
remoteMessageContent: JSON.stringify(textMap),
}));
if (parent_id)
msg.parentId = parent_id;
const message = (yield models_1.models.Message.create(msg));
socket.sendJson({
type: 'boost',
type: reply_uuid ? 'boost' : 'direct_payment',
response: jsonUtils.messageToJson(message, chat, owner),
}, tenant);
yield network.sendMessage({
@ -65,7 +63,10 @@ function pay(a) {
replyUuid: message.replyUuid,
parentId: message.parentId || 0,
},
type: constants_1.default.message_types.boost,
amount: amount || 0,
type: reply_uuid
? constants_1.default.message_types.boost
: constants_1.default.message_types.direct_payment,
success: () => ({ success: true }),
failure: (e) => __awaiter(this, void 0, void 0, function* () {
const errorMsg = (0, errMsgString_1.errMsgString)(e);

View file

@ -1 +1 @@
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../../src/controllers/botapi/pay.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,oCAAmC;AACnC,yCAAwC;AACxC,yCAA8C;AAC9C,8CAA6C;AAC7C,6CAA4C;AAC5C,+CAAuC;AACvC,+CAAiD;AACjD,2DAAuD;AACvD,mCAAgD;AAEhD,SAA8B,GAAG,CAAC,CAAS;;QACzC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;QAE7E,qBAAY,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QAC7D,IAAI,CAAC,CAAC,CAAC,YAAY;YAAE,OAAO,qBAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACjE,MAAM,GAAG,GAAG,MAAM,IAAA,sBAAc,EAAC,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAA;QAC3B,MAAM,MAAM,GAAW,KAAK,CAAC,EAAE,CAAA;QAC/B,MAAM,KAAK,GAAG,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAA;QACrC,MAAM,YAAY,GAAG,CAAC,CAAC,CAAA;QAEvB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,GAAG,GAA4C;YACnD,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClC,IAAI,EAAE,mBAAS,CAAC,aAAa,CAAC,KAAK;YACnC,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,MAAM,IAAI,CAAC;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,mBAAS,CAAC,QAAQ,CAAC,SAAS;YACpC,SAAS,EAAE,UAAU,IAAI,EAAE;YAC3B,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,KAAK;YAClB,MAAM;SACP,CAAA;QACD,IAAI,SAAS;YAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAA;QACvC,MAAM,OAAO,GAAY,CAAC,MAAM,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAY,CAAA;QACtE,MAAM,CAAC,QAAQ,CACb;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;SACxD,EACD,MAAM,CACP,CAAA;QAED,MAAM,OAAO,CAAC,WAAW,CAAC;YACxB,IAAI,EAAE,IAAW;YACjB,MAAM,kCACD,KAAK,CAAC,UAAU,KACnB,KAAK,EACL,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,mBAAS,CAAC,UAAU,CAAC,KAAK,GACjC;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;aAChC;YACD,IAAI,EAAE,mBAAS,CAAC,aAAa,CAAC,KAAK;YACnC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAClC,OAAO,EAAE,CAAO,CAAC,EAAE,EAAE;gBACnB,MAAM,QAAQ,GAAG,IAAA,2BAAY,EAAC,CAAC,CAAC,CAAA;gBAChC,MAAM,OAAO,CAAC,MAAM,CAAC;oBACnB,YAAY,EAAE,QAAQ;oBACtB,MAAM,EAAE,mBAAS,CAAC,QAAQ,CAAC,MAAM;iBAClC,CAAC,CAAA;gBACF,OAAO,qBAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC9B,CAAC,CAAA;YACD,WAAW,EAAE,IAAI;YACjB,iBAAiB,EAAE,YAAY;SAChC,CAAC,CAAA;IACJ,CAAC;CAAA;AAnED,sBAmEC"}
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../../src/controllers/botapi/pay.ts"],"names":[],"mappings":"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"}

View file

@ -6,10 +6,19 @@ import * as socket from '../../utils/socket'
import constants from '../../constants'
import { sphinxLogger } from '../../utils/logger'
import { errMsgString } from '../../utils/errMsgString'
import * as rsa from '../../crypto/rsa'
import { Action, validateAction } from './index'
export default async function pay(a: Action): Promise<void> {
const { amount, bot_name, msg_uuid, reply_uuid, recipient_id, parent_id } = a
const {
amount,
bot_name,
msg_uuid,
reply_uuid,
recipient_id,
parent_id,
content,
} = a
sphinxLogger.info(`=> BOT PAY ${JSON.stringify(a, null, 2)}`)
if (!a.recipient_id) return sphinxLogger.error(`no recipient_id`)
@ -19,13 +28,18 @@ export default async function pay(a: Action): Promise<void> {
const tenant: number = owner.id
const alias = bot_name || owner.alias
const botContactId = -1
const encryptedForMeText = rsa.encrypt(owner.contactKey, content || '')
const encryptedText = rsa.encrypt(chat.groupKey, content || '')
const textMap = { chat: encryptedText }
const date = new Date()
date.setMilliseconds(0)
const msg: { [k: string]: string | number | Date } = {
chatId: chat.id,
uuid: msg_uuid || short.generate(),
type: constants.message_types.boost,
type: reply_uuid
? constants.message_types.boost
: constants.message_types.direct_payment,
sender: botContactId, // tribe owner is escrow holder
amount: amount || 0,
date: date,
@ -35,12 +49,18 @@ export default async function pay(a: Action): Promise<void> {
updatedAt: date,
senderAlias: alias,
tenant,
...(reply_uuid
? {}
: {
messageContent: encryptedForMeText,
remoteMessageContent: JSON.stringify(textMap),
}),
}
if (parent_id) msg.parentId = parent_id
const message: Message = (await models.Message.create(msg)) as Message
socket.sendJson(
{
type: 'boost',
type: reply_uuid ? 'boost' : 'direct_payment',
response: jsonUtils.messageToJson(message, chat, owner),
},
tenant
@ -62,7 +82,10 @@ export default async function pay(a: Action): Promise<void> {
replyUuid: message.replyUuid,
parentId: message.parentId || 0,
},
type: constants.message_types.boost,
amount: amount || 0,
type: reply_uuid
? constants.message_types.boost
: constants.message_types.direct_payment,
success: () => ({ success: true }),
failure: async (e) => {
const errorMsg = errMsgString(e)