Skip to content

Commit 3ce6eba

Browse files
committed
peer review
1 parent 9168cfe commit 3ce6eba

File tree

2 files changed

+21
-54
lines changed

2 files changed

+21
-54
lines changed

frontend/apps/ui/src/components/EditNodeTitleModal/EditNodeTitleModal.tsx

Lines changed: 5 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import {useRenameFolderMutation} from "@/features/nodes/apiSlice"
22
import type {EditEntityTitle} from "@/types"
33
import type {I18NEditNodeTitleModal} from "kommon"
44
import {EditNodeTitleModal} from "kommon"
5-
import {ChangeEvent, useEffect, useRef, useState} from "react"
5+
import {ChangeEvent, useEffect, useState} from "react"
66

77
import {useTranslation} from "react-i18next"
8+
import {useEnterSubmit} from "./useEnterSubmit"
89

910
interface Args {
1011
node: EditEntityTitle
@@ -21,34 +22,14 @@ export const EditNodeTitleModalContainer = ({
2122
}: Args) => {
2223
const txt = useI18nText()
2324
const [renameFolder, {isLoading}] = useRenameFolderMutation()
24-
const ref = useRef<HTMLButtonElement>(null)
2525
const [title, setTitle] = useState(node.title)
2626
const [error, setError] = useState("")
2727

28-
useEffect(() => {
29-
// handle "enter" keyboard press
30-
document.addEventListener("keydown", handleKeydown, false)
31-
32-
return () => {
33-
document.removeEventListener("keydown", handleKeydown, false)
34-
}
35-
}, [])
36-
3728
const handleTitleChanged = (event: ChangeEvent<HTMLInputElement>) => {
3829
let value = event.currentTarget.value
3930
setTitle(value)
4031
}
4132

42-
const handleKeydown = async (e: KeyboardEvent) => {
43-
switch (e.code) {
44-
case "Enter":
45-
if (ref.current) {
46-
ref.current.click()
47-
}
48-
break
49-
}
50-
}
51-
5233
const onLocalSubmit = async () => {
5334
const data = {
5435
title: title,
@@ -60,11 +41,12 @@ export const EditNodeTitleModalContainer = ({
6041
onSubmit()
6142
reset() // sets error message back to empty string
6243
} catch (error: any) {
63-
// @ts-ignore
64-
setError(err.data.detail)
44+
setError(error?.data?.detail ?? "Something went wrong")
6545
}
6646
}
6747

48+
useEnterSubmit(onLocalSubmit)
49+
6850
const onLocalCancel = () => {
6951
onCancel()
7052
reset()
@@ -110,34 +92,3 @@ function useI18nText(): I18NEditNodeTitleModal | undefined {
11092
}
11193

11294
export default EditNodeTitleModalContainer
113-
114-
/****
115-
*
116-
*
117-
* <Modal title={"Edit Title"} opened={opened} onClose={onLocalCancel}>
118-
<TextInput
119-
data-autofocus
120-
onChange={handleTitleChanged}
121-
value={title}
122-
label="New Title"
123-
placeholder="title"
124-
mt="md"
125-
/>
126-
{error && <Error message={error} />}
127-
128-
<Group justify="space-between" mt="md">
129-
<Button variant="default" onClick={onLocalCancel}>
130-
{t("common.cancel")}
131-
</Button>
132-
<Group>
133-
{isLoading && <Loader size="sm" />}
134-
<Button ref={ref} disabled={isLoading} onClick={onLocalSubmit}>
135-
{t("common.submit")}
136-
</Button>
137-
</Group>
138-
</Group>
139-
</Modal>
140-
*
141-
*
142-
*
143-
*/
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import {useEffect} from "react"
2+
3+
export function useEnterSubmit(callback: () => Promise<void> | void) {
4+
useEffect(() => {
5+
const handleKeydown = (e: KeyboardEvent) => {
6+
if (e.code === "Enter") {
7+
callback()
8+
}
9+
}
10+
11+
document.addEventListener("keydown", handleKeydown)
12+
return () => {
13+
document.removeEventListener("keydown", handleKeydown)
14+
}
15+
}, [callback])
16+
}

0 commit comments

Comments
 (0)