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;