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

View file

@ -7,15 +7,17 @@ import { doAbandonClaim } from '../api/assetApi';
function* abandonClaim(action) {
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;
yield put(updatePublishStatus(publishStates.ABANDONING, 'Your claim is being abandoned...'));
try {
yield call(doAbandonClaim, claimId);
yield call(doAbandonClaim, outpoint);
} catch (error) {
return console.log('abandon error:', error.message);
}
@ -27,4 +29,4 @@ function * abandonClaim (action) {
export function* watchAbandonClaim() {
yield takeLatest(actions.ABANDON_CLAIM, abandonClaim);
};
}

View file

@ -9,28 +9,28 @@ const authenticateUser = require('../publish/authentication.js');
*/
const claimAbandon = async (req, res) => {
const {claimId} = req.body;
const { outpoint } = req.body;
const { user } = req;
try {
const [channel, claim] = await Promise.all([
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 (!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});
const file = await db.File.findOne({where: {claimId}});
await abandonClaim({ outpoint });
const file = await db.File.findOne({ where: { outpoint } });
await Promise.all([
deleteFile(file.filePath),
db.File.destroy({where: {claimId}}),
db.Claim.destroy({where: {claimId}}),
db.File.destroy({ where: { outpoint } }),
db.Claim.destroy({ where: { outpoint } }),
]);
logger.debug(`Claim abandoned: ${claimId}`);
logger.debug(`Claim abandoned: ${outpoint}`);
res.status(200).json({
success: true,
message: `Claim with id ${claimId} abandonded`,
message: `Claim with outpoint ${outpoint} abandonded`,
});
} catch (error) {
logger.error('abandon claim error:', error);

View file

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