Welcome to mirror list, hosted at ThFree Co, Russian Federation.

service_desk_helper.js « issues_list « javascripts « assets « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 815f338f1a078faac1dd4f6de8551c369b627deb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import { __, s__ } from '~/locale';

/**
 * Generates empty state messages for Service Desk issues list.
 *
 * @param {emptyStateMeta} emptyStateMeta - Meta data used to generate empty state messages
 * @returns {Object} Object containing empty state messages generated using the meta data.
 */
export function generateMessages(emptyStateMeta) {
  const {
    svgPath,
    serviceDeskHelpPage,
    serviceDeskAddress,
    editProjectPage,
    incomingEmailHelpPage,
  } = emptyStateMeta;

  const serviceDeskSupportedTitle = s__(
    'ServiceDesk|Use Service Desk to connect with your users and offer customer support through email right inside GitLab',
  );

  const serviceDeskSupportedMessage = s__(
    'ServiceDesk|Issues created from Service Desk emails will appear here. Each comment becomes part of the email conversation.',
  );

  const commonDescription = `
  <span>${serviceDeskSupportedMessage}</span>
  <a href="${serviceDeskHelpPage}">${__('Learn more.')}</a>`;

  return {
    serviceDeskEnabledAndCanEditProjectSettings: {
      title: serviceDeskSupportedTitle,
      svgPath,
      description: `<p>${s__('ServiceDesk|Your users can send emails to this address:')}
      <code>${serviceDeskAddress}</code>
      </p>
      ${commonDescription}`,
    },
    serviceDeskEnabledAndCannotEditProjectSettings: {
      title: serviceDeskSupportedTitle,
      svgPath,
      description: commonDescription,
    },
    serviceDeskDisabledAndCanEditProjectSettings: {
      title: serviceDeskSupportedTitle,
      svgPath,
      description: commonDescription,
      primaryLink: editProjectPage,
      primaryText: s__('ServiceDesk|Enable Service Desk'),
    },
    serviceDeskDisabledAndCannotEditProjectSettings: {
      title: serviceDeskSupportedTitle,
      svgPath,
      description: commonDescription,
    },
    serviceDeskIsNotSupported: {
      title: s__('ServiceDesk|Service Desk is not supported'),
      svgPath,
      description: s__(
        'ServiceDesk|To enable Service Desk on this instance, an instance administrator must first set up incoming email.',
      ),
      primaryLink: incomingEmailHelpPage,
      primaryText: __('Learn more.'),
    },
    serviceDeskIsNotEnabled: {
      title: s__('ServiceDesk|Service Desk is not enabled'),
      svgPath,
      description: s__(
        'ServiceDesk|For help setting up the Service Desk for your instance, please contact an administrator.',
      ),
    },
  };
}

/**
 * Returns the attributes used for gl-empty-state in the Service Desk issues list.
 *
 * @param {Object} emptyStateMeta - Meta data used to generate empty state messages
 * @returns {Object}
 */
export function emptyStateHelper(emptyStateMeta) {
  const messages = generateMessages(emptyStateMeta);

  const { isServiceDeskSupported, canEditProjectSettings, isServiceDeskEnabled } = emptyStateMeta;

  if (isServiceDeskSupported) {
    if (isServiceDeskEnabled && canEditProjectSettings) {
      return messages.serviceDeskEnabledAndCanEditProjectSettings;
    }

    if (isServiceDeskEnabled && !canEditProjectSettings) {
      return messages.serviceDeskEnabledAndCannotEditProjectSettings;
    }

    // !isServiceDeskEnabled && canEditProjectSettings
    if (canEditProjectSettings) {
      return messages.serviceDeskDisabledAndCanEditProjectSettings;
    }

    // !isServiceDeskEnabled && !canEditProjectSettings
    return messages.serviceDeskDisabledAndCannotEditProjectSettings;
  }

  // !serviceDeskSupported && canEditProjectSettings
  if (canEditProjectSettings) {
    return messages.serviceDeskIsNotSupported;
  }

  // !serviceDeskSupported && !canEditProjectSettings
  return messages.serviceDeskIsNotEnabled;
}