diff --git a/react/components/ShowAsset/index.js b/react/components/ShowAsset/index.js
new file mode 100644
index 00000000..63d2021b
--- /dev/null
+++ b/react/components/ShowAsset/index.js
@@ -0,0 +1,106 @@
+import React from 'react';
+import ShowLite from 'components/ShowLite';
+import ShowDetails from 'components/ShowDetails';
+import request from 'utils/request';
+
+class ShowAsset extends React.Component {
+ constructor (props) {
+ super(props);
+ this.state = {
+ claimData: null,
+ error : null,
+ };
+ this.getLongClaimId = this.getLongClaimId.bind(this);
+ this.getClaimData = this.getClaimData.bind(this);
+ }
+ componentDidMount () {
+ console.log('ShowAsset did mount');
+ console.log('ShowAsset props', this.props);
+ let body = {};
+ if (this.props.identifier) {
+ if (this.props.identifier.isChannel) {
+ body['channelName'] = this.props.identifier.channelName;
+ body['channelClaimId'] = this.props.identifier.channelClaimId;
+ } else {
+ body['claimId'] = this.props.identifier.claimId;
+ }
+ }
+ if (this.props.claim) {
+ body['claimName'] = this.props.claim.claimName;
+ }
+ const params = {
+ method : 'POST',
+ headers: new Headers({
+ 'Content-Type': 'application/json',
+ }),
+ body: JSON.stringify(body),
+ }
+ const that = this;
+ this.getLongClaimId(params)
+ .then(claimLongId => {
+ return that.getClaimData(this.props.claim.claimName, claimLongId);
+ })
+ .then(claimData => {
+ this.setState({ claimData });
+ })
+ .catch(error => {
+ this.setState({error});
+ });
+ }
+ getLongClaimId (params) {
+ const url = `/api/claim-get-long-id`;
+ console.log('params:', params);
+ return new Promise((resolve, reject) => {
+ request(url, params)
+ .then(({ success, message }) => {
+ console.log('get long claim id response:', message);
+ if (!success) {
+ reject(message);
+ }
+ resolve(message);
+ })
+ .catch((error) => {
+ reject(error.message);
+ });
+ });
+ }
+ getClaimData (claimName, claimId) {
+ return new Promise((resolve, reject) => {
+ const url = `/api/claim-get-data/${claimName}/${claimId}`;
+ return request(url)
+ .then(({ success, message }) => {
+ console.log('get claim data response:', message);
+ if (!success) {
+ reject(message);
+ }
+ resolve(message);
+ })
+ .catch((error) => {
+ reject(error.message);
+ });
+ });
+ }
+ render () {
+ if (this.props.isServeRequest) {
+ return (
+
{this.props.error}
+ } + {this.props.claimData && +{this.state.error}
+ {this.props.error && +{this.props.error}
} - {this.state.claimData && + {this.props.claimData &&Loading...
); } }; diff --git a/routes/api-routes.js b/routes/api-routes.js index dc63a44b..57f1c629 100644 --- a/routes/api-routes.js +++ b/routes/api-routes.js @@ -9,9 +9,10 @@ const { createPublishParams, parsePublishApiRequestBody, parsePublishApiRequestF const errorHandlers = require('../helpers/errorHandlers.js'); const { sendGoogleAnalyticsTiming } = require('../helpers/statsHelpers.js'); const { authenticateIfNoUserToken } = require('../auth/authentication.js'); -const { getChannelViewData } = require('../controllers/serveController.js'); +const { getChannelViewData, getClaimId } = require('../controllers/serveController.js'); const NO_CHANNEL = 'NO_CHANNEL'; +const NO_CLAIM = 'NO_CLAIM'; module.exports = (app) => { // route to run a claim_list request on the daemon @@ -205,16 +206,21 @@ module.exports = (app) => { errorHandlers.handleApiError(originalUrl, ip, error, res); }); }); - app.get('/api/claim-get-long-id/:claimName/:claimId', ({ ip, originalUrl, body, params }, res) => { - const claimName = params.claimName; - let claimId = params.claimId; - if (claimId === 'none') claimId = null; - db.Claim.getLongClaimId(claimName, claimId) - .then(longId => { - if (!longId) { + app.post('/api/claim-get-long-id', ({ ip, originalUrl, body, params }, res) => { + logger.debug('body:', body); + const channelName = body.channelName; + const channelClaimId = body.channelClaimId; + const claimName = body.claimName; + const claimId = body.claimId; + getClaimId(channelName, channelClaimId, claimName, claimId) + .then(result => { + if (result === NO_CHANNEL) { + return res.status(200).json({success: false, message: 'No matching channel could be found'}); + } + if (result === NO_CLAIM) { return res.status(200).json({success: false, message: 'No matching claim id could be found'}); } - res.status(200).json({success: true, message: longId}); + res.status(200).json({success: true, message: result}); }) .catch(error => { logger.error('api error getting long claim id', error);