Skip to content

feat: add stop workspace button with confirmation dialog #18372

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

blink-so[bot]
Copy link
Contributor

@blink-so blink-so bot commented Jun 13, 2025

Summary

Adds a stop workspace button with confirmation dialog to complement the existing start button, addressing the feature request in #18298.

Changes

  • Stop Button: Added a stop workspace button with square icon that replaces the start button for running workspaces
  • Confirmation Dialog: Implemented confirmation dialog to prevent accidental workspace stops
  • State Management: Button visibility is controlled by existing workspace status logic
  • API Integration: Uses existing stopWorkspace API mutation
  • UI Consistency: Follows established patterns for workspace action buttons

Behavior

  • Stopped workspaces: Show start button (play icon)
  • Running workspaces: Show stop button (square icon)
  • Stop action: Triggers confirmation dialog before executing
  • Loading states: Button shows spinner during stop operation

Testing

  • Code passes biome quality checks
  • Follows existing TypeScript patterns
  • Uses established component patterns from the codebase

Fixes #18298

- Add stop workspace button with square icon that replaces start button for running workspaces
- Implement confirmation dialog for stop operation to prevent accidental stops
- Button shows only when workspace status allows stop action
- Uses existing stopWorkspace API mutation
- Follows existing UI patterns for workspace actions

Fixes #18298

Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Adds a stop workspace button with a confirmation dialog to complement the existing start button and prevent accidental stops.

  • Introduces a stop action button (square icon) shown for running workspaces.
  • Implements a confirmation dialog that prompts before calling the stopWorkspace mutation.
  • Leverages existing API mutation and workspace status logic for visibility and loading indicators.
Comments suppressed due to low confidence (1)

site/src/pages/WorkspacesPage/WorkspacesTable.tsx:594

  • Add tests to cover the stop workspace confirmation dialog: verify it opens on button click, displays the correct workspace name, and invokes the stopWorkspace mutation on confirm.
<ConfirmDialog

@matifali matifali marked this pull request as draft June 13, 2025 20:11
blink-so bot and others added 2 commits June 13, 2025 20:13
- Add disabled prop to PrimaryActionProps interface
- Implement disabled state in PrimaryAction component
- Apply disabled prop to stop button when stopWorkspaceMutation is pending
- Prevents accidental duplicate stop requests during operation

Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
- ConfirmDialog component doesn't accept loading prop
- Fixes TypeScript compilation error in CI
- Button disabled state still prevents duplicate clicks

Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
@matifali matifali marked this pull request as ready for review June 13, 2025 20:29
@BrunoQuaresma
Copy link
Collaborator

@matifali I'm in a rush with the website right now, so I will not have time this weeek to QA and review this PR. Maybe someone in the FE guild, can help with that in the meantime.

@BrunoQuaresma BrunoQuaresma removed their request for review June 16, 2025 12:39
@matifali matifali requested review from a team and code-asher and removed request for a team June 16, 2025 15:24
Copy link
Member

@code-asher code-asher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works, but we should remove the disabled prop and just use isLoading for disablement.

Technically it might not even be necessary as a state change removes the button, but there could be some latency where the workspace is stoping and the state has not updated on the frontend yet.

Use isLoading for button disabling instead of separate disabled prop.
This simplifies the component interface while maintaining the same
functionality - the button is disabled when loading.

Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
@code-asher
Copy link
Member

code-asher commented Jun 16, 2025

Also @matifali just to check, we have no confirmation dialog for stopping on the main workspace page (or any other actions on this table), just confirming that it was intended we add one here.

Copy link
Contributor Author

blink-so bot commented Jun 16, 2025

Good point about consistency! You're right that other actions on this page don't have confirmation dialogs.

Looking at the original feature request in #18298, it specifically mentioned wanting a confirmation dialog to prevent accidental stops. However, for consistency with the rest of the workspaces table actions, we could remove the confirmation dialog.

Would you prefer I remove the confirmation dialog to match the existing pattern, or keep it since stopping a workspace is a more disruptive action than starting one?

Remove empty line left after removing disabled prop to satisfy
biome formatter requirements.

Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
@matifali
Copy link
Member

This is a more accessible button, so IMO, there is a greater chance of hitting stop by accident, which is why I added the confirmation dialogue.

Remove the disabled prop from PrimaryActionProps interface and
component implementation since we now only use isLoading for
button disabling.

Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
Copy link
Member

@code-asher code-asher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense, also I was wrong about there being no dialogs on this table, the update action does have a confirmation prompt.

Looks good!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

feat: stop workspace button
3 participants