update: added recipient pubkey to bot pay api

This commit is contained in:
Oluwatobi Bamidele 2024-02-02 22:04:34 +01:00
parent 70667d583d
commit fbe3d5b294
5 changed files with 55 additions and 10 deletions

File diff suppressed because one or more lines are too long

View file

@ -21,10 +21,10 @@ 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, content, } = a;
const { amount, bot_name, msg_uuid, reply_uuid, recipient_id, parent_id, content, recipient_pubkey, } = a;
logger_1.sphinxLogger.info(`=> BOT PAY ${JSON.stringify(a, null, 2)}`);
if (!a.recipient_id)
return logger_1.sphinxLogger.error(`no recipient_id`);
if (!recipient_id && !recipient_pubkey)
return logger_1.sphinxLogger.error(`no recipient detail`);
const ret = yield (0, index_1.validateAction)(a);
if (!ret)
return;
@ -35,6 +35,26 @@ function pay(a) {
const encryptedForMeText = rsa.encrypt(owner.contactKey, content || '');
const encryptedText = rsa.encrypt(chat.groupKey, content || '');
const textMap = { chat: encryptedText };
let recipient_detail;
if (recipient_pubkey) {
try {
const user = (yield models_1.models.Contact.findOne({
where: { tenant, publicKey: recipient_pubkey },
}));
if (!user) {
logger_1.sphinxLogger.error(`=> RECIPIENT PUBKEY DOES NOT EXIST IN ADMIN RECORD`, logger_1.logging.Bots);
return;
}
recipient_detail = user.id;
}
catch (error) {
logger_1.sphinxLogger.error(`=> RECIPIENT PUBKEY ERROR ${error}`, logger_1.logging.Bots);
return;
}
}
else {
recipient_detail = recipient_id;
}
const date = new Date();
date.setMilliseconds(0);
const msg = Object.assign({ chatId: chat.id, uuid: msg_uuid || short.generate(), type: reply_uuid
@ -77,7 +97,7 @@ function pay(a) {
return logger_1.sphinxLogger.error(e);
}),
isForwarded: true,
realSatsContactId: recipient_id,
realSatsContactId: recipient_detail,
});
});
}

View file

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

View file

@ -49,6 +49,7 @@ export interface Action {
only_owner?: boolean
only_user?: number
only_pubkey?: string
recipient_pubkey?: string
}
export async function processWebhook(req: Req, res: Res): Promise<void> {

View file

@ -1,10 +1,10 @@
import * as short from 'short-uuid'
import * as network from '../../network'
import { models, Message } from '../../models'
import { models, Message, ContactRecord } from '../../models'
import * as jsonUtils from '../../utils/json'
import * as socket from '../../utils/socket'
import constants from '../../constants'
import { sphinxLogger } from '../../utils/logger'
import { logging, sphinxLogger } from '../../utils/logger'
import { errMsgString } from '../../utils/errMsgString'
import * as rsa from '../../crypto/rsa'
import { Action, validateAction } from './index'
@ -18,10 +18,12 @@ export default async function pay(a: Action): Promise<void> {
recipient_id,
parent_id,
content,
recipient_pubkey,
} = a
sphinxLogger.info(`=> BOT PAY ${JSON.stringify(a, null, 2)}`)
if (!a.recipient_id) return sphinxLogger.error(`no recipient_id`)
if (!recipient_id && !recipient_pubkey)
return sphinxLogger.error(`no recipient detail`)
const ret = await validateAction(a)
if (!ret) return
const { chat, owner } = ret
@ -31,6 +33,28 @@ export default async function pay(a: Action): Promise<void> {
const encryptedForMeText = rsa.encrypt(owner.contactKey, content || '')
const encryptedText = rsa.encrypt(chat.groupKey, content || '')
const textMap = { chat: encryptedText }
let recipient_detail
if (recipient_pubkey) {
try {
const user = (await models.Contact.findOne({
where: { tenant, publicKey: recipient_pubkey },
})) as ContactRecord
if (!user) {
sphinxLogger.error(
`=> RECIPIENT PUBKEY DOES NOT EXIST IN ADMIN RECORD`,
logging.Bots
)
return
}
recipient_detail = user.id
} catch (error) {
sphinxLogger.error(`=> RECIPIENT PUBKEY ERROR ${error}`, logging.Bots)
return
}
} else {
recipient_detail = recipient_id
}
const date = new Date()
date.setMilliseconds(0)
@ -96,6 +120,6 @@ export default async function pay(a: Action): Promise<void> {
return sphinxLogger.error(e)
},
isForwarded: true,
realSatsContactId: recipient_id,
realSatsContactId: recipient_detail,
})
}