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: 0a34b75437700212bc75a6116a8b8a79878a4248 (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 { __ } 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 = __(
    'Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab',
  );

  const serviceDeskSupportedMessage = __(
    'Those emails automatically become issues (with the comments becoming the email conversation) listed here.',
  );

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

  return {
    serviceDeskEnabledAndCanEditProjectSettings: {
      title: serviceDeskSupportedTitle,
      svgPath,
      description: `<p>${__('Have your users email')}
      <code>${serviceDeskAddress}</code>
      </p>
      ${commonDescription}`,
    },
    serviceDeskEnabledAndCannotEditProjectSettings: {
      title: serviceDeskSupportedTitle,
      svgPath,
      description: commonDescription,
    },
    serviceDeskDisabledAndCanEditProjectSettings: {
      title: serviceDeskSupportedTitle,
      svgPath,
      description: commonDescription,
      primaryLink: editProjectPage,
      primaryText: __('Turn on Service Desk'),
    },
    serviceDeskDisabledAndCannotEditProjectSettings: {
      title: serviceDeskSupportedTitle,
      svgPath,
      description: commonDescription,
    },
    serviceDeskIsNotSupported: {
      title: __('Service Desk is not supported'),
      svgPath,
      description: __(
        'In order to enable Service Desk for your instance, you must first set up incoming email.',
      ),
      primaryLink: incomingEmailHelpPage,
      primaryText: __('More information'),
    },
    serviceDeskIsNotEnabled: {
      title: __('Service Desk is not enabled'),
      svgPath,
      description: __(
        '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;
}