aozhiwei 03446bbb3b d1
2022-08-02 17:01:08 +08:00

66 lines
1.7 KiB
JavaScript

const ethUtil = require('ethereumjs-util');
const sigUtil = require('@metamask/eth-sig-util');
const app = require('j7/app');
const utils = require('j7/utils');
const bcutils = require('j7/bcutils');
const bc = require('../blockchain');
const metaFactory = require('../metadata/factory');
async function isValidItem(session) {
const itemId = session.request('item_id');
const itemMeta = metaFactory.getMetaByKey('Item', itemId);
if (!itemMeta) {
session.rspErr(1, 'is not nft');
return;
}
if (itemMeta.getNftType() == bcutils.NONE_TYPE) {
session.rspErr(1, 'is not nft');
return;
}
session.rspOk();
}
async function isValidAccount(session) {
const account = session.request('account');
const valid = bc.isAddress(account);
if (!valid) {
session.rspErr(1, 'is invalid account');
return;
}
session.rspOk();
}
async function presentItem(session) {
const {err, conn} = await app.getDbConn('MarketDb0');
if (err) {
session.rspErr(1, 'is invalid account');
return;
}
const account = bcutils.toNormalAddress(session.request('account'));
const itemId = session.request('item_id');
const itemMeta = metaFactory.getMetaByKey('Item', itemId);
if (!itemMeta) {
session.rspErr(1, 'is not nft');
return;
}
if (itemMeta.getNftType() == bcutils.NONE_TYPE) {
session.rspErr(1, 'is not nft');
return;
}
const valid = bc.isAddress(account);
if (!valid) {
session.rspErr(2, 'is invalid account');
return;
}
session.rspOk();
}
function init() {
app.registerHandler('BcService', 'isValidAccount', isValidAccount);
app.registerHandler('BcService', 'isValidItem', isValidItem);
app.registerHandler('BcService', 'presentItem', presentItem);
}
exports.init = init;