1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-31 00:16:47 +01:00
unleash.unleash/frontend/src/component/application/ApplicationUpdate/ApplicationUpdate.tsx

98 lines
3.3 KiB
TypeScript
Raw Normal View History

2022-02-09 19:09:02 +01:00
import { ChangeEvent, useState } from 'react';
import { TextField, Grid } from '@material-ui/core';
2022-02-09 16:15:07 +01:00
import { useCommonStyles } from '../../../common.styles';
import icons from '../icon-names';
import GeneralSelect from '../../common/GeneralSelect/GeneralSelect';
import useApplicationsApi from '../../../hooks/api/actions/useApplicationsApi/useApplicationsApi';
2022-02-09 19:09:02 +01:00
import useToast from '../../../hooks/useToast';
2022-02-08 16:38:08 +01:00
interface IApplication {
appName: string;
color: string;
createdAt: string;
description: string;
icon: string;
instances: [];
links: object;
seenToggles: [];
strategies: [];
url: string;
}
interface IApplicationUpdateProps {
application: IApplication;
}
const ApplicationUpdate = ({ application }: IApplicationUpdateProps) => {
const { storeApplicationMetaData } = useApplicationsApi();
const { appName, icon, url, description } = application;
const [localUrl, setLocalUrl] = useState(url || '');
const [localDescription, setLocalDescription] = useState(description || '');
2022-02-09 19:09:02 +01:00
const { setToastApiError } = useToast();
const commonStyles = useCommonStyles();
2022-02-09 19:09:02 +01:00
const handleChange = (
evt: ChangeEvent<{ name?: string | undefined; value: unknown }>
) => {
evt.preventDefault();
try {
storeApplicationMetaData(
appName,
'icon',
evt.target.value as string
);
} catch (e: any) {
setToastApiError(e.toString());
}
};
return (
<Grid container style={{ marginTop: '1rem' }}>
<Grid item sm={12} xs={12} className={commonStyles.contentSpacingY}>
<Grid item>
<GeneralSelect
name="iconSelect"
id="selectIcon"
label="Icon"
options={icons.map(v => ({ key: v, label: v }))}
value={icon || 'apps'}
2022-02-09 19:09:02 +01:00
onChange={e => handleChange(e)}
/>
</Grid>
<Grid item>
<TextField
value={localUrl}
onChange={e => setLocalUrl(e.target.value)}
label="Application URL"
placeholder="https://example.com"
type="url"
variant="outlined"
size="small"
onBlur={() =>
storeApplicationMetaData(appName, 'url', localUrl)
}
/>
</Grid>
<Grid item>
<TextField
value={localDescription}
label="Description"
variant="outlined"
size="small"
rows={2}
onChange={e => setLocalDescription(e.target.value)}
onBlur={() =>
storeApplicationMetaData(
appName,
'description',
localDescription
)
}
/>
</Grid>
</Grid>
</Grid>
);
};
export default ApplicationUpdate;