Add dashboard inbox decline and dismiss actions
Add dashboard inbox decline and dismiss actions
This commit is contained in:
@@ -390,15 +390,15 @@ function readTaskForm(
|
||||
}
|
||||
|
||||
function inboxActionsFor(item: InboxItem): DashboardInboxAction[] {
|
||||
if (item.source !== 'paired-task') return [];
|
||||
if (
|
||||
item.kind === 'reviewer-request' ||
|
||||
item.kind === 'approval' ||
|
||||
item.kind === 'arbiter-request'
|
||||
item.source === 'paired-task' &&
|
||||
(item.kind === 'reviewer-request' ||
|
||||
item.kind === 'approval' ||
|
||||
item.kind === 'arbiter-request')
|
||||
) {
|
||||
return ['run'];
|
||||
return ['run', 'decline', 'dismiss'];
|
||||
}
|
||||
return [];
|
||||
return ['dismiss'];
|
||||
}
|
||||
|
||||
function inboxActionLabel(
|
||||
@@ -406,7 +406,8 @@ function inboxActionLabel(
|
||||
action: DashboardInboxAction,
|
||||
t: Messages,
|
||||
): string {
|
||||
if (action !== 'run') return action;
|
||||
if (action === 'dismiss') return t.inbox.actions.dismiss;
|
||||
if (action === 'decline') return t.inbox.actions.decline;
|
||||
if (item.kind === 'reviewer-request') return t.inbox.actions.runReview;
|
||||
if (item.kind === 'approval') return t.inbox.actions.finalize;
|
||||
if (item.kind === 'arbiter-request') return t.inbox.actions.runArbiter;
|
||||
@@ -1785,10 +1786,21 @@ function App() {
|
||||
item: InboxItem,
|
||||
action: DashboardInboxAction,
|
||||
) {
|
||||
if (
|
||||
action === 'decline' &&
|
||||
typeof window !== 'undefined' &&
|
||||
!window.confirm(t.inbox.actions.confirmDecline)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
const actionKey: InboxActionKey = `${item.id}:${action}`;
|
||||
setInboxActionKey(actionKey);
|
||||
try {
|
||||
await runInboxAction(item.id, action);
|
||||
await runInboxAction(item.id, action, {
|
||||
lastOccurredAt: item.lastOccurredAt,
|
||||
requestId: makeClientRequestId(),
|
||||
});
|
||||
await refresh(false);
|
||||
} catch (err) {
|
||||
setError(err instanceof Error ? err.message : String(err));
|
||||
|
||||
@@ -101,7 +101,7 @@ export interface DashboardTask {
|
||||
}
|
||||
|
||||
export type DashboardTaskAction = 'pause' | 'resume' | 'cancel';
|
||||
export type DashboardInboxAction = 'run';
|
||||
export type DashboardInboxAction = 'run' | 'decline' | 'dismiss';
|
||||
export type DashboardTaskScheduleType = 'cron' | 'interval' | 'once';
|
||||
export type DashboardTaskContextMode = 'group' | 'isolated';
|
||||
|
||||
@@ -214,15 +214,21 @@ export async function updateScheduledTask(
|
||||
export async function runInboxAction(
|
||||
inboxId: string,
|
||||
action: DashboardInboxAction,
|
||||
options: { requestId?: string; lastOccurredAt?: string } = {},
|
||||
): Promise<{
|
||||
ok: true;
|
||||
id: string;
|
||||
taskId: string;
|
||||
intentKind: string;
|
||||
queued: boolean;
|
||||
taskId?: string;
|
||||
intentKind?: string;
|
||||
status?: string;
|
||||
queued?: boolean;
|
||||
dismissed?: boolean;
|
||||
duplicate?: boolean;
|
||||
}> {
|
||||
return postJson(`/api/inbox/${encodeURIComponent(inboxId)}/actions`, {
|
||||
action,
|
||||
lastOccurredAt: options.lastOccurredAt,
|
||||
requestId: options.requestId,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -110,6 +110,9 @@ export interface Messages {
|
||||
runReview: string;
|
||||
finalize: string;
|
||||
runArbiter: string;
|
||||
decline: string;
|
||||
dismiss: string;
|
||||
confirmDecline: string;
|
||||
};
|
||||
};
|
||||
rooms: {
|
||||
@@ -358,6 +361,9 @@ export const messages = {
|
||||
runReview: 'Run review',
|
||||
finalize: 'Finalize',
|
||||
runArbiter: 'Run arbiter',
|
||||
decline: 'Decline',
|
||||
dismiss: 'Dismiss',
|
||||
confirmDecline: 'Decline this item?',
|
||||
},
|
||||
},
|
||||
rooms: {
|
||||
@@ -590,6 +596,9 @@ export const messages = {
|
||||
runReview: 'Run review',
|
||||
finalize: 'Finalize',
|
||||
runArbiter: 'Run arbiter',
|
||||
decline: 'Decline',
|
||||
dismiss: 'Dismiss',
|
||||
confirmDecline: 'Decline this item?',
|
||||
},
|
||||
},
|
||||
rooms: {
|
||||
@@ -822,6 +831,9 @@ export const messages = {
|
||||
runReview: '运行评审',
|
||||
finalize: '完成',
|
||||
runArbiter: '运行仲裁',
|
||||
decline: '拒绝',
|
||||
dismiss: '忽略',
|
||||
confirmDecline: '确认拒绝此项?',
|
||||
},
|
||||
},
|
||||
rooms: {
|
||||
@@ -1054,6 +1066,9 @@ export const messages = {
|
||||
runReview: 'レビュー実行',
|
||||
finalize: 'Finalize',
|
||||
runArbiter: '仲裁実行',
|
||||
decline: '拒否',
|
||||
dismiss: '非表示',
|
||||
confirmDecline: 'この項目を拒否しますか?',
|
||||
},
|
||||
},
|
||||
rooms: {
|
||||
|
||||
Reference in New Issue
Block a user