fix: abandoning claims

Confirmed working locally. File/claims table has outpoint. Claim was abandoned by the sdk.
This commit is contained in:
Tom 2019-05-30 14:57:47 -04:00
parent 68d2f303c1
commit dee61b5b6f
4 changed files with 36 additions and 33 deletions

View file

@ -21,17 +21,17 @@ export function getLongClaimId (host, name, modifier) {
const url = `${host}/api/claim/long-id`; const url = `${host}/api/claim/long-id`;
// return the request promise // return the request promise
return Request(url, params); return Request(url, params);
}; }
export function getShortId(host, name, claimId) { export function getShortId(host, name, claimId) {
const url = `${host}/api/claim/short-id/${claimId}/${name}`; const url = `${host}/api/claim/short-id/${claimId}/${name}`;
return Request(url); return Request(url);
}; }
export function getClaimData(host, name, claimId) { export function getClaimData(host, name, claimId) {
const url = `${host}/api/claim/data/${name}/${claimId}`; const url = `${host}/api/claim/data/${name}/${claimId}`;
return Request(url); return Request(url);
}; }
export function checkClaimAvailability(claim) { export function checkClaimAvailability(claim) {
const url = `/api/claim/availability/${claim}`; const url = `/api/claim/availability/${claim}`;
@ -43,10 +43,10 @@ export function getClaimViews (claimId) {
return Request(url); return Request(url);
} }
export function doAbandonClaim (claimId) { export function doAbandonClaim(outpoint) {
const params = { const params = {
method: 'POST', method: 'POST',
body : JSON.stringify({claimId}), body: JSON.stringify({ outpoint }),
headers: new Headers({ headers: new Headers({
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}), }),

View file

@ -7,15 +7,17 @@ import { doAbandonClaim } from '../api/assetApi';
function* abandonClaim(action) { function* abandonClaim(action) {
const { claimData, history } = action.data; const { claimData, history } = action.data;
const { claimId } = claimData; const { outpoint } = claimData;
const confirm = window.confirm('Are you sure you want to abandon this claim? This action cannot be undone.'); const confirm = window.confirm(
'Are you sure you want to abandon this claim? This action cannot be undone.'
);
if (!confirm) return; if (!confirm) return;
yield put(updatePublishStatus(publishStates.ABANDONING, 'Your claim is being abandoned...')); yield put(updatePublishStatus(publishStates.ABANDONING, 'Your claim is being abandoned...'));
try { try {
yield call(doAbandonClaim, claimId); yield call(doAbandonClaim, outpoint);
} catch (error) { } catch (error) {
return console.log('abandon error:', error.message); return console.log('abandon error:', error.message);
} }
@ -27,4 +29,4 @@ function * abandonClaim (action) {
export function* watchAbandonClaim() { export function* watchAbandonClaim() {
yield takeLatest(actions.ABANDON_CLAIM, abandonClaim); yield takeLatest(actions.ABANDON_CLAIM, abandonClaim);
}; }

View file

@ -9,28 +9,28 @@ const authenticateUser = require('../publish/authentication.js');
*/ */
const claimAbandon = async (req, res) => { const claimAbandon = async (req, res) => {
const {claimId} = req.body; const { outpoint } = req.body;
const { user } = req; const { user } = req;
try { try {
const [channel, claim] = await Promise.all([ const [channel, claim] = await Promise.all([
authenticateUser(user.channelName, null, null, user), authenticateUser(user.channelName, null, null, user),
db.Claim.findOne({where: {claimId}}), db.Claim.findOne({ where: { outpoint } }),
]); ]);
if (!claim) throw new Error('That channel does not exist'); if (!claim) throw new Error('That channel does not exist');
if (!channel.channelName) throw new Error('You don\'t own this channel'); if (!channel.channelName) throw new Error("You don't own this channel");
await abandonClaim({claimId}); await abandonClaim({ outpoint });
const file = await db.File.findOne({where: {claimId}}); const file = await db.File.findOne({ where: { outpoint } });
await Promise.all([ await Promise.all([
deleteFile(file.filePath), deleteFile(file.filePath),
db.File.destroy({where: {claimId}}), db.File.destroy({ where: { outpoint } }),
db.Claim.destroy({where: {claimId}}), db.Claim.destroy({ where: { outpoint } }),
]); ]);
logger.debug(`Claim abandoned: ${claimId}`); logger.debug(`Claim abandoned: ${outpoint}`);
res.status(200).json({ res.status(200).json({
success: true, success: true,
message: `Claim with id ${claimId} abandonded`, message: `Claim with outpoint ${outpoint} abandonded`,
}); });
} catch (error) { } catch (error) {
logger.error('abandon claim error:', error); logger.error('abandon claim error:', error);

View file

@ -73,13 +73,14 @@ module.exports = {
}); });
}); });
}, },
async abandonClaim({ claimId }) { async abandonClaim({ outpoint }) {
logger.debug(`lbryApi >> Abandon claim "${claimId}"`); logger.debug(`lbryApi >> Abandon claim "${outpoint}"`);
const gaStartTime = Date.now(); const gaStartTime = Date.now();
const [txid, nout] = outpoint.split(':');
try { try {
const abandon = await axios.post(lbrynetUri, { const abandon = await axios.post(lbrynetUri, {
method: 'claim_abandon', method: 'stream_abandon',
params: { claim_id: claimId }, params: { txid: txid, nout: Number(nout) },
}); });
sendGATimingEvent('lbrynet', 'abandonClaim', 'ABANDON_CLAIM', gaStartTime, Date.now()); sendGATimingEvent('lbrynet', 'abandonClaim', 'ABANDON_CLAIM', gaStartTime, Date.now());
return abandon.data; return abandon.data;