Skip to content

Commit 9a789fd

Browse files
authored
fix: close popover after value selected (#496)
* feat: move delay fn in a root shared folder * fix: close popover after value selected
1 parent aac432d commit 9a789fd

File tree

6 files changed

+15
-10
lines changed

6 files changed

+15
-10
lines changed

main/src/graceful-exit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { createClient } from '../../renderer/src/common/api/generated/client'
66
import type { WorkloadsWorkload } from '../../renderer/src/common/api/generated/types.gen'
77
import Store from 'electron-store'
88
import log from './logger'
9-
import { delay } from './util'
9+
import { delay } from '../../utils/delay'
1010

1111
// Create a store instance for tracking shutdown servers
1212
const shutdownStore = new Store({

main/src/main.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ import {
3232
binPath,
3333
} from './toolhive-manager'
3434
import log from './logger'
35-
import { delay, getAppVersion, pollWindowReady } from './util'
35+
import { getAppVersion, pollWindowReady } from './util'
36+
import { delay } from '../../utils/delay'
3637

3738
import Store from 'electron-store'
3839

main/src/util.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { app, BrowserWindow } from 'electron'
22
import { execSync } from 'node:child_process'
33
import log from './logger'
4+
import { delay } from '../../utils/delay'
45

56
function getVersionFromGit(): string {
67
try {
@@ -25,10 +26,6 @@ function getVersionFromGit(): string {
2526
}
2627
}
2728

28-
export async function delay(ms: number) {
29-
return new Promise((resolve) => setTimeout(resolve, ms))
30-
}
31-
3229
export function getAppVersion(): string {
3330
if (process.env.SENTRY_RELEASE) {
3431
return process.env.SENTRY_RELEASE

renderer/src/common/components/secrets/form-combobox-secrets-store.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Check, ChevronDown } from 'lucide-react'
2+
import { useState } from 'react'
23
import { Button } from '../ui/button'
34
import { Popover, PopoverContent, PopoverTrigger } from '../ui/popover'
45
import type { FieldValues, Path, UseFormReturn } from 'react-hook-form'
@@ -15,6 +16,7 @@ import { cn } from '@/common/lib/utils'
1516
import { useQuery } from '@tanstack/react-query'
1617
import { getApiV1BetaSecretsDefaultKeysOptions } from '@/common/api/generated/@tanstack/react-query.gen'
1718
import { RefreshButton } from '../refresh-button'
19+
import { delay } from '../../../../../utils/delay'
1820

1921
type ConstrainedFieldValues = FieldValues & {
2022
secrets: {
@@ -35,14 +37,15 @@ export function FormComboboxSecretStore<
3537
T extends ConstrainedFieldValues = ConstrainedFieldValues,
3638
>({ form, name }: { form: UseFormReturn<T>; name: Path<T> }) {
3739
const { data, refetch } = useQuery(getApiV1BetaSecretsDefaultKeysOptions())
40+
const [isOpen, setIsOpen] = useState(false)
3841

3942
return (
4043
<FormField
4144
control={form.control}
4245
name={name}
4346
render={({ field }) => (
4447
<FormItem>
45-
<Popover>
48+
<Popover open={isOpen} onOpenChange={setIsOpen}>
4649
<PopoverTrigger asChild>
4750
<FormControl>
4851
<Button
@@ -89,11 +92,13 @@ export function FormComboboxSecretStore<
8992
key={secret.key}
9093
value={secret.key}
9194
className="font-mono"
92-
onSelect={(value) => {
95+
onSelect={async (value) => {
9396
field.onChange({
9497
secret: value,
9598
isFromStore: true,
9699
})
100+
await delay(150)
101+
setIsOpen(false)
97102
}}
98103
>
99104
{secret.key}

renderer/src/common/lib/polling.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
*/
44

55
import type { WorkloadsWorkload } from '../api/generated/types.gen'
6-
7-
const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))
6+
import { delay } from '../../../../utils/delay'
87

98
// Types
109
interface PollingConfig {

utils/delay.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export async function delay(ms: number) {
2+
return new Promise((resolve) => setTimeout(resolve, ms))
3+
}

0 commit comments

Comments
 (0)