Skip to content

Commit 65bad13

Browse files
committed
Identity traits
1 parent 23e3be4 commit 65bad13

File tree

5 files changed

+44
-31
lines changed

5 files changed

+44
-31
lines changed

frontend/common/services/useIdentityTrait.ts

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ import { IdentityTrait, Res } from 'common/types/responses'
22
import { Req } from 'common/types/requests'
33
import { service } from 'common/service'
44
import Utils from 'common/utils/utils'
5+
import { getStore } from 'common/store'
6+
import { identitySegmentService } from './useIdentitySegment'
7+
import q from 'refractor/lang/q'
58

69
function getTraitEndpoint(
710
use_edge_identities: boolean,
@@ -66,6 +69,12 @@ export const identityTraitService = service
6669
),
6770
}
6871
},
72+
transformResponse: (res) => {
73+
getStore().dispatch(
74+
identitySegmentService.util.invalidateTags(['IdentitySegment']),
75+
)
76+
return res
77+
},
6978
}),
7079
deleteIdentityTrait: builder.mutation<
7180
Res['identityTrait'],
@@ -94,9 +103,16 @@ export const identityTraitService = service
94103
query.use_edge_identities,
95104
query.environmentId,
96105
query.identity,
106+
query.data.id,
97107
),
98108
}
99109
},
110+
transformResponse: (res) => {
111+
getStore().dispatch(
112+
identitySegmentService.util.invalidateTags(['IdentitySegment']),
113+
)
114+
return res
115+
},
100116
}),
101117
getIdentityTraits: builder.query<
102118
Res['identityTraits'],
@@ -110,6 +126,16 @@ export const identityTraitService = service
110126
query.identity,
111127
),
112128
}),
129+
transformResponse: (res) => {
130+
// Core API returns paginated were as edge doesn't
131+
if (res?.results) {
132+
return res?.results.map((v) => ({
133+
...v,
134+
trait_value: Utils.featureStateToValue(v),
135+
}))
136+
}
137+
return res
138+
},
113139
}),
114140
updateIdentityTrait: builder.mutation<
115141
Res['identityTrait'],
@@ -126,7 +152,7 @@ export const identityTraitService = service
126152
query.identity,
127153
query.data,
128154
),
129-
method: query.use_edge_identities ? 'PUT' : 'POST',
155+
method: 'PUT',
130156
url: getUpdateTraitEndpoint(
131157
query.use_edge_identities,
132158
query.environmentId,
@@ -135,6 +161,12 @@ export const identityTraitService = service
135161
),
136162
}
137163
},
164+
transformResponse: (res) => {
165+
getStore().dispatch(
166+
identitySegmentService.util.invalidateTags(['IdentitySegment']),
167+
)
168+
return res
169+
},
138170
}),
139171
// END OF ENDPOINTS
140172
}),

