feat: apply search release plans atomically (Closes #817)
This commit is contained in:
1 parent
9a24aff537
commit
53539e0cdf
5 files changed
+184
-25
No files matched your search
@@ -169,21 +169,14 @@
|
||||
queue:async (confirmed, context) => {
|
||||
const issuePath = 'api/v1/repos/' + confirmed.repository.split('/').map(encodeURIComponent).join('/') +
|
||||
'/issues/' + encodeURIComponent(confirmed.number);
|
||||
const milestone = await fetchJson(issuePath + '/milestone', {
|
||||
const releasePlan = await fetchJson(issuePath + '/release-plan', {
|
||||
method:'PATCH', headers:{Accept:'application/json','Content-Type':'application/json'},
|
||||
body:JSON.stringify({milestone_id:context.milestone_id}),
|
||||
body:JSON.stringify({milestone_id:context.milestone_id, due_date:context.due_date || null}),
|
||||
});
|
||||
if (milestone?.number !== confirmed.number || milestone?.milestone?.id !== context.milestone_id) {
|
||||
throw new Error('Issue milestone was not confirmed.');
|
||||
}
|
||||
if (context.due_date) {
|
||||
const deadline = await fetchJson(issuePath + '/due-date', {
|
||||
method:'PATCH', headers:{Accept:'application/json','Content-Type':'application/json'},
|
||||
body:JSON.stringify({due_date:context.due_date}),
|
||||
});
|
||||
if (deadline?.number !== confirmed.number || deadline?.due_date !== context.due_date) {
|
||||
throw new Error('Issue due date was not confirmed.');
|
||||
}
|
||||
if (releasePlan?.number !== confirmed.number ||
|
||||
releasePlan?.milestone?.id !== context.milestone_id ||
|
||||
(context.due_date && releasePlan?.due_date !== context.due_date)) {
|
||||
throw new Error('Issue release plan was not confirmed.');
|
||||
}
|
||||
return 'queued';
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user