cozy-search 2.2.25 → 2.2.27

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.
@@ -7,10 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _twakeIcons = require("@linagora/twake-icons");
11
-
12
10
  var _react = _interopRequireDefault(require("react"));
13
11
 
12
+ var _twakeIcons = require("@linagora/twake-icons");
13
+
14
14
  var _cozyClient = require("cozy-client");
15
15
 
16
16
  var _cozyLogger = _interopRequireDefault(require("cozy-logger"));
@@ -45,8 +45,9 @@ var EmailSourceItem = function EmailSourceItem(_ref) {
45
45
  subDomainType: client.getInstanceOptions().subdomain,
46
46
  hash: "/bridge/dashboard/".concat(emailId)
47
47
  });
48
- var emailDate = email['datetime'] ? new Date(email['datetime']).toISOString().slice(0, 10) : '';
49
- var primary = [emailDate, email['email.subject']].filter(Boolean).join(' - ');
48
+ var emailDate = email.datetime && new Date(email.datetime).toISOString().slice(0, 10); // ListItemText renders an empty line for '', but nothing for undefined
49
+
50
+ var primary = [emailDate, email['email.subject']].filter(Boolean).join(' - ') || undefined;
50
51
  return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
51
52
  className: styles['sourcesItem'],
52
53
  component: "a",
@@ -58,7 +59,7 @@ var EmailSourceItem = function EmailSourceItem(_ref) {
58
59
  icon: _twakeIcons.Mail,
59
60
  size: 32
60
61
  })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
61
- primary: primary || undefined,
62
+ primary: primary,
62
63
  secondary: email['email.preview'] || undefined
63
64
  }));
64
65
  };
@@ -11,10 +11,12 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
11
11
 
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
13
 
14
- var _twakeIcons = require("@linagora/twake-icons");
14
+ var _uniqBy = _interopRequireDefault(require("lodash/uniqBy"));
15
15
 
16
16
  var _react = _interopRequireWildcard(require("react"));
17
17
 
18
+ var _twakeIcons = require("@linagora/twake-icons");
19
+
18
20
  var _cozyClient = require("cozy-client");
19
21
 
20
22
  var _Box = _interopRequireDefault(require("cozy-ui/transpiled/react/Box"));
@@ -39,7 +41,34 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
39
41
 
40
42
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
43
 
42
- var WEB_SOURCE_TYPE = 'web';
44
+ var WEB_SOURCE_TYPE = 'web'; // Web sources have no doctype, other sources are identified by theirs
45
+
46
+ var getSourceType = function getSourceType(source) {
47
+ if (source.sourceType === WEB_SOURCE_TYPE) return WEB_SOURCE_TYPE;
48
+ if (source.doctype === _queries.EMAIL_DOCTYPE) return _queries.EMAIL_DOCTYPE;
49
+ return _queries.FILES_DOCTYPE;
50
+ };
51
+
52
+ var getSourceKey = function getSourceKey(source) {
53
+ var type = getSourceType(source);
54
+ var identity = type === WEB_SOURCE_TYPE ? source.url : source.id;
55
+ return identity ? "".concat(type, ":").concat(identity) : null;
56
+ };
57
+ /**
58
+ * A same document can be returned several times by the RAG, typically when
59
+ * several chunks of the same file or email are relevant. We only want to
60
+ * display it once. Sources without any identity are all kept, as we can't
61
+ * tell them apart.
62
+ */
63
+
64
+
65
+ var dedupeSources = function dedupeSources(sources) {
66
+ return (0, _uniqBy.default)(sources, function (source) {
67
+ var _getSourceKey;
68
+
69
+ return (_getSourceKey = getSourceKey(source)) !== null && _getSourceKey !== void 0 ? _getSourceKey : source;
70
+ });
71
+ };
43
72
 
44
73
  var Sources = function Sources(_ref) {
45
74
  var messageId = _ref.messageId,
@@ -139,17 +168,18 @@ var SourcesWithFilesQuery = function SourcesWithFilesQuery(_ref2) {
139
168
  var fileIds = [];
140
169
  var emails = [];
141
170
  var urls = [];
142
- var files;
143
- sources.map(function (source) {
144
- if (source.sourceType === WEB_SOURCE_TYPE) {
171
+ dedupeSources(sources).forEach(function (source) {
172
+ var type = getSourceType(source);
173
+
174
+ if (type === WEB_SOURCE_TYPE) {
145
175
  urls.push(source);
146
- } else if (source.doctype === _queries.EMAIL_DOCTYPE) {
176
+ } else if (type === _queries.EMAIL_DOCTYPE) {
147
177
  emails.push(source);
148
178
  } else {
149
179
  fileIds.push(source.id);
150
180
  }
151
181
  });
152
- var enabled = fileIds && fileIds.length > 0;
182
+ var enabled = fileIds.length > 0;
153
183
  var filesByIds = (0, _queries.buildFilesByIds)(fileIds, enabled);
154
184
 
155
185
  var _useQuery = (0, _cozyClient.useQuery)(filesByIds.definition, filesByIds.options),
@@ -157,7 +187,7 @@ var SourcesWithFilesQuery = function SourcesWithFilesQuery(_ref2) {
157
187
  queryResult = (0, _objectWithoutProperties2.default)(_useQuery, _excluded);
158
188
 
159
189
  var isLoading = (0, _cozyClient.isQueryLoading)(queryResult);
160
- files = fetchedFiles || [];
190
+ var files = fetchedFiles || [];
161
191
  if (isLoading && enabled || files.length === 0 && emails.length === 0 && urls.length === 0) return null;
162
192
  return /*#__PURE__*/_react.default.createElement(Sources, {
163
193
  messageId: messageId,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cozy-search",
3
3
  "description": "UI components about search bar and IA assistant",
4
- "version": "2.2.25",
4
+ "version": "2.2.27",
5
5
  "author": {
6
6
  "name": "Cozy Cloud",
7
7
  "url": "https://github.com/cozy"
@@ -37,7 +37,7 @@
37
37
  "cozy-pouch-link": "^54.0.0",
38
38
  "cozy-realtime": "^5.9.4",
39
39
  "cozy-ui": "^138.4.0",
40
- "cozy-ui-plus": "^12.3.14",
40
+ "cozy-ui-plus": "^12.3.15",
41
41
  "cross-fetch": "^4.0.0",
42
42
  "jest": "30.3.0",
43
43
  "react": "18.2.0",
@@ -96,5 +96,5 @@
96
96
  "lint": "cd .. && yarn eslint --ext js,jsx,ts packages/cozy-search"
97
97
  },
98
98
  "types": "dist/index.d.ts",
99
- "gitHead": "87cb526b6d89c520adeeb719dd138fae65d24121"
99
+ "gitHead": "bab8ddc27c3d4f211fd9cbf013f2f11500fbc89c"
100
100
  }