@@ -7,8 +7,9 @@ import { useModalRoute } from "@wow-class/ui/hooks";
7
7
import { parseISODate } from "@wow-class/utils" ;
8
8
import { myStudyApi } from "apis/myStudyApi" ;
9
9
import { tags } from "constants/tags" ;
10
- import useFetchAttendanceCheckModalInfoData from "hooks/useFetchAttendanceCheckModalInfoData " ;
10
+ import useAttendanceCheckSearchParams from "hooks/useAttendanceCheckSearchParams " ;
11
11
import Image from "next/image" ;
12
+ import type { KeyboardEventHandler } from "react" ;
12
13
import { useState } from "react" ;
13
14
import { revalidateTagByName } from "utils/revalidateTagByName" ;
14
15
import { validateAttendanceNumber } from "utils/validateAttendanceNumber" ;
@@ -22,9 +23,8 @@ const AttendanceCheckModal = () => {
22
23
23
24
const { onClose } = useModalRoute ( ) ;
24
25
25
- const {
26
- studyInfo : { currentWeek, studyDetailId, studyName, deadLine } ,
27
- } = useFetchAttendanceCheckModalInfoData ( ) ;
26
+ const { studyDetailId, studyName, deadLine, currentWeek } =
27
+ useAttendanceCheckSearchParams ( ) ;
28
28
29
29
const { year, month, day, hours, minutes } = parseISODate ( deadLine ) ;
30
30
@@ -48,11 +48,17 @@ const AttendanceCheckModal = () => {
48
48
} ;
49
49
50
50
const handleClickAttendanceCheckButton = async ( ) => {
51
- if ( ! isAttendanceNumberValid ( attendanceNumber ) ) {
51
+ const trimmedAttendanceNumber = attendanceNumber . trim ( ) ;
52
+
53
+ if ( ! isAttendanceNumberValid ( trimmedAttendanceNumber ) ) {
52
54
return setError ( true ) ;
53
55
}
54
56
55
- const success = await checkAttendance ( studyDetailId , attendanceNumber ) ;
57
+ const success = await checkAttendance (
58
+ + studyDetailId ,
59
+ trimmedAttendanceNumber
60
+ ) ;
61
+
56
62
if ( ! success ) {
57
63
return setError ( true ) ;
58
64
}
@@ -62,12 +68,19 @@ const AttendanceCheckModal = () => {
62
68
63
69
const handleAttendanceSuccess = ( ) => {
64
70
setAttended ( true ) ;
71
+ setError ( false ) ;
65
72
revalidateTagByName ( tags . dailyTask ) ;
66
73
setTimeout ( ( ) => {
67
74
onClose ( ) ;
68
75
} , 500 ) ;
69
76
} ;
70
77
78
+ const handleKeyDown : KeyboardEventHandler < HTMLTextAreaElement > = ( event ) => {
79
+ if ( event . key === "Enter" || event . key === " " ) {
80
+ event . preventDefault ( ) ;
81
+ }
82
+ } ;
83
+
71
84
return (
72
85
< Modal >
73
86
{ attended ? (
@@ -136,9 +149,12 @@ const AttendanceCheckModal = () => {
136
149
error = { error }
137
150
helperText = { error ? textfieldHelperText : "" }
138
151
label = "출결번호 입력"
139
- placeholder = "Ex. 0000"
152
+ placeholder = "ex) 0000"
140
153
style = { textfieldStyle }
141
154
value = { attendanceNumber }
155
+ textareaProps = { {
156
+ onKeyDown : handleKeyDown ,
157
+ } }
142
158
onChange = { handleChangeAttendanceNumber }
143
159
/>
144
160
< Button
@@ -172,6 +188,7 @@ const attendanceCheckDescriptionStyle = css({
172
188
const textfieldStyle = {
173
189
height : "89px" ,
174
190
marginBottom : "20px" ,
191
+ whiteSpace : "nowrap" ,
175
192
} ;
176
193
177
194
const attendanceCompleteTitleStyle = css ( {
0 commit comments