1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-04 00:18:01 +01:00

fix: make sure application is updated on edit

This commit is contained in:
Ivar Conradi Østhus 2020-09-23 21:47:07 +02:00
parent ece95f87be
commit a097a90dbe
3 changed files with 16 additions and 6 deletions

View File

@ -23,6 +23,8 @@ import {
import { IconLink, shorten, styles as commonStyles } from '../common'; import { IconLink, shorten, styles as commonStyles } from '../common';
import { formatFullDateTimeWithLocale } from '../common/util'; import { formatFullDateTimeWithLocale } from '../common/util';
import { CREATE_FEATURE, CREATE_STRATEGY, UPDATE_APPLICATION } from '../../permissions'; import { CREATE_FEATURE, CREATE_STRATEGY, UPDATE_APPLICATION } from '../../permissions';
import icons from './icon-names';
import MySelect from '../common/select';
class StatefulTextfield extends Component { class StatefulTextfield extends Component {
static propTypes = { static propTypes = {
@ -178,6 +180,7 @@ class ClientApplications extends PureComponent {
<StatefulTextfield <StatefulTextfield
value={url} value={url}
label="URL" label="URL"
type="url"
onBlur={e => storeApplicationMetaData(appName, 'url', e.target.value)} onBlur={e => storeApplicationMetaData(appName, 'url', e.target.value)}
/> />
<br /> <br />
@ -189,14 +192,16 @@ class ClientApplications extends PureComponent {
/> />
</Cell> </Cell>
<Cell col={6} tablet={12}> <Cell col={6} tablet={12}>
<StatefulTextfield <MySelect
label="Icon"
options={icons.map(v => ({ name: v, label: v }))}
value={icon} value={icon}
label="Select icon" onChange={e => storeApplicationMetaData(appName, 'icon', e.target.value)}
onBlur={e => storeApplicationMetaData(appName, 'icon', e.target.value)} filled
/> />
<StatefulTextfield <StatefulTextfield
value={color} value={color}
label="Select color" label="Color"
onBlur={e => storeApplicationMetaData(appName, 'color', e.target.value)} onBlur={e => storeApplicationMetaData(appName, 'color', e.target.value)}
/> />
</Cell> </Cell>
@ -206,7 +211,8 @@ class ClientApplications extends PureComponent {
return ( return (
<Card shadow={0} className={commonStyles.fullwidth}> <Card shadow={0} className={commonStyles.fullwidth}>
<CardTitle style={{ paddingTop: '24px', paddingRight: '64px', wordBreak: 'break-all' }}> <CardTitle style={{ paddingTop: '24px', paddingRight: '64px', wordBreak: 'break-all' }}>
<Icon name={icon} /> {appName} <Icon name={icon} />
&nbsp;{appName}
</CardTitle> </CardTitle>
{description && <CardText>{description}</CardText>} {description && <CardText>{description}</CardText>}
{url && ( {url && (

View File

@ -6,6 +6,7 @@ export const ERROR_RECEIVE_ALL_APPLICATIONS = 'ERROR_RECEIVE_ALL_APPLICATIONS';
export const ERROR_UPDATING_APPLICATION_DATA = 'ERROR_UPDATING_APPLICATION_DATA'; export const ERROR_UPDATING_APPLICATION_DATA = 'ERROR_UPDATING_APPLICATION_DATA';
export const RECEIVE_APPLICATION = 'RECEIVE_APPLICATION'; export const RECEIVE_APPLICATION = 'RECEIVE_APPLICATION';
export const UPDATE_APPLICATION_FIELD = 'UPDATE_APPLICATION_FIELD';
const recieveAllApplications = json => ({ const recieveAllApplications = json => ({
type: RECEIVE_ALL_APPLICATIONS, type: RECEIVE_ALL_APPLICATIONS,
@ -29,6 +30,7 @@ export function storeApplicationMetaData(appName, key, value) {
return dispatch => return dispatch =>
api api
.storeApplicationMetaData(appName, key, value) .storeApplicationMetaData(appName, key, value)
.then(() => dispatch({ type: UPDATE_APPLICATION_FIELD, appName, key, value }))
.catch(dispatchAndThrow(dispatch, ERROR_UPDATING_APPLICATION_DATA)); .catch(dispatchAndThrow(dispatch, ERROR_UPDATING_APPLICATION_DATA));
} }

View File

@ -1,5 +1,5 @@
import { fromJS, List, Map } from 'immutable'; import { fromJS, List, Map } from 'immutable';
import { RECEIVE_ALL_APPLICATIONS, RECEIVE_APPLICATION } from './actions'; import { RECEIVE_ALL_APPLICATIONS, RECEIVE_APPLICATION, UPDATE_APPLICATION_FIELD } from './actions';
import { USER_LOGOUT, USER_LOGIN } from '../user/actions'; import { USER_LOGOUT, USER_LOGIN } from '../user/actions';
function getInitState() { function getInitState() {
@ -12,6 +12,8 @@ const store = (state = getInitState(), action) => {
return state.setIn(['apps', action.value.appName], new Map(action.value)); return state.setIn(['apps', action.value.appName], new Map(action.value));
case RECEIVE_ALL_APPLICATIONS: case RECEIVE_ALL_APPLICATIONS:
return state.set('list', new List(action.value.applications)); return state.set('list', new List(action.value.applications));
case UPDATE_APPLICATION_FIELD:
return state.setIn(['apps', action.appName, action.key], action.value);
case USER_LOGOUT: case USER_LOGOUT:
case USER_LOGIN: case USER_LOGIN:
return getInitState(); return getInitState();