85 lines
2.0 KiB
JavaScript
85 lines
2.0 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(500, 'server internal error');
|
|
return;
|
|
}
|
|
const account = bcutils.toNormalAddress(session.request('account'));
|
|
const uniKey = session.request('unikey');
|
|
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;
|
|
}
|
|
|
|
{
|
|
const {err, row} = await conn.ormSelectOne(
|
|
't_mint',
|
|
[
|
|
['unikey', uniKey],
|
|
]
|
|
);
|
|
if (err) {
|
|
session.rspErr(500, 'server internal error');
|
|
return;
|
|
}
|
|
if (row) {
|
|
session.rspOk();
|
|
return;
|
|
}
|
|
}
|
|
|
|
session.rspOk();
|
|
}
|
|
|
|
function init() {
|
|
app.registerHandler('BcService', 'isValidAccount', isValidAccount);
|
|
app.registerHandler('BcService', 'isValidItem', isValidItem);
|
|
app.registerHandler('BcService', 'presentItem', presentItem);
|
|
}
|
|
|
|
exports.init = init;
|