in source/console/src/views/AddEditEvent.tsx [635:690]
async onPickImageToUpload(e: any) {
this.setState({ eventModalError: '' });
if (!e.target || !e.target.files || !e.target.files[0]) {
return;
}
const file = e.target.files[0];
const { size } = file;
const IMAGE_FILE_SIZE_LIMIT = 5000000; // 5MB
if (size > IMAGE_FILE_SIZE_LIMIT) {
this.setState({ eventModalError: I18n.get('error.limit.image.size') });
return;
}
let fileType: string | undefined;
try {
fileType = await this.getFileType(file);
} catch (err) {
LOGGER.error(err);
}
if (!fileType) {
this.setState({ eventModalError: I18n.get('error.image.type') });
return;
}
this.setState({ isLoading: true });
try {
const imgKey = uuid.v4();
const resp: any = await Storage.put(`event-images/${imgKey}`, file, { level: 'public', contentType: fileType });
if (resp && resp.key) {
if (this.state.showSubEventModal) {
this.onSelectSubEventImage(resp.key);
} else {
this.setState({ eventImgKey: resp.key });
}
}
this.setState((state, props) => ({
isEventNameValid: validateGeneralInput(state.eventName, 1, 40, '- _/#'),
isEventDescriptionValid: validateGeneralInput(state.eventDescription, 1, 40, '- _/#'),
isEventSmsValid: validatePhoneNumber(state.eventSms, true),
isEventEmailValid: validateEmailAddress(state.eventEmail, true),
isEventTypeValid: validateGeneralInput(state.eventType, 0, 40, '- _/'),
isEventAliasValid: validateGeneralInput(state.eventAlias, 0, 40, '- _/')
}));
} catch (err) {
LOGGER.error(err);
}
await this.loadEventImages();
}