cozy-harvest-lib 22.0.8 → 22.2.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.
- package/CHANGELOG.md +23 -0
- package/dist/datacards/DoctypeDebugCard.js +72 -0
- package/dist/datacards/DoctypeDebugCard.stories.js +152 -0
- package/dist/locales/en.json +4 -0
- package/dist/locales/fr.json +4 -0
- package/package.json +5 -4
- package/src/datacards/DoctypeDebugCard.jsx +85 -0
- package/src/datacards/DoctypeDebugCard.stories.jsx +179 -0
- package/src/locales/en.json +4 -0
- package/src/locales/fr.json +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,29 @@
|
|
|
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
|
+
# [22.2.0](https://github.com/cozy/cozy-libs/compare/cozy-harvest-lib@22.1.0...cozy-harvest-lib@22.2.0) (2024-01-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Add the UNKNOWN_ERROR.PARTIAL_SYNC konnector error message ([8532ee1](https://github.com/cozy/cozy-libs/commit/8532ee1ae2b22f3c3b166ae9e2d6d4e9ac0f343c))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [22.1.0](https://github.com/cozy/cozy-libs/compare/cozy-harvest-lib@22.0.8...cozy-harvest-lib@22.1.0) (2024-01-25)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* Add DoctypeDebugCard component ([0741319](https://github.com/cozy/cozy-libs/commit/07413196c1dd82fa23c37cc96737399eb99ea2e2))
|
|
23
|
+
* Upgrade cozy-client to 45.1.0 ([05e8d65](https://github.com/cozy/cozy-libs/commit/05e8d65289cf40833997bcbacef62e2cd9de3adb))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
6
29
|
## [22.0.8](https://github.com/cozy/cozy-libs/compare/cozy-harvest-lib@22.0.7...cozy-harvest-lib@22.0.8) (2024-01-23)
|
|
7
30
|
|
|
8
31
|
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import ReactJsonPrint from 'react-json-print';
|
|
4
|
+
import CozyClient, { Q, useQuery, hasQueryBeenLoaded } from 'cozy-client';
|
|
5
|
+
import Button from 'cozy-ui/transpiled/react/Buttons';
|
|
6
|
+
import Card from 'cozy-ui/transpiled/react/Card';
|
|
7
|
+
import Divider from 'cozy-ui/transpiled/react/Divider';
|
|
8
|
+
import Typography from 'cozy-ui/transpiled/react/Typography';
|
|
9
|
+
import logger from '../logger';
|
|
10
|
+
/**
|
|
11
|
+
* This component display json extracted doctype data
|
|
12
|
+
*
|
|
13
|
+
* @component
|
|
14
|
+
* @param {Object} props - The component props.
|
|
15
|
+
* @param {string} props.doctype - The doctype name
|
|
16
|
+
* @param {Array} props.data - The array of doctype values
|
|
17
|
+
* @returns {JSX.Element} The rendered DoctypeDebugCard component.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
var DoctypeDebugCard = function DoctypeDebugCard(_ref) {
|
|
21
|
+
var _navigator$clipboard;
|
|
22
|
+
|
|
23
|
+
var sourceAccountIdentifier = _ref.sourceAccountIdentifier,
|
|
24
|
+
konnector = _ref.konnector,
|
|
25
|
+
doctype = _ref.doctype;
|
|
26
|
+
var savedDocuments = useQuery(Q(doctype).where({
|
|
27
|
+
cozyMetadata: {
|
|
28
|
+
createdByApp: konnector.slug,
|
|
29
|
+
sourceAccountIdentifier: sourceAccountIdentifier
|
|
30
|
+
}
|
|
31
|
+
}).indexFields(['cozyMetadata.createdByApp', 'cozyMetadata.sourceAccountIdentifier', 'cozyMetadata.updatedAt']).sortBy([{
|
|
32
|
+
'cozyMetadata.createdByApp': 'desc'
|
|
33
|
+
}, {
|
|
34
|
+
'cozyMetadata.sourceAccountIdentifier': 'desc'
|
|
35
|
+
}, {
|
|
36
|
+
'cozyMetadata.updatedAt': 'desc'
|
|
37
|
+
}]).limitBy(30), {
|
|
38
|
+
as: "".concat(doctype, "/createdByApp/").concat(konnector.slug, "/sourceAccountIdentifier/").concat(sourceAccountIdentifier),
|
|
39
|
+
fetchPolicy: CozyClient.fetchPolicies.olderThan(30 * 1000)
|
|
40
|
+
});
|
|
41
|
+
var loaded = hasQueryBeenLoaded(savedDocuments);
|
|
42
|
+
var failed = savedDocuments.fetchStatus === 'failed';
|
|
43
|
+
|
|
44
|
+
if (failed) {
|
|
45
|
+
logger.error("DoctypeDebugCard ".concat(doctype, " : failed to fetch"));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
var clipBoardAvailable = (_navigator$clipboard = navigator.clipboard) === null || _navigator$clipboard === void 0 ? void 0 : _navigator$clipboard.writeText;
|
|
49
|
+
return !failed && loaded ? /*#__PURE__*/React.createElement(Card, null, /*#__PURE__*/React.createElement(Typography, {
|
|
50
|
+
variant: "button"
|
|
51
|
+
}, doctype), clipBoardAvailable ? /*#__PURE__*/React.createElement(Button, {
|
|
52
|
+
label: "copy",
|
|
53
|
+
variant: "text",
|
|
54
|
+
size: "small",
|
|
55
|
+
onClick: function onClick() {
|
|
56
|
+
return navigator.clipboard.writeText(JSON.stringify(savedDocuments.data, null, 2)).catch(function (err) {
|
|
57
|
+
return logger.error("Could not copy json object to clipboard: ".concat(err.message));
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}) : null, /*#__PURE__*/React.createElement(Divider, {
|
|
61
|
+
className: "u-ml-0 u-maw-100 u-mb-half"
|
|
62
|
+
}), /*#__PURE__*/React.createElement(ReactJsonPrint, {
|
|
63
|
+
dataObject: savedDocuments.data
|
|
64
|
+
})) : null;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
DoctypeDebugCard.propTypes = {
|
|
68
|
+
sourceAccountIdentifier: PropTypes.string,
|
|
69
|
+
konnector: PropTypes.object,
|
|
70
|
+
doctype: PropTypes.string
|
|
71
|
+
};
|
|
72
|
+
export default DoctypeDebugCard;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { CozyProvider } from 'cozy-client';
|
|
3
|
+
import { createFakeClient } from 'cozy-client/dist/mock';
|
|
4
|
+
import DoctypeDebugCard from './DoctypeDebugCard';
|
|
5
|
+
var meta = {
|
|
6
|
+
component: DoctypeDebugCard,
|
|
7
|
+
render: function render() {
|
|
8
|
+
var data = [{
|
|
9
|
+
_id: '180e24edac1433626f57a548481c045b',
|
|
10
|
+
_rev: '1-40014a89ba8dddc04d9718461e543303',
|
|
11
|
+
amount: 51.77,
|
|
12
|
+
cozyMetadata: {
|
|
13
|
+
createdAt: '2023-09-01T08:20:45.774Z',
|
|
14
|
+
createdByApp: 'template',
|
|
15
|
+
createdByAppVersion: '1.0.0',
|
|
16
|
+
doctypeVersion: 1,
|
|
17
|
+
metadataVersion: 1,
|
|
18
|
+
sourceAccount: '180e24edac1433626f57a548481aa62d',
|
|
19
|
+
sourceAccountIdentifier: 'testSourceAccountIdentifier',
|
|
20
|
+
updatedAt: '2023-09-01T08:20:45.774Z',
|
|
21
|
+
updatedByApps: [{
|
|
22
|
+
date: '2023-09-01T08:20:45.774Z',
|
|
23
|
+
slug: 'template',
|
|
24
|
+
version: '1.0.0'
|
|
25
|
+
}]
|
|
26
|
+
},
|
|
27
|
+
currency: 'EUR',
|
|
28
|
+
date: '2023-09-01T08:20:31.338Z',
|
|
29
|
+
filename: '2023-09-01_template_51.77EUR.jpg',
|
|
30
|
+
fileurl: 'http://books.toscrape.com/media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg',
|
|
31
|
+
invoice: 'io.cozy.files:180e24edac1433626f57a548481aca62',
|
|
32
|
+
matchingCriterias: {
|
|
33
|
+
labelRegex: '\\bbooks\\b'
|
|
34
|
+
},
|
|
35
|
+
title: 'A Light in the Attic',
|
|
36
|
+
vendor: 'template'
|
|
37
|
+
}, {
|
|
38
|
+
_id: '180e24edac1433626f57a548481c136e',
|
|
39
|
+
_rev: '1-54702210d9be33650da61001cdff18cc',
|
|
40
|
+
amount: 45.17,
|
|
41
|
+
cozyMetadata: {
|
|
42
|
+
createdAt: '2023-09-01T08:20:45.837Z',
|
|
43
|
+
createdByApp: 'template',
|
|
44
|
+
createdByAppVersion: '1.0.0',
|
|
45
|
+
doctypeVersion: 1,
|
|
46
|
+
metadataVersion: 1,
|
|
47
|
+
sourceAccount: '180e24edac1433626f57a548481aa62d',
|
|
48
|
+
sourceAccountIdentifier: 'testSourceAccountIdentifier',
|
|
49
|
+
updatedAt: '2023-09-01T08:20:45.837Z',
|
|
50
|
+
updatedByApps: [{
|
|
51
|
+
date: '2023-09-01T08:20:45.837Z',
|
|
52
|
+
slug: 'template',
|
|
53
|
+
version: '1.0.0'
|
|
54
|
+
}]
|
|
55
|
+
},
|
|
56
|
+
currency: 'EUR',
|
|
57
|
+
date: '2023-09-01T08:20:31.400Z',
|
|
58
|
+
filename: '2023-09-01_template_45.17EUR.jpg',
|
|
59
|
+
fileurl: 'http://books.toscrape.com/media/cache/27/a5/27a53d0bb95bdd88288eaf66c9230d7e.jpg',
|
|
60
|
+
invoice: 'io.cozy.files:180e24edac1433626f57a548481ad96a',
|
|
61
|
+
matchingCriterias: {
|
|
62
|
+
labelRegex: '\\bbooks\\b'
|
|
63
|
+
},
|
|
64
|
+
title: "It's Only the Himalayas",
|
|
65
|
+
vendor: 'template'
|
|
66
|
+
}, {
|
|
67
|
+
_id: '180e24edac1433626f57a548481c179f',
|
|
68
|
+
_rev: '1-d1b5f977455d918b2c2b9fd27f2e8120',
|
|
69
|
+
amount: 51.33,
|
|
70
|
+
cozyMetadata: {
|
|
71
|
+
createdAt: '2023-09-01T08:20:45.884Z',
|
|
72
|
+
createdByApp: 'template',
|
|
73
|
+
createdByAppVersion: '1.0.0',
|
|
74
|
+
doctypeVersion: 1,
|
|
75
|
+
metadataVersion: 1,
|
|
76
|
+
sourceAccount: '180e24edac1433626f57a548481aa62d',
|
|
77
|
+
sourceAccountIdentifier: 'testSourceAccountIdentifier',
|
|
78
|
+
updatedAt: '2023-09-01T08:20:45.884Z',
|
|
79
|
+
updatedByApps: [{
|
|
80
|
+
date: '2023-09-01T08:20:45.884Z',
|
|
81
|
+
slug: 'template',
|
|
82
|
+
version: '1.0.0'
|
|
83
|
+
}]
|
|
84
|
+
},
|
|
85
|
+
currency: 'EUR',
|
|
86
|
+
date: '2023-09-01T08:20:31.400Z',
|
|
87
|
+
filename: '2023-09-01_template_51.33EUR.jpg',
|
|
88
|
+
fileurl: 'http://books.toscrape.com/media/cache/0b/bc/0bbcd0a6f4bcd81ccb1049a52736406e.jpg',
|
|
89
|
+
invoice: 'io.cozy.files:180e24edac1433626f57a548481ae79c',
|
|
90
|
+
matchingCriterias: {
|
|
91
|
+
labelRegex: '\\bbooks\\b'
|
|
92
|
+
},
|
|
93
|
+
title: 'Libertarianism for Beginners',
|
|
94
|
+
vendor: 'template'
|
|
95
|
+
}, {
|
|
96
|
+
_id: '180e24edac1433626f57a548481c1c75',
|
|
97
|
+
_rev: '1-292df85b486fe8e67ce5d4d4c5293771',
|
|
98
|
+
amount: 37.59,
|
|
99
|
+
cozyMetadata: {
|
|
100
|
+
createdAt: '2023-09-01T08:20:45.935Z',
|
|
101
|
+
createdByApp: 'template',
|
|
102
|
+
createdByAppVersion: '1.0.0',
|
|
103
|
+
doctypeVersion: 1,
|
|
104
|
+
metadataVersion: 1,
|
|
105
|
+
sourceAccount: '180e24edac1433626f57a548481aa62d',
|
|
106
|
+
sourceAccountIdentifier: 'testSourceAccountIdentifier',
|
|
107
|
+
updatedAt: '2023-09-01T08:20:45.935Z',
|
|
108
|
+
updatedByApps: [{
|
|
109
|
+
date: '2023-09-01T08:20:45.935Z',
|
|
110
|
+
slug: 'template',
|
|
111
|
+
version: '1.0.0'
|
|
112
|
+
}]
|
|
113
|
+
},
|
|
114
|
+
currency: 'EUR',
|
|
115
|
+
date: '2023-09-01T08:20:31.400Z',
|
|
116
|
+
filename: '2023-09-01_template_37.59EUR.jpg',
|
|
117
|
+
fileurl: 'http://books.toscrape.com/media/cache/09/a3/09a3aef48557576e1a85ba7efea8ecb7.jpg',
|
|
118
|
+
invoice: 'io.cozy.files:180e24edac1433626f57a548481af3d8',
|
|
119
|
+
matchingCriterias: {
|
|
120
|
+
labelRegex: '\\bbooks\\b'
|
|
121
|
+
},
|
|
122
|
+
title: 'Mesaerion: The Best Science Fiction Stories 1800-1849',
|
|
123
|
+
vendor: 'template'
|
|
124
|
+
}];
|
|
125
|
+
var client = createFakeClient({
|
|
126
|
+
queries: {
|
|
127
|
+
'doctypeDebugCard_io.cozy.bills': {
|
|
128
|
+
doctype: 'io.cozy.bills',
|
|
129
|
+
definition: {
|
|
130
|
+
doctype: 'io.cozy.bills',
|
|
131
|
+
id: "io.cozy.bills/createdByApp/template/sourceAccountIdentifier/testSourceAccountIdentifier"
|
|
132
|
+
},
|
|
133
|
+
data: data
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
var konnector = {
|
|
138
|
+
slug: 'template'
|
|
139
|
+
};
|
|
140
|
+
return /*#__PURE__*/React.createElement(CozyProvider, {
|
|
141
|
+
client: client
|
|
142
|
+
}, /*#__PURE__*/React.createElement(DoctypeDebugCard, {
|
|
143
|
+
doctype: "io.cozy.bills",
|
|
144
|
+
konnector: konnector,
|
|
145
|
+
sourceAccountIdentifier: "testSourceAccountIdentifier"
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
export default meta;
|
|
150
|
+
export var Default = {
|
|
151
|
+
name: 'default'
|
|
152
|
+
};
|
package/dist/locales/en.json
CHANGED
|
@@ -191,6 +191,10 @@
|
|
|
191
191
|
"title": "Connection error",
|
|
192
192
|
"description": "An unknown error has occurred. You can try to update your data. If the problem persists, please contact us at [%{supportMail}](mailto:%{supportMail})."
|
|
193
193
|
},
|
|
194
|
+
"UNKNOWN_ERROR.PARTIAL_SYNC": {
|
|
195
|
+
"title": "Connection error",
|
|
196
|
+
"description": "The synchronization is complete but some elements may be missing"
|
|
197
|
+
},
|
|
194
198
|
"USER_ACTION_NEEDED": {
|
|
195
199
|
"title": "Action needed on the provider's website",
|
|
196
200
|
"description": "It seems that the [%{name}](%{link}) website requires you to log in and to complete a specific action. Please re-run the connector once you have settled the issue on the website."
|
package/dist/locales/fr.json
CHANGED
|
@@ -191,6 +191,10 @@
|
|
|
191
191
|
"title": "Erreur de Connexion",
|
|
192
192
|
"description": "Une erreur inconnue est survenue. Vous pouvez essayer de synchroniser à nouveau vos données. Si le problème persiste, n'hésitez pas à nous contacter via [%{supportMail}](mailto:%{supportMail})."
|
|
193
193
|
},
|
|
194
|
+
"UNKNOWN_ERROR.PARTIAL_SYNC": {
|
|
195
|
+
"title": "Erreur de Connexion",
|
|
196
|
+
"description": "La synchronisation est terminé mais certains éléments peuvent manquer"
|
|
197
|
+
},
|
|
194
198
|
"USER_ACTION_NEEDED": {
|
|
195
199
|
"title": "Action nécessaire chez le fournisseur",
|
|
196
200
|
"description": "Il semble que [%{name}](%{link}) ait besoin de revérifier votre connexion. Connectez-vous sur [%{name}](%{link}) avant de synchroniser à nouveau vos données."
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cozy-harvest-lib",
|
|
3
|
-
"version": "22.0
|
|
3
|
+
"version": "22.2.0",
|
|
4
4
|
"description": "Provides logic, modules and components for Cozy's harvest applications.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"author": "Cozy",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"microee": "^0.0.6",
|
|
42
42
|
"node-polyglot": "^2.4.0",
|
|
43
43
|
"react-final-form": "^3.7.0",
|
|
44
|
+
"react-json-print": "^0.1.3",
|
|
44
45
|
"react-markdown": "^4.2.2",
|
|
45
46
|
"use-deep-compare-effect": "^1.8.1",
|
|
46
47
|
"uuid": "^3.3.2"
|
|
@@ -64,7 +65,7 @@
|
|
|
64
65
|
"babel-jest": "26.6.3",
|
|
65
66
|
"babel-plugin-inline-react-svg": "1.1.2",
|
|
66
67
|
"babel-preset-cozy-app": "^2.1.0",
|
|
67
|
-
"cozy-client": "^45.0
|
|
68
|
+
"cozy-client": "^45.1.0",
|
|
68
69
|
"cozy-device-helper": "^3.0.0",
|
|
69
70
|
"cozy-flags": "^3.2.2",
|
|
70
71
|
"cozy-intent": "^2.19.2",
|
|
@@ -93,7 +94,7 @@
|
|
|
93
94
|
},
|
|
94
95
|
"peerDependencies": {
|
|
95
96
|
"@babel/runtime": ">=7.12.5",
|
|
96
|
-
"cozy-client": ">=45.0
|
|
97
|
+
"cozy-client": ">=45.1.0",
|
|
97
98
|
"cozy-device-helper": ">=2.6.0",
|
|
98
99
|
"cozy-flags": ">=2.3.5",
|
|
99
100
|
"cozy-intent": ">=1.14.1",
|
|
@@ -106,5 +107,5 @@
|
|
|
106
107
|
"react-router-dom": ">=4.3.1"
|
|
107
108
|
},
|
|
108
109
|
"sideEffects": false,
|
|
109
|
-
"gitHead": "
|
|
110
|
+
"gitHead": "4aabca6edec79405a512a15e004db9b3ad331e67"
|
|
110
111
|
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import PropTypes from 'prop-types'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import ReactJsonPrint from 'react-json-print'
|
|
4
|
+
|
|
5
|
+
import CozyClient, { Q, useQuery, hasQueryBeenLoaded } from 'cozy-client'
|
|
6
|
+
import Button from 'cozy-ui/transpiled/react/Buttons'
|
|
7
|
+
import Card from 'cozy-ui/transpiled/react/Card'
|
|
8
|
+
import Divider from 'cozy-ui/transpiled/react/Divider'
|
|
9
|
+
import Typography from 'cozy-ui/transpiled/react/Typography'
|
|
10
|
+
|
|
11
|
+
import logger from '../logger'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* This component display json extracted doctype data
|
|
15
|
+
*
|
|
16
|
+
* @component
|
|
17
|
+
* @param {Object} props - The component props.
|
|
18
|
+
* @param {string} props.doctype - The doctype name
|
|
19
|
+
* @param {Array} props.data - The array of doctype values
|
|
20
|
+
* @returns {JSX.Element} The rendered DoctypeDebugCard component.
|
|
21
|
+
*/
|
|
22
|
+
const DoctypeDebugCard = ({ sourceAccountIdentifier, konnector, doctype }) => {
|
|
23
|
+
const savedDocuments = useQuery(
|
|
24
|
+
Q(doctype)
|
|
25
|
+
.where({
|
|
26
|
+
cozyMetadata: {
|
|
27
|
+
createdByApp: konnector.slug,
|
|
28
|
+
sourceAccountIdentifier
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
.indexFields([
|
|
32
|
+
'cozyMetadata.createdByApp',
|
|
33
|
+
'cozyMetadata.sourceAccountIdentifier',
|
|
34
|
+
'cozyMetadata.updatedAt'
|
|
35
|
+
])
|
|
36
|
+
.sortBy([
|
|
37
|
+
{ 'cozyMetadata.createdByApp': 'desc' },
|
|
38
|
+
{ 'cozyMetadata.sourceAccountIdentifier': 'desc' },
|
|
39
|
+
{ 'cozyMetadata.updatedAt': 'desc' }
|
|
40
|
+
])
|
|
41
|
+
.limitBy(30),
|
|
42
|
+
{
|
|
43
|
+
as: `${doctype}/createdByApp/${konnector.slug}/sourceAccountIdentifier/${sourceAccountIdentifier}`,
|
|
44
|
+
fetchPolicy: CozyClient.fetchPolicies.olderThan(30 * 1000)
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
const loaded = hasQueryBeenLoaded(savedDocuments)
|
|
48
|
+
const failed = savedDocuments.fetchStatus === 'failed'
|
|
49
|
+
if (failed) {
|
|
50
|
+
logger.error(`DoctypeDebugCard ${doctype} : failed to fetch`)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const clipBoardAvailable = navigator.clipboard?.writeText
|
|
54
|
+
return !failed && loaded ? (
|
|
55
|
+
<Card>
|
|
56
|
+
<Typography variant="button">{doctype}</Typography>
|
|
57
|
+
{clipBoardAvailable ? (
|
|
58
|
+
<Button
|
|
59
|
+
label="copy"
|
|
60
|
+
variant="text"
|
|
61
|
+
size="small"
|
|
62
|
+
onClick={() =>
|
|
63
|
+
navigator.clipboard
|
|
64
|
+
.writeText(JSON.stringify(savedDocuments.data, null, 2))
|
|
65
|
+
.catch(err =>
|
|
66
|
+
logger.error(
|
|
67
|
+
`Could not copy json object to clipboard: ${err.message}`
|
|
68
|
+
)
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
/>
|
|
72
|
+
) : null}
|
|
73
|
+
<Divider className="u-ml-0 u-maw-100 u-mb-half" />
|
|
74
|
+
<ReactJsonPrint dataObject={savedDocuments.data} />
|
|
75
|
+
</Card>
|
|
76
|
+
) : null
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
DoctypeDebugCard.propTypes = {
|
|
80
|
+
sourceAccountIdentifier: PropTypes.string,
|
|
81
|
+
konnector: PropTypes.object,
|
|
82
|
+
doctype: PropTypes.string
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export default DoctypeDebugCard
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import { CozyProvider } from 'cozy-client'
|
|
4
|
+
import { createFakeClient } from 'cozy-client/dist/mock'
|
|
5
|
+
|
|
6
|
+
import DoctypeDebugCard from './DoctypeDebugCard'
|
|
7
|
+
|
|
8
|
+
const meta = {
|
|
9
|
+
component: DoctypeDebugCard,
|
|
10
|
+
render: () => {
|
|
11
|
+
const data = [
|
|
12
|
+
{
|
|
13
|
+
_id: '180e24edac1433626f57a548481c045b',
|
|
14
|
+
_rev: '1-40014a89ba8dddc04d9718461e543303',
|
|
15
|
+
amount: 51.77,
|
|
16
|
+
cozyMetadata: {
|
|
17
|
+
createdAt: '2023-09-01T08:20:45.774Z',
|
|
18
|
+
createdByApp: 'template',
|
|
19
|
+
createdByAppVersion: '1.0.0',
|
|
20
|
+
doctypeVersion: 1,
|
|
21
|
+
metadataVersion: 1,
|
|
22
|
+
sourceAccount: '180e24edac1433626f57a548481aa62d',
|
|
23
|
+
sourceAccountIdentifier: 'testSourceAccountIdentifier',
|
|
24
|
+
updatedAt: '2023-09-01T08:20:45.774Z',
|
|
25
|
+
updatedByApps: [
|
|
26
|
+
{
|
|
27
|
+
date: '2023-09-01T08:20:45.774Z',
|
|
28
|
+
slug: 'template',
|
|
29
|
+
version: '1.0.0'
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
currency: 'EUR',
|
|
34
|
+
date: '2023-09-01T08:20:31.338Z',
|
|
35
|
+
filename: '2023-09-01_template_51.77EUR.jpg',
|
|
36
|
+
fileurl:
|
|
37
|
+
'http://books.toscrape.com/media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg',
|
|
38
|
+
invoice: 'io.cozy.files:180e24edac1433626f57a548481aca62',
|
|
39
|
+
matchingCriterias: {
|
|
40
|
+
labelRegex: '\\bbooks\\b'
|
|
41
|
+
},
|
|
42
|
+
title: 'A Light in the Attic',
|
|
43
|
+
vendor: 'template'
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
_id: '180e24edac1433626f57a548481c136e',
|
|
47
|
+
_rev: '1-54702210d9be33650da61001cdff18cc',
|
|
48
|
+
amount: 45.17,
|
|
49
|
+
cozyMetadata: {
|
|
50
|
+
createdAt: '2023-09-01T08:20:45.837Z',
|
|
51
|
+
createdByApp: 'template',
|
|
52
|
+
createdByAppVersion: '1.0.0',
|
|
53
|
+
doctypeVersion: 1,
|
|
54
|
+
metadataVersion: 1,
|
|
55
|
+
sourceAccount: '180e24edac1433626f57a548481aa62d',
|
|
56
|
+
sourceAccountIdentifier: 'testSourceAccountIdentifier',
|
|
57
|
+
updatedAt: '2023-09-01T08:20:45.837Z',
|
|
58
|
+
updatedByApps: [
|
|
59
|
+
{
|
|
60
|
+
date: '2023-09-01T08:20:45.837Z',
|
|
61
|
+
slug: 'template',
|
|
62
|
+
version: '1.0.0'
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
currency: 'EUR',
|
|
67
|
+
date: '2023-09-01T08:20:31.400Z',
|
|
68
|
+
filename: '2023-09-01_template_45.17EUR.jpg',
|
|
69
|
+
fileurl:
|
|
70
|
+
'http://books.toscrape.com/media/cache/27/a5/27a53d0bb95bdd88288eaf66c9230d7e.jpg',
|
|
71
|
+
invoice: 'io.cozy.files:180e24edac1433626f57a548481ad96a',
|
|
72
|
+
matchingCriterias: {
|
|
73
|
+
labelRegex: '\\bbooks\\b'
|
|
74
|
+
},
|
|
75
|
+
title: "It's Only the Himalayas",
|
|
76
|
+
vendor: 'template'
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
_id: '180e24edac1433626f57a548481c179f',
|
|
80
|
+
_rev: '1-d1b5f977455d918b2c2b9fd27f2e8120',
|
|
81
|
+
amount: 51.33,
|
|
82
|
+
cozyMetadata: {
|
|
83
|
+
createdAt: '2023-09-01T08:20:45.884Z',
|
|
84
|
+
createdByApp: 'template',
|
|
85
|
+
createdByAppVersion: '1.0.0',
|
|
86
|
+
doctypeVersion: 1,
|
|
87
|
+
metadataVersion: 1,
|
|
88
|
+
sourceAccount: '180e24edac1433626f57a548481aa62d',
|
|
89
|
+
sourceAccountIdentifier: 'testSourceAccountIdentifier',
|
|
90
|
+
updatedAt: '2023-09-01T08:20:45.884Z',
|
|
91
|
+
updatedByApps: [
|
|
92
|
+
{
|
|
93
|
+
date: '2023-09-01T08:20:45.884Z',
|
|
94
|
+
slug: 'template',
|
|
95
|
+
version: '1.0.0'
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
currency: 'EUR',
|
|
100
|
+
date: '2023-09-01T08:20:31.400Z',
|
|
101
|
+
filename: '2023-09-01_template_51.33EUR.jpg',
|
|
102
|
+
fileurl:
|
|
103
|
+
'http://books.toscrape.com/media/cache/0b/bc/0bbcd0a6f4bcd81ccb1049a52736406e.jpg',
|
|
104
|
+
invoice: 'io.cozy.files:180e24edac1433626f57a548481ae79c',
|
|
105
|
+
matchingCriterias: {
|
|
106
|
+
labelRegex: '\\bbooks\\b'
|
|
107
|
+
},
|
|
108
|
+
title: 'Libertarianism for Beginners',
|
|
109
|
+
vendor: 'template'
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
_id: '180e24edac1433626f57a548481c1c75',
|
|
113
|
+
_rev: '1-292df85b486fe8e67ce5d4d4c5293771',
|
|
114
|
+
amount: 37.59,
|
|
115
|
+
cozyMetadata: {
|
|
116
|
+
createdAt: '2023-09-01T08:20:45.935Z',
|
|
117
|
+
createdByApp: 'template',
|
|
118
|
+
createdByAppVersion: '1.0.0',
|
|
119
|
+
doctypeVersion: 1,
|
|
120
|
+
metadataVersion: 1,
|
|
121
|
+
sourceAccount: '180e24edac1433626f57a548481aa62d',
|
|
122
|
+
sourceAccountIdentifier: 'testSourceAccountIdentifier',
|
|
123
|
+
updatedAt: '2023-09-01T08:20:45.935Z',
|
|
124
|
+
updatedByApps: [
|
|
125
|
+
{
|
|
126
|
+
date: '2023-09-01T08:20:45.935Z',
|
|
127
|
+
slug: 'template',
|
|
128
|
+
version: '1.0.0'
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
currency: 'EUR',
|
|
133
|
+
date: '2023-09-01T08:20:31.400Z',
|
|
134
|
+
filename: '2023-09-01_template_37.59EUR.jpg',
|
|
135
|
+
fileurl:
|
|
136
|
+
'http://books.toscrape.com/media/cache/09/a3/09a3aef48557576e1a85ba7efea8ecb7.jpg',
|
|
137
|
+
invoice: 'io.cozy.files:180e24edac1433626f57a548481af3d8',
|
|
138
|
+
matchingCriterias: {
|
|
139
|
+
labelRegex: '\\bbooks\\b'
|
|
140
|
+
},
|
|
141
|
+
title: 'Mesaerion: The Best Science Fiction Stories 1800-1849',
|
|
142
|
+
vendor: 'template'
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
|
|
146
|
+
const client = createFakeClient({
|
|
147
|
+
queries: {
|
|
148
|
+
'doctypeDebugCard_io.cozy.bills': {
|
|
149
|
+
doctype: 'io.cozy.bills',
|
|
150
|
+
definition: {
|
|
151
|
+
doctype: 'io.cozy.bills',
|
|
152
|
+
id: `io.cozy.bills/createdByApp/template/sourceAccountIdentifier/testSourceAccountIdentifier`
|
|
153
|
+
},
|
|
154
|
+
data
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
const konnector = {
|
|
160
|
+
slug: 'template'
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return (
|
|
164
|
+
<CozyProvider client={client}>
|
|
165
|
+
<DoctypeDebugCard
|
|
166
|
+
doctype="io.cozy.bills"
|
|
167
|
+
konnector={konnector}
|
|
168
|
+
sourceAccountIdentifier="testSourceAccountIdentifier"
|
|
169
|
+
/>
|
|
170
|
+
</CozyProvider>
|
|
171
|
+
)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export default meta
|
|
176
|
+
|
|
177
|
+
export const Default = {
|
|
178
|
+
name: 'default'
|
|
179
|
+
}
|
package/src/locales/en.json
CHANGED
|
@@ -191,6 +191,10 @@
|
|
|
191
191
|
"title": "Connection error",
|
|
192
192
|
"description": "An unknown error has occurred. You can try to update your data. If the problem persists, please contact us at [%{supportMail}](mailto:%{supportMail})."
|
|
193
193
|
},
|
|
194
|
+
"UNKNOWN_ERROR.PARTIAL_SYNC": {
|
|
195
|
+
"title": "Connection error",
|
|
196
|
+
"description": "The synchronization is complete but some elements may be missing"
|
|
197
|
+
},
|
|
194
198
|
"USER_ACTION_NEEDED": {
|
|
195
199
|
"title": "Action needed on the provider's website",
|
|
196
200
|
"description": "It seems that the [%{name}](%{link}) website requires you to log in and to complete a specific action. Please re-run the connector once you have settled the issue on the website."
|
package/src/locales/fr.json
CHANGED
|
@@ -191,6 +191,10 @@
|
|
|
191
191
|
"title": "Erreur de Connexion",
|
|
192
192
|
"description": "Une erreur inconnue est survenue. Vous pouvez essayer de synchroniser à nouveau vos données. Si le problème persiste, n'hésitez pas à nous contacter via [%{supportMail}](mailto:%{supportMail})."
|
|
193
193
|
},
|
|
194
|
+
"UNKNOWN_ERROR.PARTIAL_SYNC": {
|
|
195
|
+
"title": "Erreur de Connexion",
|
|
196
|
+
"description": "La synchronisation est terminé mais certains éléments peuvent manquer"
|
|
197
|
+
},
|
|
194
198
|
"USER_ACTION_NEEDED": {
|
|
195
199
|
"title": "Action nécessaire chez le fournisseur",
|
|
196
200
|
"description": "Il semble que [%{name}](%{link}) ait besoin de revérifier votre connexion. Connectez-vous sur [%{name}](%{link}) avant de synchroniser à nouveau vos données."
|