Skip to content

Commit e34572b

Browse files
authored
refactor: migrate remove feature (#7094)
1 parent aac784a commit e34572b

File tree

8 files changed

+25
-43
lines changed

8 files changed

+25
-43
lines changed

frontend/common/dispatcher/action-constants.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ const Actions = Object.assign({}, require('./base/_action-constants'), {
3333
'MIGRATE_PROJECT': 'MIGRATE_PROJECT',
3434
'OAUTH': 'OAUTH',
3535
'REFRESH_FEATURES': 'REFRESH_FEATURES',
36-
'REMOVE_FLAG': 'REMOVE_FLAG',
3736
'REMOVE_USER_FLAG': 'REMOVE_USER_FLAG',
3837
'RESEND_INVITE': 'RESEND_INVITE',
3938
'SELECT_ENVIRONMENT': 'SELECT_ENVIRONMENT',

frontend/common/dispatcher/app-actions.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,6 @@ const AppActions = Object.assign({}, require('./base/_app-actions'), {
250250
force: true,
251251
})
252252
},
253-
removeFlag(projectId, flag) {
254-
Dispatcher.handleViewAction({
255-
actionType: Actions.REMOVE_FLAG,
256-
flag,
257-
projectId,
258-
})
259-
},
260253
removeUserFlag({ cb, environmentId, identity, identityFlag }) {
261254
Dispatcher.handleViewAction({
262255
actionType: Actions.REMOVE_USER_FLAG,

frontend/common/providers/FeatureListProvider.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ const FeatureListProvider = class extends React.Component {
2929
totalFeatures: ProjectStore.getTotalFeatures(),
3030
})
3131
})
32-
this.listenTo(FeatureListStore, 'removed', (data) => {
33-
this.props.onRemove?.(data)
34-
})
35-
3632
this.listenTo(FeatureListStore, 'saved', (data) => {
3733
this.props.onSave && this.props.onSave(data)
3834
})
@@ -235,10 +231,6 @@ const FeatureListProvider = class extends React.Component {
235231
)
236232
}
237233

238-
removeFlag = (projectId, flag) => {
239-
AppActions.removeFlag(projectId, flag)
240-
}
241-
242234
render() {
243235
return this.props.children(
244236
{
@@ -251,7 +243,6 @@ const FeatureListProvider = class extends React.Component {
251243
editFeatureSettings: this.editFeatureSettings,
252244
editFeatureValue: this.editFeatureValue,
253245
environmentHasFlag: FeatureListStore.hasFlagInEnvironment,
254-
removeFlag: this.removeFlag,
255246
toggleFlag: this.toggleFlag,
256247
},
257248
)

frontend/common/services/useProjectFlag.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,17 @@ export async function createProjectFlag(
253253
projectFlagService.endpoints.createProjectFlag.initiate(data, options),
254254
)
255255
}
256+
export async function removeProjectFlag(
257+
store: any,
258+
data: Req['removeProjectFlag'],
259+
options?: Parameters<
260+
typeof projectFlagService.endpoints.removeProjectFlag.initiate
261+
>[1],
262+
) {
263+
return store.dispatch(
264+
projectFlagService.endpoints.removeProjectFlag.initiate(data, options),
265+
)
266+
}
256267

257268
export const {
258269
useAddFlagGroupOwnersMutation,

frontend/common/stores/feature-list-store.ts

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -952,24 +952,6 @@ const controller = {
952952
})),
953953
}
954954
},
955-
removeFlag: (projectId, flag) => {
956-
store.saving()
957-
API.trackEvent(Constants.events.REMOVE_FEATURE)
958-
return data
959-
.delete(`${Project.api}projects/${projectId}/features/${flag.id}/`)
960-
.then(() => {
961-
store.model.features = _.filter(
962-
store.model.features,
963-
(f) => f.id !== flag.id,
964-
)
965-
store.model.lastSaved = new Date().valueOf()
966-
getStore().dispatch(
967-
projectFlagService.util.invalidateTags(['ProjectFlag']),
968-
)
969-
store.saved({})
970-
store.trigger('removed', flag)
971-
})
972-
},
973955
searchFeatures: _.throttle(
974956
(search, environmentId, projectId, filter, pageSize) => {
975957
store.search = encodeURIComponent(search || '')
@@ -1064,9 +1046,6 @@ store.dispatcherIndex = Dispatcher.register(store, (payload) => {
10641046
case Actions.EDIT_FEATURE_MV:
10651047
controller.editFeatureMv(projectId, action.flag, action.onComplete)
10661048
break
1067-
case Actions.REMOVE_FLAG:
1068-
controller.removeFlag(projectId, action.flag)
1069-
break
10701049
default:
10711050
}
10721051
})

frontend/common/types/responses.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,6 @@ export type FeatureListProviderActions = {
652652
projectFlag: ProjectFlag,
653653
environmentFlags: FeatureState | undefined,
654654
) => void
655-
removeFlag: (projectId: number, projectFlag: ProjectFlag) => void
656655
}
657656

