Skip to content

Commit 6e74429

Browse files
committed
fix(extension): clear stale authentication when returning to Chat
1 parent d8734f8 commit 6e74429

2 files changed

Lines changed: 30 additions & 7 deletions

File tree

‎apps/sim/app/extension/sign-in.tsx‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ function PanelSignIn({ expectedUserId }: ExtensionSignInProps) {
5252
let active = true
5353
let checking = false
5454
let checkAgain = false
55-
const resume = async () => {
55+
const resume = async (returning = false) => {
5656
if (document.visibilityState === 'hidden') return
5757
if (checking) {
5858
checkAgain = true
@@ -64,8 +64,8 @@ function PanelSignIn({ expectedUserId }: ExtensionSignInProps) {
6464
if (active) {
6565
setFailed(false)
6666
if (session?.user) {
67-
if (expectedUserId && session.user.id !== expectedUserId) window.location.reload()
68-
else router.refresh()
67+
if (!expectedUserId) router.refresh()
68+
else if (returning || session.user.id !== expectedUserId) window.location.reload()
6969
}
7070
}
7171
} catch {
@@ -74,14 +74,14 @@ function PanelSignIn({ expectedUserId }: ExtensionSignInProps) {
7474
checking = false
7575
if (active && checkAgain) {
7676
checkAgain = false
77-
void resume()
77+
void resume(true)
7878
}
7979
}
8080
}
81-
const check = () => void resume()
81+
const check = () => void resume(true)
8282
window.addEventListener('focus', check)
8383
document.addEventListener('visibilitychange', check)
84-
check()
84+
void resume()
8585
return () => {
8686
active = false
8787
window.removeEventListener('focus', check)

‎apps/sim/scripts/test-browser-extension-e2e.ts‎

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1011,7 +1011,7 @@ try {
10111011
await capture()
10121012
await capture()
10131013
await expect(attachments()).toHaveCount(3)
1014-
await expect(frame().getByRole('alert').filter({ hasText: 'Remove one' })).toBeVisible()
1014+
await expect(frame().getByRole('alert').filter({ hasText: 'Remove a page' })).toBeVisible()
10151015
await screenshot('page-limit')
10161016
await attachments().first().getByRole('button', { name: 'Remove page context' }).click()
10171017
await expect(attachments()).toHaveCount(2)
@@ -1483,8 +1483,31 @@ try {
14831483
await settingsPage.waitForURL('chrome://settings/content/microphone')
14841484
await settingsPage.close()
14851485
await shell.bringToFront()
1486+
const viewport = shell.viewportSize()
1487+
assert(viewport)
1488+
const { windowId } = await microphone.send('Browser.getWindowForTarget')
1489+
const before = await microphone.send('Browser.getWindowBounds', { windowId })
1490+
await setPanelViewport(viewport.width, viewport.height)
1491+
const after = await microphone.send('Browser.getWindowBounds', { windowId })
1492+
voiceDiagnostics.push({ event: 'settings-return', viewport, before, after })
14861493
await setMicrophonePermission('granted')
1494+
const retryClick = await mic.evaluateHandle((button) => {
1495+
let clicked = false
1496+
button.addEventListener(
1497+
'click',
1498+
(event) => {
1499+
clicked = event.isTrusted
1500+
},
1501+
{ once: true }
1502+
)
1503+
return () => clicked
1504+
})
14871505
await mic.click()
1506+
voiceDiagnostics.push({
1507+
event: 'retry-click',
1508+
trusted: await retryClick.evaluate((read) => read()),
1509+
})
1510+
await retryClick.dispose()
14881511
await expect(stop).toBeVisible()
14891512
await expect.poll(() => sessions[0]?.chunks ?? 0).toBeGreaterThan(0)
14901513
sessions[0].socket.send(

0 commit comments

Comments
 (0)