Skip to content

Commit

Permalink
Fix rerun button of Actions (#22798)
Browse files Browse the repository at this point in the history
When clicking the return button, the page should be refreshed. However,
the browser may cancel the previous fetch request, and it fails to rerun
the job. It's easier to reproduce the bug in Safari or Firefox than
Chrome for some reason.

<img width="384" alt="image"
src="https://user-images.githubusercontent.com/9418365/217142792-a783f9a1-7089-44db-b7d8-46c46c72d284.png">


<img width="752" alt="image"
src="https://user-images.githubusercontent.com/9418365/217132406-b8381b63-b323-474e-935b-2596b1b5c046.png">
  • Loading branch information
wolfogre authored Feb 8, 2023
1 parent e8186f1 commit 7d3c4c3
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions web_src/js/components/RepoActionView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
<SvgIcon name="octicon-meter" class="ui text yellow" class-name="job-status-rotate" v-else-if="job.status === 'running'"/>
<SvgIcon name="octicon-x-circle-fill" class="red" v-else/>
{{ job.name }}
<button class="job-brief-rerun" @click="rerunJob(index)" v-if="job.canRerun">
<!-- TODO: it will be a better idea to move "button" out from "a", and the ".prevent" will not be needed. But it needs some work with CSS -->
<button class="job-brief-rerun" @click.prevent="rerunJob(index)" v-if="job.canRerun">
<SvgIcon name="octicon-sync" class="ui text black"/>
</button>
</a>
Expand Down Expand Up @@ -162,12 +163,14 @@ const sfc = {
}
},
// rerun a job
rerunJob(idx) {
this.fetch(`${this.run.link}/jobs/${idx}/rerun`);
async rerunJob(idx) {
const jobLink = `${this.run.link}/jobs/${idx}`;
await this.fetchPost(`${jobLink}/rerun`);
window.location.href = jobLink;
},
// cancel a run
cancelRun() {
this.fetch(`${this.run.link}/cancel`);
this.fetchPost(`${this.run.link}/cancel`);
},
createLogLine(line) {
Expand Down Expand Up @@ -205,7 +208,7 @@ const sfc = {
// for example: make cursor=null means the first time to fetch logs, cursor=eof means no more logs, etc
return {step: idx, cursor: it.cursor, expanded: it.expanded};
});
const resp = await this.fetch(
const resp = await this.fetchPost(
`${this.actionsURL}/runs/${this.runIndex}/jobs/${this.jobIndex}`,
JSON.stringify({logCursors}),
);
Expand Down Expand Up @@ -245,7 +248,7 @@ const sfc = {
}
},
fetch(url, body) {
fetchPost(url, body) {
return fetch(url, {
method: 'POST',
headers: {
Expand Down

0 comments on commit 7d3c4c3

Please sign in to comment.