Skip to content

Commit 6213a5c

Browse files
Revert delete modal due to Slack API timeout constraints
Remove the multi-select delete modal flow since the listServers API call can exceed Slack's 3-second trigger_id timeout. Restore original /vm delete <name> behavior. Keep all other improvements (created_at tags, dates in list, sorting). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 5138d3d commit 6213a5c

6 files changed

Lines changed: 6 additions & 173 deletions

File tree

listeners/commands/vm.js

Lines changed: 6 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import libvirt from '../../util/libvirt/libvirt-server.js';
22
import vmCreateModal from '../../user-interface/modals/vm-create.js';
3-
import vmDeleteModal from '../../user-interface/modals/vm-delete.js';
43
import buttonBuilder from '../../util/button-builder.js';
54
import { formatCreatedDate, sortByCreatedAtAsc } from '../../util/format-date.js';
65
import 'dotenv/config';
@@ -254,50 +253,14 @@ export default {
254253
case 'delete': {
255254
const serverName = args[1];
256255
if (!serverName) {
257-
// No server name — open the delete modal with multi-select
258-
const loadingResult = await app.client.views.open({
259-
trigger_id: body.trigger_id,
260-
view: {
261-
type: 'modal',
262-
callback_id: 'vm-modal-loading',
263-
title: { type: 'plain_text', text: 'Loading...' },
264-
blocks: [
265-
{
266-
type: 'section',
267-
text: { type: 'plain_text', text: 'Fetching your VMs...' }
268-
}
269-
]
270-
}
271-
});
272-
273-
const servers = [...await libvirt.listServers({ app, body })];
274-
275-
if (!servers.length) {
276-
await app.client.views.update({
277-
view_id: loadingResult.view.id,
278-
view: {
279-
type: 'modal',
280-
callback_id: 'vm-modal-empty',
281-
title: { type: 'plain_text', text: 'Delete VMs' },
282-
blocks: [
283-
{
284-
type: 'section',
285-
text: { type: 'mrkdwn', text: "You don't currently have any servers to delete." }
286-
}
287-
]
288-
}
289-
});
290-
return;
291-
}
292-
293-
await app.client.views.update({
294-
view_id: loadingResult.view.id,
295-
view: vmDeleteModal({ servers, metaData: JSON.stringify({ channel_id: event.channel_id, servers }) })
256+
await app.client.chat.postEphemeral({
257+
channel: event.channel_id,
258+
user: event.user_id,
259+
text: `Please provide a server name to delete. Usage: /${commandPrefix}vm delete <server-name>`
296260
});
297-
break;
261+
return;
298262
}
299263

300-
// Direct delete by server name (existing shortcut behavior)
301264
await app.client.chat.postEphemeral({
302265
channel: event.channel_id,
303266
user: event.user_id,
@@ -376,7 +339,7 @@ export default {
376339
await app.client.chat.postEphemeral({
377340
channel: event.channel_id,
378341
user: event.user_id,
379-
text: `Access your existing VMs with: <${process.env.GUACAMOLE_CONNECTION_URL}|Guacamole>\n\nAvailable subcommands:\n• /${commandPrefix}vm create [count] - Create one or more VMs (default: 1, max: ${MAX_VM_COUNT})\n• /${commandPrefix}vm list - List existing VMs\n• /${commandPrefix}vm start <vm name> - Start a VM\n• /${commandPrefix}vm stop <vm name> - Stop a VM\n• /${commandPrefix}vm delete - Select VMs to delete (or: /${commandPrefix}vm delete <vm name>)\n• /${commandPrefix}vm edit <vm name> - Edit a VM Description`,
342+
text: `Access your existing VMs with: <${process.env.GUACAMOLE_CONNECTION_URL}|Guacamole>\n\nAvailable subcommands:\n• /${commandPrefix}vm create [count] - Create one or more VMs (default: 1, max: ${MAX_VM_COUNT})\n• /${commandPrefix}vm list - List existing VMs\n• /${commandPrefix}vm start <vm name> - Start a VM\n• /${commandPrefix}vm stop <vm name> - Stop a VM\n• /${commandPrefix}vm delete <vm name> - Delete a VM\n• /${commandPrefix}vm edit <vm name> - Edit a VM Description`,
380343
});
381344
}
382345
}

listeners/views/index.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
import vmCreateModalCallback from './vm-create-modal.js';
22
import vmEditModalCallback from './vm-edit-modal.js';
3-
import vmDeleteModalCallback from './vm-delete-modal.js';
4-
import vmDeleteConfirmModalCallback from './vm-delete-confirm-modal.js';
53

64
export default function register(app) {
75
app.view('vm-create-modal', vmCreateModalCallback);
86
app.view('vm-edit-modal', vmEditModalCallback);
9-
app.view('vm-delete-modal', vmDeleteModalCallback);
10-
app.view('vm-delete-confirm-modal', vmDeleteConfirmModalCallback);
117
}

listeners/views/vm-delete-confirm-modal.js

Lines changed: 0 additions & 42 deletions
This file was deleted.

listeners/views/vm-delete-modal.js

Lines changed: 0 additions & 39 deletions
This file was deleted.

user-interface/modals/vm-delete-confirm.js

Lines changed: 0 additions & 19 deletions
This file was deleted.

user-interface/modals/vm-delete.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)