1- import { find , findIndex , reject , uniqBy } from 'lodash'
1+ import { find , findIndex , omit , reject , uniqBy } from 'lodash'
22import { FC , useEffect , useRef , useState } from 'react'
33import { toast } from 'react-toastify'
44import classNames from 'classnames'
@@ -76,7 +76,11 @@ const ModifyMemberLinksModal: FC<ModifyMemberLinksModalProps> = (props: ModifyMe
7676 setDefaultInstagram ( memberLinks . splice ( firstInstagramIndex , 1 ) [ 0 ] )
7777 }
7878
79- setCurrentMemberLinks ( memberLinks )
79+ setCurrentMemberLinks ( memberLinks . map ( ( item : UserTrait , index : number ) => ( {
80+ ...item ,
81+ id : `id-${ index } -${ ( new Date ( ) )
82+ . getTime ( ) } `,
83+ } ) ) )
8084
8185 } , [ props . memberLinks ] )
8286
@@ -89,7 +93,11 @@ const ModifyMemberLinksModal: FC<ModifyMemberLinksModalProps> = (props: ModifyMe
8993 ...currentMemberLinks ,
9094 ] . filter ( l => l . name && l . url ) , e => `${ e . name } -${ e . url } ` )
9195 if ( ! find ( updatedLinks , newLink ) ) {
92- setCurrentMemberLinks ( links => [ ...links , newLink ] )
96+ setCurrentMemberLinks ( links => [ ...links , {
97+ ...newLink ,
98+ id : `id-${ ( new Date ( ) )
99+ . getTime ( ) } `,
100+ } ] )
93101 }
94102
95103 addNewLinkRef . current ?. resetForm ( )
@@ -127,12 +135,20 @@ const ModifyMemberLinksModal: FC<ModifyMemberLinksModalProps> = (props: ModifyMe
127135 const updatedPersonalizationTraits : UserTrait [ ]
128136 = reject ( props . memberPersonalizationTraitsFullData , ( trait : UserTrait ) => trait . links )
129137
130- const updatedLinks : UserTrait [ ] = uniqBy ( [
131- defaultLinkedIn ,
132- defaultGitHub ,
133- defaultInstagram ,
134- ...currentMemberLinks ,
135- ] . filter ( l => l . name && l . url ) , e => `${ e . name } -${ e . url } ` )
138+ const updatedLinks : UserTrait [ ] = uniqBy (
139+ [
140+ defaultLinkedIn ,
141+ defaultGitHub ,
142+ defaultInstagram ,
143+ ...currentMemberLinks ,
144+ ] . filter (
145+ l => l . name && l . url ,
146+ ) ,
147+ e => `${ e . name } -${ e . url } ` ,
148+ )
149+ . map (
150+ item => omit ( item , [ 'id' ] ) ,
151+ )
136152
137153 updateOrCreateMemberTraitsAsync ( props . profile . handle , [ {
138154 categoryName : UserTraitCategoryNames . personalization ,
@@ -273,14 +289,18 @@ const ModifyMemberLinksModal: FC<ModifyMemberLinksModalProps> = (props: ModifyMe
273289 < LinkForm
274290 link = { trait as UserLink }
275291 onSave = { function onSave ( link : UserLink ) {
276- handleSaveLink ( link , i )
292+ handleSaveLink ( {
293+ ...trait ,
294+ ...link ,
295+ } , i )
277296 } }
278297 onRemove = { function onRemove ( ) {
279298 handleRemoveLink ( i )
280299 } }
281300 allowEditType
282301 placeholder = 'http://'
283302 disabled = { isSaving }
303+ key = { trait . id }
284304 />
285305 ) )
286306 }
0 commit comments