@@ -16,16 +16,18 @@ import { UseFieldArrayRemove } from 'react-hook-form'
16
16
import { AppToaster } from 'components/Toaster'
17
17
import { CopilotDocV1 } from 'models/copilot.schema'
18
18
import { OPERATORS , PROFESSIONS } from 'models/operator'
19
- import { favGroupAtom } from 'store/useFavGroups'
19
+ import { favGroupAtom , ignoreKeyDic } from 'store/useFavGroups'
20
20
21
21
import { EditorPerformerGroupProps } from '../EditorPerformerGroup'
22
- import { Group } from '../EditorSheet'
22
+ import {
23
+ Group ,
24
+ GroupEventType ,
25
+ SheetSubmitEventHandleType ,
26
+ } from '../EditorSheet'
23
27
import { SheetContainerSkeleton } from './SheetContainerSkeleton'
24
28
import { GroupNoData } from './SheetNoneData'
25
29
import { GroupItem } from './sheetGroup/SheetGroupItem'
26
30
27
- export type EventType = 'add' | 'remove' | 'pin' | 'opers' | 'rename' | 'update'
28
-
29
31
type Operator = CopilotDocV1 . Operator
30
32
31
33
export interface SheetGroupProps {
@@ -35,6 +37,8 @@ export interface SheetGroupProps {
35
37
removeGroup : UseFieldArrayRemove
36
38
}
37
39
40
+ export type GroupEventHandleType = SheetSubmitEventHandleType < GroupEventType >
41
+
38
42
const SheetGroup = ( {
39
43
submitGroup,
40
44
existedGroups,
@@ -78,13 +82,13 @@ const SheetGroup = ({
78
82
! ! existedGroups . find ( ( item ) => item . name === target )
79
83
const checkGroupPinned = (
80
84
target : Group ,
81
- ignoreKeyDic : string [ ] = [ '_id' , 'id' ] ,
85
+ ignoreKey : string [ ] = ignoreKeyDic ,
82
86
) => {
83
87
const checkTarget = favGroups . find ( ( item ) => item . name === target . name )
84
88
if ( checkTarget ) {
85
89
return isEqualWith (
86
- omit ( checkTarget , ignoreKeyDic ) ,
87
- omit ( target , ignoreKeyDic ) ,
90
+ checkTarget ,
91
+ omit ( target , ignoreKey ) ,
88
92
( { opers : aOpers } , { opers : bOpers } ) =>
89
93
isEqual (
90
94
aOpers . map ( ( item ) => omit ( item , ignoreKeyDic ) ) ,
@@ -117,25 +121,25 @@ const SheetGroup = ({
117
121
{ ...value } ,
118
122
] )
119
123
120
- const eventHandleProxy = ( type : EventType , value : Group ) => {
124
+ const eventHandleProxy : GroupEventHandleType = ( type , value ) => {
121
125
switch ( type ) {
122
- case 'add' : {
126
+ case GroupEventType . ADD : {
123
127
if ( checkGroupExisted ( value . name ) ) {
124
128
AppToaster . show ( {
125
129
message : '干员组已存在!' ,
126
130
intent : Intent . DANGER ,
127
131
} )
128
132
} else {
129
133
if ( checkGroupPinned ( value ) ) changeOperatorOfOtherGroups ( value . opers )
130
- submitGroup ( value )
134
+ submitGroup ( value , undefined , true )
131
135
}
132
136
break
133
137
}
134
- case 'remove' : {
138
+ case GroupEventType . REMOVE : {
135
139
removeGroup ( existedGroups . findIndex ( ( item ) => item . _id === value . _id ) )
136
140
break
137
141
}
138
- case 'pin' : {
142
+ case GroupEventType . PIN : {
139
143
if ( checkGroupPinned ( value ) )
140
144
setFavGroups ( [ ...favGroups ] . filter ( ( { name } ) => name !== value . name ) )
141
145
else {
@@ -144,16 +148,16 @@ const SheetGroup = ({
144
148
}
145
149
break
146
150
}
147
- case 'rename' : {
151
+ case GroupEventType . RENAME : {
148
152
submitGroup ( value , undefined , true )
149
153
break
150
154
}
151
- case 'opers' : {
155
+ case GroupEventType . OPERS : {
152
156
changeOperatorOfOtherGroups ( value . opers )
153
157
submitGroup ( value , undefined , true )
154
158
break
155
159
}
156
- case 'update' : {
160
+ case GroupEventType . UPDATE : {
157
161
submitGroup ( value , undefined , true )
158
162
break
159
163
}
@@ -259,7 +263,7 @@ const SheetGroup = ({
259
263
const EditorGroupName = ( {
260
264
eventHandleProxy,
261
265
} : {
262
- eventHandleProxy : ( type : EventType , value : Group ) => void
266
+ eventHandleProxy : GroupEventHandleType
263
267
} ) => {
264
268
const [ groupName , setGroupName ] = useState ( '' )
265
269
@@ -271,7 +275,7 @@ const EditorGroupName = ({
271
275
intent : Intent . DANGER ,
272
276
} )
273
277
} else {
274
- eventHandleProxy ( 'add' , { name } )
278
+ eventHandleProxy ( GroupEventType . ADD , { name } )
275
279
setGroupName ( '' )
276
280
}
277
281
}
0 commit comments