Skip to content

Commit 70b69a2

Browse files
authored
fix(kernel-ui): make Revoke button refresh object registry (#558)
Corrects an issue with the object registry's Revoke button, where although the underlying kernel state was properly updated, the registry was not updated upon successful revocation and the UI did not reflect the change until reload.
1 parent f46a6fa commit 70b69a2

4 files changed

Lines changed: 30 additions & 24 deletions

File tree

packages/extension/test/e2e/object-registry.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,12 @@ test.describe('Object Registry', () => {
7373
let response = await sendMessage(popupPage, target, method, params);
7474
await expect(response).toContainText(/body(.+):(.+)hello(.+)from(.+)Bob/u);
7575

76-
response = await revokeObject(popupPage, owner, target);
77-
await expect(response).toContainText(`Revoked object ${target}`);
76+
const { button, output } = await revokeObject(popupPage, owner, target);
77+
await expect(output).toContainText(`Revoked object ${target}`);
78+
79+
// After revoking, the revoke button should be disabled and show "Revoked"
80+
await expect(button).toBeDisabled();
81+
await expect(button).toHaveText('Revoked');
7882

7983
// After revoking, the previously successful message should fail
8084
response = await sendMessage(popupPage, target, method, params);

packages/extension/test/e2e/object-registry.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Page, Expect } from 'playwright/test';
1+
import type { Page, Expect, Locator } from 'playwright/test';
22

33
export const openObjectRegistryTab = async (
44
page: Page,
@@ -27,10 +27,11 @@ export const revokeObject = async (
2727
page: Page,
2828
owner: string,
2929
target: string,
30-
) => {
30+
): Promise<{ button: Locator; output: Locator }> => {
3131
await page
3232
.locator(`.accordion-header:has(.accordion-title:text("${owner}"))`)
3333
.click();
34-
await page.locator(`[data-testid="revoke-button-${target}"]`).click();
35-
return page.locator('[data-testid="message-output"]');
34+
const button = page.locator(`[data-testid="revoke-button-${target}"]`);
35+
await button.click();
36+
return { button, output: page.locator('[data-testid="message-output"]') };
3637
};

packages/kernel-ui/src/hooks/useRegistry.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,6 @@ export function useRegistry(): {
1717
const { callKernelMethod, logMessage, setObjectRegistry } = usePanelContext();
1818
const { executeQuery } = useDatabase();
1919

20-
// Revoke an object
21-
const revoke = useCallback(
22-
(kref: KRef) => {
23-
callKernelMethod({ method: 'revoke', params: { kref } })
24-
.then(() => logMessage(`Revoked object ${kref}`, 'success'))
25-
.catch((error) =>
26-
logMessage(
27-
`Failed to revoke object ${kref}: ${error.message}`,
28-
'error',
29-
),
30-
);
31-
},
32-
[callKernelMethod, logMessage],
33-
);
34-
3520
// Fetch the kv db and parse it into an object registry
3621
const fetchObjectRegistry = useCallback((): void => {
3722
executeQuery('SELECT key, value FROM kv')
@@ -49,6 +34,22 @@ export function useRegistry(): {
4934
);
5035
}, [executeQuery, logMessage, setObjectRegistry]);
5136

37+
// Revoke an object
38+
const revoke = useCallback(
39+
(kref: KRef) => {
40+
callKernelMethod({ method: 'revoke', params: { kref } })
41+
.then(() => fetchObjectRegistry())
42+
.then(() => logMessage(`Revoked object ${kref}`, 'success'))
43+
.catch((error) =>
44+
logMessage(
45+
`Failed to revoke object ${kref}: ${error.message}`,
46+
'error',
47+
),
48+
);
49+
},
50+
[callKernelMethod, logMessage],
51+
);
52+
5253
return {
5354
fetchObjectRegistry,
5455
revoke,

vitest.config.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,10 @@ export default defineConfig({
116116
lines: 97.98,
117117
},
118118
'packages/kernel-ui/**': {
119-
statements: 94.97,
120-
functions: 95.2,
119+
statements: 94.98,
120+
functions: 95.23,
121121
branches: 86.03,
122-
lines: 95.08,
122+
lines: 95.09,
123123
},
124124
'packages/kernel-utils/**': {
125125
statements: 100,

0 commit comments

Comments
 (0)