Add issue ready and delete actions
Build / build (push) Successful in 11s

This commit is contained in:
2026-07-17 17:22:08 -05:00
parent 89790fa9d7
commit 6cfe9a96e2
9 changed files with 134 additions and 15 deletions
+30 -6
View File
@@ -319,6 +319,8 @@ function renderScreenshotList(screenshots: ScreenshotAttachment[], deleteAction:
}
function renderIssueRows(issues: GiteaIssueSummary[], selectedIssueNumber: number | null): string {
const state = appStore.getState();
if (!issues.length) {
return `<div class="empty-state">No issues found for this repo.</div>`;
}
@@ -328,12 +330,16 @@ function renderIssueRows(issues: GiteaIssueSummary[], selectedIssueNumber: numbe
${issues
.map(
(issue) => `
<button class="issue-row" type="button" data-select-issue="${issue.number}" data-selected="${issue.number === selectedIssueNumber ? "true" : "false"}">
<span class="issue-number">#${issue.number}</span>
<span class="issue-title">${escapeHtml(issue.title)}</span>
<span class="issue-state">${escapeHtml(issue.state)}</span>
<span class="issue-meta">${formatDate(issue.updatedAt)}</span>
</button>
<div class="issue-row" data-selected="${issue.number === selectedIssueNumber ? "true" : "false"}">
<button class="issue-select-button" type="button" data-select-issue="${issue.number}">
<span class="issue-number">#${issue.number}</span>
<span class="issue-title">${escapeHtml(issue.title)}</span>
<span class="issue-state">${escapeHtml(issue.state)}</span>
<span class="issue-meta">${formatDate(issue.updatedAt)}</span>
</button>
<button class="secondary-button compact-button" type="button" data-ready-issue="${issue.number}" ${state.isUpdatingIssue ? "disabled" : ""}>Ready</button>
<button class="danger-button compact-button" type="button" data-delete-issue="${issue.number}" ${state.isUpdatingIssue ? "disabled" : ""}>Delete</button>
</div>
`
)
.join("")}
@@ -563,6 +569,24 @@ function bindViewActions(): void {
});
});
viewContent?.querySelectorAll<HTMLButtonElement>("[data-ready-issue]").forEach((button) => {
button.addEventListener("click", () => {
const issueNumber = Number(button.dataset.readyIssue);
if (Number.isFinite(issueNumber)) {
void appStore.getState().markIssueReady(issueNumber);
}
});
});
viewContent?.querySelectorAll<HTMLButtonElement>("[data-delete-issue]").forEach((button) => {
button.addEventListener("click", () => {
const issueNumber = Number(button.dataset.deleteIssue);
if (Number.isFinite(issueNumber) && window.confirm(`Delete issue #${issueNumber}?`)) {
void appStore.getState().deleteIssue(issueNumber);
}
});
});
viewContent?.querySelector<HTMLButtonElement>("#refresh-target-issues")?.addEventListener("click", () => {
void appStore.getState().loadTargetIssues(true);
});