refactor: hide edit button for users with no write permissions

This commit is contained in:
Carlos Valente
2026-02-19 16:00:12 +01:00
committed by Carlos Valente
parent d28895ce9c
commit 1c81b3a23c
2 changed files with 18 additions and 10 deletions
@@ -46,6 +46,7 @@ export default function CuesheetTableSettings({
handleResetReordering,
handleClearToggles,
}: CuesheetTableSettingsProps) {
const canChangeMode = useCuesheetPermissions((state) => state.canChangeMode);
const canShare = useCuesheetPermissions((state) => state.canShare);
const preset = use(PresetContext);
const options = usePersistedCuesheetOptions();
@@ -71,14 +72,20 @@ export default function CuesheetTableSettings({
handleResetReordering={handleResetReordering}
handleClearToggles={handleClearToggles}
/>
<ToggleGroup value={[cuesheetMode]} onValueChange={toggleCuesheetMode} className={cx([style.group, style.apart])}>
<Toolbar.Button render={<Toggle />} value={AppMode.Run} className={style.radioButton}>
Run
</Toolbar.Button>
<Toolbar.Button render={<Toggle />} value={AppMode.Edit} className={style.radioButton}>
Edit
</Toolbar.Button>
</ToggleGroup>
{canChangeMode && (
<ToggleGroup
value={[cuesheetMode]}
onValueChange={toggleCuesheetMode}
className={cx([style.group, style.apart])}
>
<Toolbar.Button render={<Toggle />} value={AppMode.Run} className={style.radioButton}>
Run
</Toolbar.Button>
<Toolbar.Button render={<Toggle />} value={AppMode.Edit} className={style.radioButton}>
Edit
</Toolbar.Button>
</ToggleGroup>
)}
{canShare && (
<>
+3 -2
View File
@@ -165,8 +165,9 @@ test.describe('Sharing from cuesheet', () => {
await expect(page.getByTestId('navigation__toggle-settings')).toBeHidden();
await expect(page.getByRole('button', { name: 'Share...' })).toBeHidden();
// check that we are locked and cannot edit
await page.getByRole('button', { name: 'Edit' }).click();
// mode toggle should not be rendered for readonly users
await expect(page.getByRole('button', { name: 'Edit' })).toHaveCount(0);
await expect(page.getByRole('button', { name: 'Run' })).toHaveCount(0);
// Verify that the title is visible but not editable
await expect(page.getByTestId('cuesheet-event').getByText('title 1')).toBeVisible();