1- import { patchBadWordsUsed } from '@/apis/admin' ;
1+ import { deleteBadWords , patchBadWordsUsed } from '@/apis/admin' ;
22import { DeleteIcon , PencilIcon , ToggleOff , ToggleOn } from '@/assets/icons' ;
33import { useState } from 'react' ;
44import PatchInput from './PatchInput' ;
5+ import { twMerge } from 'tailwind-merge' ;
56
67export default function FilterTextItem ( {
78 badWord,
@@ -12,8 +13,47 @@ export default function FilterTextItem({
1213} ) {
1314 const [ patchInputShow , setPatchInputShow ] = useState < boolean > ( false ) ;
1415
16+ const handleDeleteBadWords = async ( id : string ) => {
17+ const res = await deleteBadWords ( id ) ;
18+ if ( res ?. status === 200 ) {
19+ setBadWords ( ( cur ) =>
20+ cur . filter ( ( e ) => {
21+ if ( e . id === id ) {
22+ return null ;
23+ }
24+ return e ;
25+ } ) ,
26+ ) ;
27+ }
28+ } ;
29+
30+ const handlePatchBadWordsUsed = async ( id : string , isUsed : string ) => {
31+ const res = await patchBadWordsUsed ( id , isUsed ) ;
32+ if ( res ?. status === 200 ) {
33+ setBadWords ( ( cur ) =>
34+ cur . map ( ( e ) => {
35+ if ( e . id === id ) {
36+ let reverseIsUsed : string ;
37+ if ( e . isUsed === 'true' ) {
38+ reverseIsUsed = 'false' ;
39+ } else {
40+ reverseIsUsed = 'true' ;
41+ }
42+ return { ...e , isUsed : reverseIsUsed } ;
43+ }
44+ return e ;
45+ } ) ,
46+ ) ;
47+ }
48+ } ;
49+
50+ const buttonStyle = twMerge (
51+ `flex items-center gap-1.5 rounded-2xl px-4 py-1.5` ,
52+ badWord . isUsed === 'true' ? 'bg-primary-3' : 'bg-[#c1c1c1]' ,
53+ ) ;
54+
1555 return (
16- < span className = "bg-primary-3 flex items-center gap-1.5 rounded-2xl px-4 py-1.5" >
56+ < span className = { buttonStyle } >
1757 { patchInputShow ? (
1858 < PatchInput
1959 badWordId = { badWord . id }
@@ -28,12 +68,20 @@ export default function FilterTextItem({
2868 < PencilIcon className = "h-4 w-4" />
2969 </ button >
3070
31- < button onClick = { ( ) => { } } >
71+ < button
72+ onClick = { ( ) => {
73+ handleDeleteBadWords ( badWord . id ) ;
74+ } }
75+ >
3276 < DeleteIcon className = "h-5 w-5" />
3377 </ button >
3478
35- < button onClick = { ( ) => patchBadWordsUsed ( badWord . id ) } >
36- { true ? < ToggleOn className = "h-5 w-5" /> : < ToggleOff className = "h-5 w-5" /> }
79+ < button onClick = { ( ) => handlePatchBadWordsUsed ( badWord . id , badWord . isUsed ) } >
80+ { badWord . isUsed === 'true' ? (
81+ < ToggleOn className = "h-5 w-5" />
82+ ) : (
83+ < ToggleOff className = "h-5 w-5" />
84+ ) }
3785 </ button >
3886 </ span >
3987 ) ;
0 commit comments