658657
export type AuthType = 'EMAIL' | 'GITHUB' | 'GOOGLE'

frontend/web/components/CompareEnvironments.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import Button from './base/forms/Button'
1414
import Tooltip from './Tooltip'
1515
import { withRouter } from 'react-router-dom'
1616
import { getDarkMode } from 'project/darkMode'
17+
import { getStore } from 'common/store'
18+
import { removeProjectFlag } from 'common/services/useProjectFlag'
1719

1820
const featureNameWidth = 300
1921

@@ -207,7 +209,7 @@ class CompareEnvironments extends Component {
207209

208210
{this.state.environmentLeft && this.state.environmentRight ? (
209211
<FeatureListProvider onSave={this.onSave} onError={this.onError}>
210-
{({}, { removeFlag, toggleFlag }) => {
212+
{({}, { toggleFlag }) => {
211213
// Adapt old FeatureListProvider signatures to new FeatureRow signatures
212214
const adaptedToggleFlag =
213215
(environmentId) => (projectFlag, environmentFlag, onError) => {
@@ -220,7 +222,10 @@ class CompareEnvironments extends Component {
220222
)
221223
}
222224
const adaptedRemoveFlag = (projectFlag) => {
223-
removeFlag(this.props.projectId, projectFlag)
225+
removeProjectFlag(getStore(), {
226+
flag_id: projectFlag.id,
227+
project_id: this.props.projectId,
228+
})
224229
}
225230
const renderRow = (p, i, fadeEnabled, fadeValue) => {
226231
const environmentLeft = ProjectStore.getEnvironment(

frontend/web/components/CompareFeatures.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import FeatureRow from './feature-summary/FeatureRow'
77
import ConfigProvider from 'common/providers/ConfigProvider'
88
import Permission from 'common/providers/Permission'
99
import { withRouter } from 'react-router-dom'
10+
import { getStore } from 'common/store'
11+
import { removeProjectFlag } from 'common/services/useProjectFlag'
1012

1113
const featureNameWidth = 300
1214

@@ -89,7 +91,7 @@ class CompareFeatures extends Component {
8991
{this.state.flagId && (
9092
<div>
9193
<FeatureListProvider onSave={this.onSave} onError={this.onError}>
92-
{({}, { removeFlag, toggleFlag }) => {
94+
{({}, { toggleFlag }) => {
9395
// Adapt old FeatureListProvider signatures to new FeatureRow signatures
9496
const adaptedToggleFlag =
9597
(environmentId) =>
@@ -103,7 +105,10 @@ class CompareFeatures extends Component {
103105
)
104106
}
105107
const adaptedRemoveFlag = (projectFlag) => {
106-
removeFlag(this.props.projectId, projectFlag)
108+
removeProjectFlag(getStore(), {
109+
flag_id: projectFlag.id,
110+
project_id: this.props.projectId,
111+
})
107112
}
108113
const renderRow = (data, i) => {
109114
const flagValues = this.state.environmentResults[i]

0 commit comments

Comments
 (0)