async loadIssuesUnsafe()

in packages/issue-dashboard-widgets/widgets/due-dates-calendar/app/due_dates_calendar_widget.js [453:565]


  async loadIssuesUnsafe(search, context, scheduleField, eventEndField) {

    const currentDate = moment(this.state.date);
    const startDate = moment(currentDate).startOf('month').startOf('week').format('YYYY-MM-DD');
    const endDate = moment(currentDate).endOf('month').endOf('week').format('YYYY-MM-DD');
    const searchPrefix = search && search.trim() ? `${search} AND` : '';
    const issuesQuery = scheduleField === eventEndField
      ? `${searchPrefix} ${scheduleField}: ${startDate} .. ${endDate}`
      : `${searchPrefix} ((${scheduleField}: ${startDate} .. ${endDate} or ${eventEndField}: ${startDate} .. ${endDate}) or (${scheduleField}: * .. ${startDate} and ${eventEndField}: ${endDate} .. *))`;

    const isDateAndTime = this.state.isDateAndTime;

    const issues = await loadIssues(
      this.fetchYouTrack, issuesQuery, context
    );

    const permCache = new PermissionCache(
      await loadPermissionCache(this.fetchHub));

    const events = [];
    if (Array.isArray(issues)) {


      issues.forEach(issue => {
        let issueScheduleField = '';
        let issueScheduleFieldDbId = '';
        let issueEventEndField = '';
        let issueEventEndFieldDbId = '';
        let issueAssignee = '';
        let foregroundColor = '#9c9c9c';
        let backgroundColor = '#e8e8e8';
        let issuePriority = '';
        let isResolved = false;
        const customFields = [];
        // eslint-disable-next-line complexity
        issue.fields.forEach(field => {
          if (field.hasOwnProperty('projectCustomField') && field.value) {
            const fieldType =
              field.projectCustomField.field.fieldType.valueType;
            // eslint-disable-next-line max-len
            if (fieldType === DATE_FIELD_TYPE && !isDateAndTime || fieldType === DATE_AND_TIME_FIELD_TYPE && isDateAndTime) {
              // eslint-disable-next-line max-len
              if (field.projectCustomField.field.name === scheduleField || field.projectCustomField.field.localizedName === scheduleField) {
                issueScheduleField = field.value;
                issueScheduleFieldDbId = field.id;
              }
              // eslint-disable-next-line max-len
              if (field.projectCustomField.field.name === eventEndField || field.projectCustomField.field.localizedName === eventEndField) {
                issueEventEndField = field.value;
                issueEventEndFieldDbId = field.id;
              }
            }
            // eslint-disable-next-line max-len
            if (field.projectCustomField.field.name === ASSIGNEE_FIELD_NAME || field.projectCustomField.field.localizedName === ASSIGNEE_FIELD_NAME) {
              issueAssignee = field.value;
            }

            // eslint-disable-next-line max-len
            if (field.projectCustomField.field.name === this.state.colorField || field.projectCustomField.field.localizedName === this.state.colorField) {
              issuePriority = field.value.name;
              foregroundColor = field.value.color.foreground;
              backgroundColor = field.value.color.background;
            } else if (field.value.color) {
              const prjCustomField = field.projectCustomField;
              customFields.push({
                name: prjCustomField.localizedName !== null
                  ? prjCustomField.localizedName
                  : prjCustomField.field.name,
                value: field.value.name,
                foregroundColor: field.value.color.foreground,
                backgroundColor: field.value.color.background
              });
            }

            if (field.projectCustomField.field.name === STATE_FIELD_NAME) {
              // eslint-disable-next-line max-len
              isResolved = Boolean(field.value.isResolved);
            }
          }
        });


        if (issueScheduleField !== '') {
          events.push({
            dbIssueId: issue.id,
            issueId: issue.idReadable,
            description: `${issue.idReadable} ${issue.summary}`,
            url: `${this.state.youTrack.homeUrl}/issue/${issue.idReadable}`,
            priority: issuePriority,
            isResolved,
            issueScheduleFieldDbId,
            // eslint-disable-next-line max-len
            issueEventEndFieldDbId: issueEventEndFieldDbId !== '' ? issueEventEndFieldDbId : issueScheduleFieldDbId,
            start: (new Date(issueScheduleField)),
            // eslint-disable-next-line max-len
            end: (issueEventEndField !== '' ? new Date(issueEventEndField) : new Date(issueScheduleField)),
            allDay: !this.state.isDateAndTime,
            foregroundColor,
            backgroundColor,
            customFields,
            issueAssignee,
            isUpdatable: permCache.has('JetBrains.YouTrack.UPDATE_ISSUE',
              issue.project.ringId),
            ytHomeUrl: this.state.youTrack.homeUrl
          });
        }
      });
    }
    this.setState({issues, events, fromCache: false, isLoadDataError: false});
    this.props.dashboardApi.storeCache({
      search, context, issues
    });
  }