diff --git a/messages/de.json b/messages/de.json index e512b12..d0ffa6a 100644 --- a/messages/de.json +++ b/messages/de.json @@ -292,7 +292,7 @@ "reportRejected": "Slack hat die Nachricht abgelehnt.", "messageDeleted": "Die Nachricht ist in Slack gelöscht.", "runUnknown": "Diesen Lauf gibt es nicht.", - "runNotDeletable": "Dieser Lauf ging über den Webhook, dafür gibt es keine Nachrichtenkennung.", + "runNotDeletable": "Diese Nachricht kam vom Webhook. Slack erlaubt dem Bot nur zu löschen, was er selbst gepostet hat.", "runNoToken": "Ohne Bot-Token lässt sich in Slack nichts löschen.", "runDeleteFailed": "Slack hat das Löschen abgelehnt.", "tokenInvalid": "Ein Bot-Token beginnt mit xoxb oder xoxp.", @@ -769,7 +769,7 @@ "messageDelete": "In Slack löschen", "messageDeleting": "Wird gelöscht", "messageDeleted": "Gelöscht", - "messageWebhook": "Über Webhook, Kennung wird gesucht", + "messageWebhook": "Über Webhook, nur in Slack löschbar", "pathBot": "Versand über den Bot-Token. Nachrichten lassen sich hier wieder löschen.", "pathWebhook": "Versand über den Webhook. Nachrichten lassen sich danach nicht mehr löschen, dafür braucht es einen Bot-Token.", "pathNone": "Noch kein Weg hinterlegt, es geht nichts raus.", diff --git a/messages/en.json b/messages/en.json index 6bd2460..46ccf10 100644 --- a/messages/en.json +++ b/messages/en.json @@ -292,7 +292,7 @@ "reportRejected": "Slack rejected the message.", "messageDeleted": "The message is deleted in Slack.", "runUnknown": "That run does not exist.", - "runNotDeletable": "That run went through the webhook, so there is no message id.", + "runNotDeletable": "That message came from the webhook. Slack only lets the bot delete what it posted itself.", "runNoToken": "Without a bot token nothing can be deleted in Slack.", "runDeleteFailed": "Slack refused the deletion.", "tokenInvalid": "A bot token starts with xoxb or xoxp.", @@ -769,7 +769,7 @@ "messageDelete": "Delete in Slack", "messageDeleting": "Deleting", "messageDeleted": "Deleted", - "messageWebhook": "Sent by webhook, id will be looked up", + "messageWebhook": "Sent by webhook, only deletable in Slack", "pathBot": "Sending through the bot token. Messages can be deleted from here.", "pathWebhook": "Sending through the webhook. Messages cannot be deleted afterwards, that needs a bot token.", "pathNone": "No route stored yet, nothing goes out.", diff --git a/src/app/admin/settings/page.tsx b/src/app/admin/settings/page.tsx index 5c6a7dd..40d48a9 100644 --- a/src/app/admin/settings/page.tsx +++ b/src/app/admin/settings/page.tsx @@ -126,9 +126,13 @@ export default async function AdminSettingsPage() { {run.deletedAt ? t('messageDeleted') - : run.sent && canDelete - ? - : run.sent ? t('messageNoToken') : '-'} + : !run.sent + ? '-' + : !run.messageTs + ? t('messageWebhook') + : canDelete + ? + : t('messageNoToken')} ))} diff --git a/src/lib/admin-settings.ts b/src/lib/admin-settings.ts index 1d47088..e940396 100644 --- a/src/lib/admin-settings.ts +++ b/src/lib/admin-settings.ts @@ -120,6 +120,10 @@ export async function performDeleteMessage(viewer: Viewer, formData: FormData): return invalid('runNotSent') } + if (!run.messageTs) { + return invalid('runNotDeletable') + } + const values = await readSettings(['slack.botToken', 'slack.channel']) const token = values.get('slack.botToken')?.trim() const channel = run.channel ?? values.get('slack.channel')?.trim()