cozy-harvest-lib 20.2.5 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/components/cards/ErrorAlert.js +105 -0
  3. package/dist/components/cards/ErrorAlert.stories.js +46 -0
  4. package/dist/components/cards/LaunchButton.js +64 -0
  5. package/dist/components/cards/LaunchTriggerAlert.js +26 -144
  6. package/dist/components/cards/LaunchTriggerAlert.spec.js +5 -5
  7. package/dist/components/cards/LaunchTriggerAlertMenu.js +31 -91
  8. package/dist/components/cards/MaintenanceAlert.js +73 -0
  9. package/dist/components/cards/MaintenanceAlert.stories.js +24 -0
  10. package/dist/components/cards/RunnableAlert.js +106 -0
  11. package/dist/components/cards/RunnableAlert.stories.js +56 -0
  12. package/dist/components/cards/RunningAlert.stories.js +16 -0
  13. package/dist/components/cards/TriggerAlert.js +78 -0
  14. package/dist/components/cards/TriggerAlert.stories.js +48 -0
  15. package/dist/components/cards/TriggerAlertTemplate.js +110 -0
  16. package/dist/components/cards/UnrunnableAlert.js +46 -0
  17. package/dist/components/cards/UnrunnableAlert.stories.js +18 -0
  18. package/dist/components/cards/__snapshots__/LaunchTriggerCard.spec.jsx.snap +2 -2
  19. package/dist/components/cards/actions/configureAction.js +39 -0
  20. package/dist/components/cards/actions/connectAction.js +37 -0
  21. package/dist/components/cards/actions/index.js +3 -0
  22. package/dist/components/cards/actions/launchAction.js +68 -0
  23. package/dist/components/cards/helpers.js +7 -22
  24. package/dist/components/cards/helpers.spec.js +9 -57
  25. package/dist/locales/en.json +1 -1
  26. package/dist/locales/fr.json +1 -1
  27. package/package.json +4 -12
  28. package/src/components/cards/ErrorAlert.jsx +120 -0
  29. package/src/components/cards/ErrorAlert.stories.jsx +50 -0
  30. package/src/components/cards/LaunchButton.jsx +71 -0
  31. package/src/components/cards/LaunchTriggerAlert.jsx +24 -180
  32. package/src/components/cards/LaunchTriggerAlert.spec.jsx +5 -5
  33. package/src/components/cards/LaunchTriggerAlertMenu.jsx +27 -110
  34. package/src/components/cards/MaintenanceAlert.jsx +77 -0
  35. package/src/components/cards/MaintenanceAlert.stories.jsx +29 -0
  36. package/src/components/cards/RunnableAlert.jsx +116 -0
  37. package/src/components/cards/RunnableAlert.stories.jsx +61 -0
  38. package/src/components/cards/RunningAlert.stories.jsx +21 -0
  39. package/src/components/cards/TriggerAlert.jsx +85 -0
  40. package/src/components/cards/TriggerAlert.stories.jsx +52 -0
  41. package/src/components/cards/TriggerAlertTemplate.jsx +125 -0
  42. package/src/components/cards/UnrunnableAlert.jsx +48 -0
  43. package/src/components/cards/UnrunnableAlert.stories.jsx +22 -0
  44. package/src/components/cards/__snapshots__/LaunchTriggerCard.spec.jsx.snap +2 -2
  45. package/src/components/cards/actions/configureAction.js +42 -0
  46. package/src/components/cards/actions/connectAction.js +29 -0
  47. package/src/components/cards/actions/index.js +3 -0
  48. package/src/components/cards/actions/launchAction.js +71 -0
  49. package/src/components/cards/helpers.js +7 -26
  50. package/src/components/cards/helpers.spec.js +9 -61
  51. package/src/locales/en.json +1 -1
  52. package/src/locales/fr.json +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,35 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [21.0.0](https://github.com/cozy/cozy-libs/compare/cozy-harvest-lib@20.2.5...cozy-harvest-lib@21.0.0) (2023-12-06)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * Remove Storybook from dependencies only use them in devDependencies ([c780148](https://github.com/cozy/cozy-libs/commit/c7801485512bef74f7b0f5016f8235908ee0460c))
12
+
13
+
14
+ ### Features
15
+
16
+ * Add ErrorAlert ([28a9516](https://github.com/cozy/cozy-libs/commit/28a9516d1d11b760cc9aea8e0a6ed64c3e77759e))
17
+ * Add LaunchButton ([ffc8f63](https://github.com/cozy/cozy-libs/commit/ffc8f6395b6cfd8b1197cde7d5ab1f8f3248486f))
18
+ * Add MaintenanceAlert ([eaf17f5](https://github.com/cozy/cozy-libs/commit/eaf17f5df7a5cdfcb1b5006e029f3346909bb6b9))
19
+ * Add RunnableAlert ([f31525f](https://github.com/cozy/cozy-libs/commit/f31525f627747f0a7079b335c059074b07cc327f))
20
+ * Add TriggerAlert ([0570f44](https://github.com/cozy/cozy-libs/commit/0570f4450b75bcf5b56b5fa9641840d95e06f816))
21
+ * Add TriggerAlertTemplate ([2e17695](https://github.com/cozy/cozy-libs/commit/2e176957be8e1aa540f50a76d5ff675404c65452))
22
+ * Add UnrunnableAlert ([b07cdba](https://github.com/cozy/cozy-libs/commit/b07cdba7ef002e9b4c864b0652f4f2edd37f779b))
23
+ * **TriggerAlert:** Improve wording for unknown ([572a936](https://github.com/cozy/cozy-libs/commit/572a936b3eaad79aa13dbb249c5310c5bcdd2e3c))
24
+ * Update cozy-client from 41.9.0 to 45.0.1 ([2d613a8](https://github.com/cozy/cozy-libs/commit/2d613a8d654964c5c28d790afa493fb4b8169b64))
25
+
26
+
27
+ ### BREAKING CHANGES
28
+
29
+ * you must have `cozy-client >= 45.0.1`
30
+
31
+
32
+
33
+
34
+
6
35
  ## [20.2.5](https://github.com/cozy/cozy-libs/compare/cozy-harvest-lib@20.2.4...cozy-harvest-lib@20.2.5) (2023-11-27)
7
36
 
8
37
 
@@ -0,0 +1,105 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import Icon from 'cozy-ui/transpiled/react/Icon';
4
+ import InfoIcon from 'cozy-ui/transpiled/react/Icons/Info';
5
+ import { LaunchButton } from './LaunchButton';
6
+ import { LaunchTriggerAlertMenu } from './LaunchTriggerAlertMenu';
7
+ import { TriggerAlertTemplate } from './TriggerAlertTemplate';
8
+ import { UnrunnableAlert } from './UnrunnableAlert';
9
+ import { launchAction, connectAction, configureAction } from './actions';
10
+ import { isDisconnected } from '../../helpers/konnectors';
11
+ import TriggerErrorDescription from '../infos/TriggerErrorDescription';
12
+ /**
13
+ * This component warns the user when the connector synchronisation is in error. It can also be used to restart synchronisation.
14
+ *
15
+ * @component
16
+ * @param {Object} props - The component props.
17
+ * @param {string} props.label - The label for the error alert.
18
+ * @param {Error} props.error - The error object.
19
+ * @param {string} props.konnectorRoot - The root URL of the konnector.
20
+ * @param {Object} props.trigger - The trigger object.
21
+ * @param {boolean} props.isRunning - Indicates if the konnector is running.
22
+ * @param {string} props.historyAction - The history action.
23
+ * @param {Object} props.flow - The flow object.
24
+ * @param {Object} props.account - The account object.
25
+ * @param {Object} props.intentsApi - The intents API object.
26
+ * @param {boolean} props.isRunnable - Indicates if the error is runnable.
27
+ * @returns {JSX.Element} The rendered error alert component.
28
+ */
29
+
30
+ function ErrorAlert(_ref) {
31
+ var label = _ref.label,
32
+ error = _ref.error,
33
+ konnectorRoot = _ref.konnectorRoot,
34
+ trigger = _ref.trigger,
35
+ isRunning = _ref.isRunning,
36
+ historyAction = _ref.historyAction,
37
+ flow = _ref.flow,
38
+ account = _ref.account,
39
+ intentsApi = _ref.intentsApi,
40
+ isRunnable = _ref.isRunnable;
41
+ var konnector = flow.konnector;
42
+ var isKonnectorDisconnected = isDisconnected(konnector, trigger);
43
+ var actions = [launchAction, connectAction, configureAction];
44
+ var options = {
45
+ flow: flow,
46
+ account: account,
47
+ intentsApi: intentsApi,
48
+ error: error,
49
+ historyAction: historyAction,
50
+ konnectorRoot: konnectorRoot,
51
+ trigger: trigger,
52
+ isRunning: isRunning,
53
+ isDisconnected: isKonnectorDisconnected
54
+ };
55
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TriggerAlertTemplate, {
56
+ block: true,
57
+ severity: "error",
58
+ icon: /*#__PURE__*/React.createElement(Icon, {
59
+ icon: InfoIcon
60
+ }),
61
+ label: label,
62
+ labelColor: "error",
63
+ showAction: isRunnable,
64
+ menu: /*#__PURE__*/React.createElement(LaunchTriggerAlertMenu, {
65
+ actions: actions,
66
+ options: options,
67
+ disabled: isRunning
68
+ }),
69
+ button: /*#__PURE__*/React.createElement(LaunchButton, {
70
+ konnectorRoot: konnectorRoot,
71
+ trigger: trigger,
72
+ isInError: true,
73
+ error: error,
74
+ historyAction: historyAction,
75
+ flow: flow,
76
+ account: account,
77
+ intentsApi: intentsApi,
78
+ isRunning: isRunning
79
+ })
80
+ }, /*#__PURE__*/React.createElement(TriggerErrorDescription, {
81
+ error: error,
82
+ konnector: konnector,
83
+ linkProps: {
84
+ className: 'u-error'
85
+ }
86
+ })), !isRunnable ? /*#__PURE__*/React.createElement(UnrunnableAlert, {
87
+ konnectorName: konnector.name,
88
+ className: "u-mt-1",
89
+ withoutIcon: true
90
+ }) : null);
91
+ }
92
+
93
+ ErrorAlert.propTypes = {
94
+ label: PropTypes.string.isRequired,
95
+ error: PropTypes.object.isRequired,
96
+ konnectorRoot: PropTypes.string.isRequired,
97
+ trigger: PropTypes.object.isRequired,
98
+ isRunning: PropTypes.bool.isRequired,
99
+ historyAction: PropTypes.func.isRequired,
100
+ flow: PropTypes.object.isRequired,
101
+ account: PropTypes.object.isRequired,
102
+ intentsApi: PropTypes.object,
103
+ isRunnable: PropTypes.bool.isRequired
104
+ };
105
+ export { ErrorAlert };
@@ -0,0 +1,46 @@
1
+ import { ErrorAlert } from './ErrorAlert';
2
+ import { KonnectorJobError } from '../../helpers/konnectors';
3
+ var meta = {
4
+ component: ErrorAlert,
5
+ args: {
6
+ label: 'Sync. il y a 2 mois',
7
+ error: new KonnectorJobError('LOGIN_FAILED'),
8
+ konnectorRoot: '/konnector/dummy',
9
+ trigger: {},
10
+ historyAction: function historyAction() {},
11
+ flow: {
12
+ konnector: {
13
+ name: 'Dummy',
14
+ type: 'konnector',
15
+ slug: 'dummy',
16
+ locales: {
17
+ en: {
18
+ description: 'Konnector used for debug purpose',
19
+ fields: {
20
+ date: {
21
+ label: 'Date'
22
+ },
23
+ error: {
24
+ label: 'Intended error'
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
30
+ },
31
+ account: {},
32
+ intentsApi: {},
33
+ isRunnable: true
34
+ }
35
+ };
36
+ export default meta;
37
+ export var Default = {
38
+ name: 'Default',
39
+ args: {}
40
+ };
41
+ export var NotRunnable = {
42
+ name: 'Not runnable',
43
+ args: {
44
+ isRunnable: false
45
+ }
46
+ };
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+ import { triggers as triggersModel } from 'cozy-client/dist/models/trigger';
3
+ import Button from 'cozy-ui/transpiled/react/Buttons';
4
+ import { useI18n } from 'cozy-ui/transpiled/react/providers/I18n';
5
+ import { isDisconnected } from '../../helpers/konnectors';
6
+ import { findKonnectorPolicy } from '../../konnector-policies';
7
+ import OpenOAuthWindowButton from '../AccountModalWithoutTabs/OpenOAuthWindowButton';
8
+
9
+ function LaunchButton() {
10
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
11
+ konnectorRoot = _ref.konnectorRoot,
12
+ trigger = _ref.trigger,
13
+ _ref$isInError = _ref.isInError,
14
+ isInError = _ref$isInError === void 0 ? false : _ref$isInError,
15
+ _ref$isRunning = _ref.isRunning,
16
+ isRunning = _ref$isRunning === void 0 ? false : _ref$isRunning,
17
+ error = _ref.error,
18
+ historyAction = _ref.historyAction,
19
+ flow = _ref.flow,
20
+ account = _ref.account,
21
+ intentsApi = _ref.intentsApi;
22
+
23
+ var _useI18n = useI18n(),
24
+ t = _useI18n.t;
25
+
26
+ var launch = flow.launch,
27
+ konnector = flow.konnector;
28
+ var isKonnectorDisconnected = isDisconnected(konnector);
29
+ var konnectorPolicy = findKonnectorPolicy(konnector);
30
+
31
+ var onSync = function onSync() {
32
+ if (konnectorPolicy.shouldLaunchRedirectToEdit(error)) {
33
+ return historyAction(konnectorRoot ? "".concat(konnectorRoot, "/accounts/").concat(triggersModel.getAccountId(trigger), "/edit") : '/edit', 'push');
34
+ } else {
35
+ launch({
36
+ autoSuccessTimer: false
37
+ });
38
+ }
39
+ };
40
+
41
+ if (!isKonnectorDisconnected) {
42
+ return null;
43
+ }
44
+
45
+ if (konnectorPolicy.shouldLaunchDisplayOAuthWindow(error)) {
46
+ return /*#__PURE__*/React.createElement(OpenOAuthWindowButton, {
47
+ flow: flow,
48
+ account: account,
49
+ intentsApi: intentsApi,
50
+ konnector: konnector
51
+ });
52
+ }
53
+
54
+ return /*#__PURE__*/React.createElement(Button, {
55
+ variant: "text",
56
+ color: isInError ? 'error' : undefined,
57
+ size: "small",
58
+ disabled: isRunning,
59
+ label: t('card.launchTrigger.button.label'),
60
+ onClick: onSync
61
+ });
62
+ }
63
+
64
+ export { LaunchButton };
@@ -1,57 +1,24 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import PropTypes from 'prop-types';
3
3
  import React, { useState, useEffect } from 'react';
4
- import { triggers as triggersModel } from 'cozy-client/dist/models/trigger';
5
4
  import Alert from 'cozy-ui/transpiled/react/Alert';
6
- import Button from 'cozy-ui/transpiled/react/Buttons';
7
- import Icon from 'cozy-ui/transpiled/react/Icon';
8
- import Info from 'cozy-ui/transpiled/react/Icons/Info';
9
- import WrenchCircleIcon from 'cozy-ui/transpiled/react/Icons/WrenchCircle';
10
5
  import Snackbar from 'cozy-ui/transpiled/react/Snackbar';
11
- import Spinner from 'cozy-ui/transpiled/react/Spinner';
12
- import Typography from 'cozy-ui/transpiled/react/Typography';
13
- import { makeStyles } from 'cozy-ui/transpiled/react/styles';
14
- import LaunchTriggerAlertMenu from './LaunchTriggerAlertMenu';
15
6
  import { RunningAlert } from './RunningAlert';
16
- import { makeLabel } from './helpers';
17
- import { isDisconnected } from '../../helpers/konnectors';
7
+ import { TriggerAlert } from './TriggerAlert';
18
8
  import { intentsApiProptype } from '../../helpers/proptypes';
19
- import { getKonnectorSlug } from '../../helpers/triggers';
20
9
  import { findKonnectorPolicy } from '../../konnector-policies';
21
10
  import { SUCCESS } from '../../models/flowEvents';
22
11
  import { useFlowState } from '../../models/withConnectionFlow';
23
- import OpenOAuthWindowButton from '../AccountModalWithoutTabs/OpenOAuthWindowButton';
24
- import KonnectorIcon from '../KonnectorIcon';
25
12
  import withAdaptiveRouter from '../hoc/withRouter';
26
13
  import useMaintenanceStatus from '../hooks/useMaintenanceStatus';
27
- import TriggerErrorDescription from '../infos/TriggerErrorDescription';
28
- import TriggerMaintenanceDescription from '../infos/TriggerMaintenanceDescription';
29
- var useStyles = makeStyles({
30
- root: {
31
- padding: '.5rem 1rem'
32
- },
33
- message: function message(_ref) {
34
- var block = _ref.block;
35
- return block && {
36
- maxWidth: 'calc(100% - 16px - .5rem)' // 16px is the size of the icon
37
-
38
- };
39
- },
40
- action: {
41
- marginRight: '-.5rem'
42
- },
43
- icon: {
44
- marginRight: '.5rem'
45
- }
46
- });
47
- export var LaunchTriggerAlert = function LaunchTriggerAlert(_ref2) {
48
- var flow = _ref2.flow,
49
- t = _ref2.t,
50
- konnectorRoot = _ref2.konnectorRoot,
51
- historyAction = _ref2.historyAction,
52
- intentsApi = _ref2.intentsApi,
53
- account = _ref2.account,
54
- withMaintenanceDescription = _ref2.withMaintenanceDescription;
14
+ export var LaunchTriggerAlert = function LaunchTriggerAlert(_ref) {
15
+ var flow = _ref.flow,
16
+ t = _ref.t,
17
+ konnectorRoot = _ref.konnectorRoot,
18
+ historyAction = _ref.historyAction,
19
+ intentsApi = _ref.intentsApi,
20
+ account = _ref.account,
21
+ withMaintenanceDescription = _ref.withMaintenanceDescription;
55
22
 
56
23
  var _useState = useState(false),
57
24
  _useState2 = _slicedToArray(_useState, 2),
@@ -65,125 +32,40 @@ export var LaunchTriggerAlert = function LaunchTriggerAlert(_ref2) {
65
32
  expectingTriggerLaunch = _useFlowState.expectingTriggerLaunch,
66
33
  status = _useFlowState.status;
67
34
 
68
- var launch = flow.launch,
69
- konnector = flow.konnector;
35
+ var konnector = flow.konnector;
70
36
 
71
37
  var _useMaintenanceStatus = useMaintenanceStatus(konnector.slug),
72
38
  _useMaintenanceStatus2 = _useMaintenanceStatus.data,
73
39
  isInMaintenance = _useMaintenanceStatus2.isInMaintenance,
74
- maintenanceMessages = _useMaintenanceStatus2.messages;
40
+ maintenanceMessages = _useMaintenanceStatus2.messages,
41
+ maintenanceFetchStatus = _useMaintenanceStatus.fetchStatus;
75
42
 
76
43
  var isInError = !!error;
77
- var block = isInError || !!withMaintenanceDescription && isInMaintenance;
78
- var styles = useStyles({
79
- block: block
80
- });
44
+ /** The connector is considered to be running if the trigger is waiting to be launched */
45
+
46
+ var isRunning = running || expectingTriggerLaunch;
81
47
  var konnectorPolicy = findKonnectorPolicy(konnector);
82
48
  var isKonnectorRunnable = konnectorPolicy.isRunnable();
83
- var isKonnectorDisconnected = isDisconnected(konnector, trigger);
84
49
  useEffect(function () {
85
50
  if (status === SUCCESS) {
86
51
  setShowSuccessSnackbar(true);
87
52
  }
88
53
  }, [status]);
89
- var SyncButtonAction = konnectorPolicy.shouldLaunchRedirectToEdit(error) ? function () {
90
- return historyAction(konnectorRoot ? "".concat(konnectorRoot, "/accounts/").concat(triggersModel.getAccountId(trigger), "/edit") : '/edit', 'push');
91
- } : function () {
92
- return launch({
93
- autoSuccessTimer: false
94
- });
95
- };
96
-
97
- var alertColor = function alertColor() {
98
- if (isInError) return undefined;
99
- if (isInMaintenance) return 'var(--grey50)';
100
-
101
- if (!isKonnectorRunnable) {
102
- return 'var(--grey100)';
103
- }
104
-
105
- return 'var(--paperBackgroundColor)';
106
- };
107
-
108
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Alert, {
109
- color: alertColor(),
110
- severity: isInError ? 'error' : undefined,
111
- block: block,
112
- icon: isInError ? undefined : isInMaintenance || !isKonnectorRunnable ? /*#__PURE__*/React.createElement(Icon, {
113
- icon: isInMaintenance ? WrenchCircleIcon : Info,
114
- color: isInMaintenance ? 'var(--secondaryTextColor)' : 'var(--iconTextColor)'
115
- }) : running ? /*#__PURE__*/React.createElement(Spinner, {
116
- className: "u-flex",
117
- noMargin: true
118
- }) : /*#__PURE__*/React.createElement(KonnectorIcon, {
119
- className: "u-w-1 u-h-1",
120
- konnector: konnector,
121
- konnectorSlug: getKonnectorSlug(trigger)
122
- }),
123
- action: isKonnectorRunnable && /*#__PURE__*/React.createElement(React.Fragment, null, !isInMaintenance && !isKonnectorDisconnected && (konnectorPolicy.shouldLaunchDisplayOAuthWindow(error) ? /*#__PURE__*/React.createElement(OpenOAuthWindowButton, {
124
- flow: flow,
125
- account: account,
126
- intentsApi: intentsApi,
127
- konnector: konnector
128
- }) : /*#__PURE__*/React.createElement(Button, {
129
- variant: "text",
130
- color: isInError ? 'error' : undefined,
131
- size: "small",
132
- disabled: running,
133
- label: t('card.launchTrigger.button.label'),
134
- onClick: SyncButtonAction
135
- })), !block && /*#__PURE__*/React.createElement("div", {
136
- style: {
137
- margin: '-.5rem -.5rem -.5rem 0'
138
- }
139
- }, /*#__PURE__*/React.createElement(LaunchTriggerAlertMenu, {
140
- flow: flow,
141
- t: t,
142
- konnectorRoot: konnectorRoot,
143
- historyAction: historyAction,
144
- account: account,
145
- intentsApi: intentsApi
146
- }))),
147
- classes: styles
148
- }, /*#__PURE__*/React.createElement("div", {
149
- className: "u-flex-auto u-flex u-flex-column",
150
- style: {
151
- gap: '.5rem'
152
- }
153
- }, /*#__PURE__*/React.createElement("div", {
154
- className: "u-flex u-flex-items-center"
155
- }, /*#__PURE__*/React.createElement(Typography, {
156
- variant: "caption",
157
- className: "u-flex-auto",
158
- color: isInError ? 'error' : isInMaintenance ? 'textSecondary' : undefined
159
- }, makeLabel({
160
- t: t,
161
- konnector: konnector,
54
+ return /*#__PURE__*/React.createElement(React.Fragment, null, maintenanceFetchStatus === 'loaded' ? /*#__PURE__*/React.createElement(TriggerAlert, {
162
55
  trigger: trigger,
163
- running: running,
164
- expectingTriggerLaunch: expectingTriggerLaunch,
56
+ isRunning: isRunning,
57
+ isRunnable: isKonnectorRunnable,
58
+ isInError: isInError,
165
59
  isInMaintenance: isInMaintenance,
166
- isKonnectorRunnable: isKonnectorRunnable
167
- })), block && /*#__PURE__*/React.createElement("div", {
168
- style: {
169
- margin: '-1rem -1rem -1rem 0'
170
- }
171
- }, /*#__PURE__*/React.createElement(LaunchTriggerAlertMenu, {
172
- flow: flow,
173
- t: t,
60
+ error: error,
61
+ withMaintenanceDescription: withMaintenanceDescription,
62
+ maintenanceMessages: maintenanceMessages,
63
+ account: account,
174
64
  konnectorRoot: konnectorRoot,
175
65
  historyAction: historyAction,
176
- account: account,
177
- intentsApi: intentsApi
178
- }))), block && isInError && /*#__PURE__*/React.createElement(TriggerErrorDescription, {
179
- error: error,
180
- konnector: konnector,
181
- linkProps: {
182
- className: 'u-error'
183
- }
184
- }), block && isInMaintenance && /*#__PURE__*/React.createElement(TriggerMaintenanceDescription, {
185
- maintenanceMessages: maintenanceMessages
186
- }))), konnectorPolicy.shouldDisplayRunningAlert({
66
+ intentsApi: intentsApi,
67
+ flow: flow
68
+ }) : null, konnectorPolicy.shouldDisplayRunningAlert({
187
69
  running: running
188
70
  }) && /*#__PURE__*/React.createElement(RunningAlert, null), /*#__PURE__*/React.createElement(Snackbar, {
189
71
  open: showSuccessSnackbar,
@@ -140,7 +140,7 @@ describe('LaunchTriggerAlert', function () {
140
140
 
141
141
  case 3:
142
142
  fireEvent.click(root.getByTestId('alert-menu-button'));
143
- buttons = root.getAllByText('card.launchTrigger.button.label');
143
+ buttons = root.getAllByText('Synchronize');
144
144
  expect(buttons.length).toBe(2);
145
145
  _iterator = _createForOfIteratorHelper(buttons);
146
146
 
@@ -182,7 +182,7 @@ describe('LaunchTriggerAlert', function () {
182
182
 
183
183
  case 3:
184
184
  fireEvent.click(root.getByTestId('alert-menu-button'));
185
- buttons = root.getAllByText('card.launchTrigger.button.label');
185
+ buttons = root.getAllByText('Synchronize');
186
186
  expect(buttons.length).toBe(2);
187
187
  _iterator2 = _createForOfIteratorHelper(buttons);
188
188
 
@@ -219,11 +219,11 @@ describe('LaunchTriggerAlert', function () {
219
219
  }), root = _setup3.root, flow = _setup3.flow, historyAction = _setup3.historyAction;
220
220
  _context3.next = 3;
221
221
  return waitFor(function () {
222
- return root.getByText('card.launchTrigger.button.label');
222
+ return root.getByText('Synchronize');
223
223
  });
224
224
 
225
225
  case 3:
226
- fireEvent.click(root.getByText('card.launchTrigger.button.label'));
226
+ fireEvent.click(root.getByText('Synchronize'));
227
227
  expect(historyAction).toHaveBeenCalledWith('/edit', 'push');
228
228
  expect(flow.launch).not.toHaveBeenCalled();
229
229
 
@@ -284,7 +284,7 @@ describe('LaunchTriggerAlert', function () {
284
284
 
285
285
  case 4:
286
286
  fireEvent.click(root.getByTestId('alert-menu-button'));
287
- buttons = root.getAllByText('card.launchTrigger.button.label');
287
+ buttons = root.getAllByText('Synchronize');
288
288
  expect(buttons.length).toBe(2);
289
289
  _iterator3 = _createForOfIteratorHelper(buttons);
290
290
 
@@ -1,115 +1,55 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import PropTypes from 'prop-types';
3
3
  import React, { useRef, useState } from 'react';
4
- import { triggers as triggersModel } from 'cozy-client/dist/models/trigger';
4
+ import ActionsMenu from 'cozy-ui/transpiled/react/ActionsMenu';
5
+ import { makeActions } from 'cozy-ui/transpiled/react/ActionsMenu/Actions';
5
6
  import Icon from 'cozy-ui/transpiled/react/Icon';
6
7
  import IconButton from 'cozy-ui/transpiled/react/IconButton';
7
8
  import DotsIcon from 'cozy-ui/transpiled/react/Icons/Dots';
8
- import GearIcon from 'cozy-ui/transpiled/react/Icons/Gear';
9
- import SyncIcon from 'cozy-ui/transpiled/react/Icons/Sync';
10
- import ActionMenu, { ActionMenuItem } from 'cozy-ui/transpiled/react/deprecated/ActionMenu';
11
- import { isDisconnected } from '../../helpers/konnectors';
12
- import { intentsApiProptype } from '../../helpers/proptypes';
13
- import { findKonnectorPolicy } from '../../konnector-policies';
14
- import { useFlowState } from '../../models/withConnectionFlow';
15
- import OpenOAuthWindowButton from '../AccountModalWithoutTabs/OpenOAuthWindowButton';
16
- import withAdaptiveRouter from '../hoc/withRouter';
17
- import useMaintenanceStatus from '../hooks/useMaintenanceStatus';
18
9
 
19
10
  var LaunchTriggerAlertMenu = function LaunchTriggerAlertMenu(_ref) {
20
- var flow = _ref.flow,
21
- t = _ref.t,
22
- konnectorRoot = _ref.konnectorRoot,
23
- historyAction = _ref.historyAction,
24
- account = _ref.account,
25
- intentsApi = _ref.intentsApi;
26
-
27
- var _useFlowState = useFlowState(flow),
28
- running = _useFlowState.running,
29
- trigger = _useFlowState.trigger,
30
- error = _useFlowState.error;
31
-
32
- var launch = flow.launch,
33
- konnector = flow.konnector;
34
-
35
- var _useMaintenanceStatus = useMaintenanceStatus(konnector.slug),
36
- isInMaintenance = _useMaintenanceStatus.data.isInMaintenance;
37
-
38
- var isKonnectorDisconnected = isDisconnected(konnector, trigger);
39
- var konnectorPolicy = findKonnectorPolicy(konnector);
40
- var isKonnectorRunnable = konnectorPolicy.isRunnable();
41
- var isClisk = konnectorPolicy.name === 'clisk';
11
+ var actions = _ref.actions,
12
+ options = _ref.options,
13
+ disabled = _ref.disabled;
42
14
  var anchorRef = useRef();
43
15
 
44
16
  var _useState = useState(false),
45
17
  _useState2 = _slicedToArray(_useState, 2),
46
- showOptions = _useState2[0],
47
- setShowOptions = _useState2[1];
18
+ isMenuDisplayed = _useState2[0],
19
+ setMenuDisplayed = _useState2[1];
20
+
21
+ var actionsWithOptions = makeActions(actions, options);
48
22
 
49
- var SyncButtonAction = konnectorPolicy.shouldLaunchRedirectToEdit(error) ? function () {
50
- return historyAction(konnectorRoot ? "".concat(konnectorRoot, "/accounts/").concat(triggersModel.getAccountId(trigger), "/edit") : '/edit', 'push');
51
- } : function () {
52
- return launch({
53
- autoSuccessTimer: false
54
- });
23
+ var toggleMenu = function toggleMenu() {
24
+ return setMenuDisplayed(!isMenuDisplayed);
55
25
  };
26
+
56
27
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(IconButton, {
57
28
  ref: anchorRef,
58
- onClick: function onClick() {
59
- return setShowOptions(true);
60
- },
61
- "data-testid": "alert-menu-button"
29
+ onClick: toggleMenu,
30
+ "data-testid": "alert-menu-button",
31
+ disabled: disabled
62
32
  }, /*#__PURE__*/React.createElement(Icon, {
63
33
  icon: DotsIcon
64
- })), showOptions && /*#__PURE__*/React.createElement(ActionMenu, {
65
- anchorElRef: anchorRef,
66
- autoclose: true,
67
- onClose: function onClose() {
68
- return setShowOptions(false);
69
- }
70
- }, isKonnectorRunnable && !running && !isInMaintenance && !isKonnectorDisconnected && (konnectorPolicy.shouldLaunchDisplayOAuthWindow(error) ? /*#__PURE__*/React.createElement(OpenOAuthWindowButton, {
71
- flow: flow,
72
- account: account,
73
- intentsApi: intentsApi,
74
- konnector: konnector,
75
- actionMenuItem: true,
76
- onClick: function onClick() {
77
- return setShowOptions(false);
78
- }
79
- }) : /*#__PURE__*/React.createElement(ActionMenuItem, {
80
- left: /*#__PURE__*/React.createElement(Icon, {
81
- icon: SyncIcon
82
- }),
83
- onClick: function onClick() {
84
- SyncButtonAction();
85
- setShowOptions(false);
86
- }
87
- }, t('card.launchTrigger.button.label'))), !isKonnectorDisconnected && /*#__PURE__*/React.createElement(ActionMenuItem, {
88
- left: /*#__PURE__*/React.createElement(Icon, {
89
- icon: GearIcon
90
- }),
91
- onClick: function onClick() {
92
- return historyAction(konnectorRoot ? "".concat(konnectorRoot, "/accounts/").concat(triggersModel.getAccountId(trigger), "/config") : '/config', 'push');
93
- }
94
- }, t('card.launchTrigger.configure')), !isClisk && isKonnectorDisconnected && /*#__PURE__*/React.createElement(ActionMenuItem, {
95
- left: /*#__PURE__*/React.createElement(Icon, {
96
- icon: GearIcon
97
- }),
98
- onClick: function onClick() {
99
- return historyAction("".concat(konnectorRoot, "/new"), 'push');
100
- }
101
- }, t('card.launchTrigger.connect'))));
34
+ })), isMenuDisplayed ? /*#__PURE__*/React.createElement(ActionsMenu, {
35
+ ref: anchorRef,
36
+ open: true,
37
+ actions: actionsWithOptions,
38
+ anchorOrigin: {
39
+ vertical: 'bottom',
40
+ horizontal: 'right'
41
+ },
42
+ autoClose: true,
43
+ onClose: toggleMenu
44
+ }) : null);
102
45
  };
103
46
 
104
47
  LaunchTriggerAlertMenu.defaultProps = {
105
- konnectorRoot: ''
48
+ actions: [],
49
+ options: {}
106
50
  };
107
51
  LaunchTriggerAlertMenu.propTypes = {
108
- flow: PropTypes.object,
109
- t: PropTypes.func,
110
- konnectorRoot: PropTypes.string,
111
- historyAction: PropTypes.func,
112
- intentsApi: intentsApiProptype,
113
- account: PropTypes.object
52
+ actions: PropTypes.arrayOf(PropTypes.func).isRequired,
53
+ options: PropTypes.object.isRequired
114
54
  };
115
- export default withAdaptiveRouter(LaunchTriggerAlertMenu);
55
+ export { LaunchTriggerAlertMenu };