frontend/web/components/IdentityTraits.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import Panel from './base/grid/Panel'
99
import { useHasPermission } from 'common/providers/Permission'
1010
import API from 'project/api'
1111
import CreateTraitModal from './modals/CreateTrait'
12-
import AppActions from 'common/dispatcher/app-actions'
1312
import {
1413
useDeleteIdentityTraitMutation,
1514
useGetIdentityTraitsQuery,
@@ -46,10 +45,8 @@ const IdentityTraits: FC<IdentityTraitsType> = ({
4645
const [deleteTrait, { isLoading: deletingTrait }] =
4746
useDeleteIdentityTraitMutation({})
4847

49-
//todo : https://github.com/Flagsmith/flagsmith/pull/5121 migrates this
5048
const onTraitSaved = () => {
5149
closeModal?.()
52-
AppActions.getIdentitySegments(projectId, identityId)
5350
}
5451

5552
const createTrait = () => {

frontend/web/components/modals/CreateSegment.tsx

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ const CreateSegment: FC<CreateSegmentType> = ({
108108
project?: number
109109
} = {
110110
description: '',
111+
metadata: [],
111112
name: '',
112113
rules: [
113114
{
@@ -157,9 +158,7 @@ const CreateSegment: FC<CreateSegmentType> = ({
157158
const isSaving = creating || updating
158159
const [showDescriptions, setShowDescriptions] = useState(false)
159160
const [tab, setTab] = useState(UserTabs.RULES)
160-
const [metadata, setMetadata] = useState<CustomMetadataField[]>(
161-
segment.metadata,
162-
)
161+
const [metadata, setMetadata] = useState<Metadata[]>(segment.metadata)
163162
const metadataEnable = Utils.getPlansPermission('METADATA')
164163
const error = createError || updateError
165164
const totalSegments = ProjectStore.getTotalSegments() ?? 0
@@ -240,13 +239,6 @@ const CreateSegment: FC<CreateSegmentType> = ({
240239
}
241240
}
242241

243-
const fetchUserIdentityList = () => {
244-
if (!environmentId) return
245-
identities?.results.forEach((identity) =>
246-
AppActions.getIdentitySegments(projectId, identity.id),
247-
)
248-
}
249-
250242
const [valueChanged, setValueChanged] = useState(false)
251243
const [metadataValueChanged, setMetadataValueChanged] = useState(false)
252244
const onClosing = useCallback(() => {
@@ -288,15 +280,13 @@ const CreateSegment: FC<CreateSegmentType> = ({
288280
if (createSuccess && createSegmentData) {
289281
setSegment(createSegmentData)
290282
onComplete?.(createSegmentData)
291-
fetchUserIdentityList()
292283
}
293284
//eslint-disable-next-line
294285
}, [createSuccess])
295286
useEffect(() => {
296287
if (updateSuccess && updateSegmentData) {
297288
setSegment(updateSegmentData)
298289
onComplete?.(updateSegmentData)
299-
fetchUserIdentityList()
300290
}
301291
//eslint-disable-next-line
302292
}, [updateSuccess])
@@ -366,11 +356,7 @@ const CreateSegment: FC<CreateSegmentType> = ({
366356
readOnly={readOnly}
367357
data-test={`rule-${displayIndex}`}
368358
rule={rule}
369-
operators={operators}
370-
onRemove={() => {
371-
setValueChanged(true)
372-
removeRule(0, i)
373-
}}
359+
operators={operators!}
374360
onChange={(v: SegmentRule) => {
375361
setValueChanged(true)
376362
updateRule(0, i, v)
@@ -418,8 +404,8 @@ const CreateSegment: FC<CreateSegmentType> = ({
418404
entityId={`${segment.id}` || ''}
419405
entityContentType={segmentContentType?.id}
420406
entity={segmentContentType?.model}
421-
onChange={(m: CustomMetadataField[]) => {
422-
setMetadata(m)
407+
onChange={(m) => {
408+
setMetadata(m as Metadata[])
423409
if (isEdit) {
424410
setMetadataValueChanged(true)
425411
}
@@ -488,7 +474,7 @@ const CreateSegment: FC<CreateSegmentType> = ({
488474
environmentId={environmentId}
489475
setEnvironmentId={setEnvironmentId}
490476
identitiesLoading={identitiesLoading}
491-
identities={identities}
477+
identities={identities!}
492478
page={page}
493479
setPage={setPage}
494480
name={name}
@@ -638,7 +624,7 @@ const LoadingCreateSegment: FC<LoadingCreateSegmentType> = (props) => {
638624
pageType: page.pageType,
639625
page_size: 10,
640626
pages: page.pages,
641-
search,
627+
q: search,
642628
},
643629
{
644630
skip: !environmentId,

frontend/web/components/modals/CreateTrait.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424
import { FlagsmithValue } from 'common/types/responses'
2525

2626
type CreateTraitProps = {
27-
id?: number | string
27+
id?: number
2828
trait_key?: string
2929
trait_value?: FlagsmithValue
3030
identityName: string
@@ -83,7 +83,7 @@ const CreateTrait: FC<CreateTraitProps> = ({
8383
const handleSave = () => {
8484
if (isEdit) {
8585
updateTrait({
86-
data: { id: identity, trait_key: traitKey, trait_value: traitValue },
86+
data: { id, trait_key: traitKey, trait_value: traitValue },
8787
environmentId,
8888
identity,
8989
use_edge_identities,

frontend/web/components/pages/UserPage.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -928,7 +928,7 @@ const UserPage: FC<UserPageType> = (props) => {
928928
environmentId={environmentId}
929929
projectId={projectId}
930930
identityId={id}
931-
identityName={identity}
931+
identityName={identity?.identity?.identifier || id}
932932
/>
933933
)}{' '}
934934
{!segments?.results ? (
@@ -1036,9 +1036,7 @@ const UserPage: FC<UserPageType> = (props) => {
10361036
<TryIt
10371037
title='Check to see what features and traits are coming back for this user'
10381038
environmentId={environmentId}
1039-
userId={
1040-
(identity && identity.identity.identifier) || id
1041-
}
1039+
userId={identity?.identity?.identifier || id}
10421040
/>
10431041
</FormGroup>
10441042
</div>

0 commit comments

Comments
 (0)