async onPickImageToUpload()

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();
  }