cozy-search 0.20.0 → 0.21.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 (35) hide show
  1. package/dist/actions/delete.d.ts +3 -4
  2. package/dist/actions/delete.js +9 -40
  3. package/dist/actions/makeActionComponent.d.ts +5 -0
  4. package/dist/actions/makeActionComponent.js +47 -0
  5. package/dist/actions/rename.d.ts +3 -4
  6. package/dist/actions/rename.js +7 -37
  7. package/dist/actions/share.d.ts +1 -3
  8. package/dist/actions/share.js +3 -35
  9. package/dist/components/Conversations/ConversationActions.d.ts +2 -1
  10. package/dist/components/Conversations/ConversationActions.js +188 -4
  11. package/dist/components/Conversations/ConversationListItem.js +3 -4
  12. package/dist/components/Conversations/ConversationListItemWider.js +3 -4
  13. package/dist/components/Messages/AssistantMessage.js +13 -0
  14. package/dist/components/helpers.d.ts +0 -1
  15. package/dist/components/helpers.js +2 -12
  16. package/dist/hooks/useFetchConversations.js +10 -0
  17. package/dist/hooks/useFetchConversations.spec.js +2 -0
  18. package/dist/locales/en.json +8 -0
  19. package/dist/locales/fr.json +8 -0
  20. package/dist/locales/index.js +32 -0
  21. package/dist/locales/ru.json +8 -0
  22. package/dist/locales/vi.json +8 -0
  23. package/package.json +2 -2
  24. package/dist/components/Conversations/ChatAssistantItem.d.ts +0 -8
  25. package/dist/components/Conversations/ChatAssistantItem.js +0 -55
  26. package/dist/components/Conversations/ChatConversation.d.ts +0 -5
  27. package/dist/components/Conversations/ChatConversation.js +0 -110
  28. package/dist/components/Conversations/ChatItem.d.ts +0 -7
  29. package/dist/components/Conversations/ChatItem.js +0 -39
  30. package/dist/components/Conversations/ChatItemLabel.d.ts +0 -5
  31. package/dist/components/Conversations/ChatItemLabel.js +0 -32
  32. package/dist/components/Conversations/ChatRealtimeAnswer.d.ts +0 -5
  33. package/dist/components/Conversations/ChatRealtimeAnswer.js +0 -30
  34. package/dist/components/Conversations/ChatUserItem.d.ts +0 -7
  35. package/dist/components/Conversations/ChatUserItem.js +0 -50
@@ -1,12 +1,11 @@
1
- export function remove({ t }: {
1
+ export function remove({ t, onDelete }: {
2
2
  t: any;
3
+ onDelete: any;
3
4
  }): {
4
5
  name: string;
5
6
  icon: typeof TrashIcon;
6
7
  label: any;
7
- Component: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
8
- displayCondition: () => boolean;
8
+ Component: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
9
9
  action: () => void;
10
10
  };
11
11
  import TrashIcon from 'cozy-ui/transpiled/react/Icons/Trash';
12
- import React from 'react';
@@ -7,54 +7,23 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.remove = void 0;
9
9
 
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _react = _interopRequireWildcard(require("react"));
13
-
14
- var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem"));
15
-
16
- var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
17
-
18
10
  var _Trash = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Trash"));
19
11
 
20
- var _ListItemIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemIcon"));
21
-
22
- var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
23
-
24
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
- 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; }
27
-
28
- var makeComponent = function makeComponent(label, icon) {
29
- var Component = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
30
- return /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, (0, _extends2.default)({
31
- className: "u-error"
32
- }, props, {
33
- ref: ref
34
- }), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
35
- className: "u-error",
36
- icon: icon
37
- })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
38
- primary: label
39
- }));
40
- });
41
- Component.displayName = 'Delete';
42
- return Component;
43
- };
12
+ var _makeActionComponent = _interopRequireDefault(require("./makeActionComponent"));
44
13
 
45
14
  var remove = function remove(_ref) {
46
- var t = _ref.t;
47
- var icon = _Trash.default;
15
+ var t = _ref.t,
16
+ onDelete = _ref.onDelete;
48
17
  var label = t('assistant.sidebar.conversation.actions.delete');
49
18
  return {
50
19
  name: 'delete',
51
- icon: icon,
20
+ icon: _Trash.default,
52
21
  label: label,
53
- Component: makeComponent(label, icon),
54
- displayCondition: function displayCondition() {
55
- return true;
56
- },
57
- action: function action() {// TO DO: Add action to remove due to this action does not exist yet in backend, we will implement it later
22
+ Component: (0, _makeActionComponent.default)(label, _Trash.default, {
23
+ className: 'u-error'
24
+ }),
25
+ action: function action() {
26
+ onDelete();
58
27
  }
59
28
  };
60
29
  };
@@ -0,0 +1,5 @@
1
+ export default makeActionComponent;
2
+ declare function makeActionComponent(label: any, icon: any, { className }?: {
3
+ className: any;
4
+ }): React.ForwardRefExoticComponent<React.RefAttributes<any>>;
5
+ import React from 'react';
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _react = _interopRequireWildcard(require("react"));
13
+
14
+ var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem"));
15
+
16
+ var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
17
+
18
+ var _ListItemIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemIcon"));
19
+
20
+ var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
21
+
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ 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; }
25
+
26
+ var makeActionComponent = function makeActionComponent(label, icon) {
27
+ var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
28
+ className = _ref.className;
29
+
30
+ var Component = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
31
+ return /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, (0, _extends2.default)({
32
+ className: className
33
+ }, props, {
34
+ ref: ref
35
+ }), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
36
+ className: className,
37
+ icon: icon
38
+ })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
39
+ primary: label
40
+ }));
41
+ });
42
+ Component.displayName = 'ActionComponent';
43
+ return Component;
44
+ };
45
+
46
+ var _default = makeActionComponent;
47
+ exports.default = _default;
@@ -1,12 +1,11 @@
1
- export function rename({ t }: {
1
+ export function rename({ t, onRename }: {
2
2
  t: any;
3
+ onRename: any;
3
4
  }): {
4
5
  name: string;
5
6
  icon: typeof RenameIcon;
6
7
  label: any;
7
- Component: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
8
- displayCondition: () => boolean;
8
+ Component: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
9
9
  action: () => void;
10
10
  };
11
11
  import RenameIcon from 'cozy-ui/transpiled/react/Icons/Rename';
12
- import React from 'react';
@@ -7,51 +7,21 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.rename = void 0;
9
9
 
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _react = _interopRequireWildcard(require("react"));
13
-
14
- var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem"));
15
-
16
- var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
17
-
18
10
  var _Rename = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Rename"));
19
11
 
20
- var _ListItemIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemIcon"));
21
-
22
- var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
23
-
24
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
- 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; }
27
-
28
- var makeComponent = function makeComponent(label, icon) {
29
- var Component = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
30
- return /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, (0, _extends2.default)({}, props, {
31
- ref: ref
32
- }), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
33
- icon: icon
34
- })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
35
- primary: label
36
- }));
37
- });
38
- Component.displayName = 'Rename';
39
- return Component;
40
- };
12
+ var _makeActionComponent = _interopRequireDefault(require("./makeActionComponent"));
41
13
 
42
14
  var rename = function rename(_ref) {
43
- var t = _ref.t;
44
- var icon = _Rename.default;
15
+ var t = _ref.t,
16
+ onRename = _ref.onRename;
45
17
  var label = t('assistant.sidebar.conversation.actions.rename');
46
18
  return {
47
19
  name: 'rename',
48
- icon: icon,
20
+ icon: _Rename.default,
49
21
  label: label,
50
- Component: makeComponent(label, icon),
51
- displayCondition: function displayCondition() {
52
- return true;
53
- },
54
- action: function action() {// TO DO: Add action to rename due to this action does not exist yet in backend, we will implement it later
22
+ Component: (0, _makeActionComponent.default)(label, _Rename.default),
23
+ action: function action() {
24
+ onRename();
55
25
  }
56
26
  };
57
27
  };
@@ -4,9 +4,7 @@ export function share({ t }: {
4
4
  name: string;
5
5
  icon: typeof ShareIcon;
6
6
  label: any;
7
- Component: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
8
- displayCondition: () => boolean;
7
+ Component: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
9
8
  action: () => void;
10
9
  };
11
10
  import ShareIcon from 'cozy-ui/transpiled/react/Icons/Share';
12
- import React from 'react';
@@ -7,50 +7,18 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.share = void 0;
9
9
 
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _react = _interopRequireWildcard(require("react"));
13
-
14
- var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem"));
15
-
16
- var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
17
-
18
10
  var _Share = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Share"));
19
11
 
20
- var _ListItemIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemIcon"));
21
-
22
- var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
23
-
24
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
- 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; }
27
-
28
- var makeComponent = function makeComponent(label, icon) {
29
- var Component = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
30
- return /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, (0, _extends2.default)({}, props, {
31
- ref: ref
32
- }), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
33
- icon: icon
34
- })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
35
- primary: label
36
- }));
37
- });
38
- Component.displayName = 'Share';
39
- return Component;
40
- };
12
+ var _makeActionComponent = _interopRequireDefault(require("./makeActionComponent"));
41
13
 
42
14
  var share = function share(_ref) {
43
15
  var t = _ref.t;
44
- var icon = _Share.default;
45
16
  var label = t('assistant.sidebar.conversation.actions.share');
46
17
  return {
47
18
  name: 'share',
48
- icon: icon,
19
+ icon: _Share.default,
49
20
  label: label,
50
- Component: makeComponent(label, icon),
51
- displayCondition: function displayCondition() {
52
- return true;
53
- },
21
+ Component: (0, _makeActionComponent.default)(label, _Share.default),
54
22
  action: function action() {// TO DO: Add action to share due to this action does not exist yet in backend, we will implement it later
55
23
  }
56
24
  };
@@ -1,4 +1,5 @@
1
1
  export default ConversationActions;
2
- declare function ConversationActions({ buttonClassName }: {
2
+ declare function ConversationActions({ buttonClassName, conversation }: {
3
3
  buttonClassName: any;
4
+ conversation: any;
4
5
  }): JSX.Element;
@@ -7,20 +7,38 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
10
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
17
 
12
18
  var _react = _interopRequireWildcard(require("react"));
13
19
 
20
+ var _cozyClient = require("cozy-client");
21
+
22
+ var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
23
+
14
24
  var _ActionsMenu = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu"));
15
25
 
16
26
  var _Actions = require("cozy-ui/transpiled/react/ActionsMenu/Actions");
17
27
 
28
+ var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
29
+
30
+ var _CozyDialogs = require("cozy-ui/transpiled/react/CozyDialogs");
31
+
18
32
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
19
33
 
20
34
  var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
21
35
 
22
36
  var _Dots = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Dots"));
23
37
 
38
+ var _TextField = _interopRequireDefault(require("cozy-ui/transpiled/react/TextField"));
39
+
40
+ var _Alert = require("cozy-ui/transpiled/react/providers/Alert");
41
+
24
42
  var _twakeI18n = require("twake-i18n");
25
43
 
26
44
  var _delete = require("../../actions/delete");
@@ -29,30 +47,147 @@ var _rename = require("../../actions/rename");
29
47
 
30
48
  var _share = require("../../actions/share");
31
49
 
50
+ var _helpers = require("../helpers");
51
+
52
+ var _queries = require("../queries");
53
+
32
54
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
55
 
34
56
  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; }
35
57
 
58
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
59
+
60
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
61
+
36
62
  var ConversationActions = function ConversationActions(_ref) {
37
- var buttonClassName = _ref.buttonClassName;
63
+ var buttonClassName = _ref.buttonClassName,
64
+ conversation = _ref.conversation;
38
65
 
39
66
  var _useI18n = (0, _twakeI18n.useI18n)(),
40
67
  t = _useI18n.t;
41
68
 
69
+ var client = (0, _cozyClient.useClient)();
70
+
71
+ var _useAlert = (0, _Alert.useAlert)(),
72
+ showAlert = _useAlert.showAlert;
73
+
42
74
  var _useState = (0, _react.useState)(false),
43
75
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
44
76
  isMenuOpen = _useState2[0],
45
77
  setIsMenuOpen = _useState2[1];
46
78
 
79
+ var _useState3 = (0, _react.useState)(false),
80
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
81
+ showRenameDialog = _useState4[0],
82
+ setShowRenameDialog = _useState4[1];
83
+
84
+ var _useState5 = (0, _react.useState)(false),
85
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
86
+ showDeleteDialog = _useState6[0],
87
+ setShowDeleteDialog = _useState6[1];
88
+
89
+ var _useState7 = (0, _react.useState)(''),
90
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
91
+ newName = _useState8[0],
92
+ setNewName = _useState8[1];
93
+
47
94
  var anchorRef = (0, _react.useRef)(null);
48
95
 
49
96
  var toggleMenu = function toggleMenu(e) {
50
97
  e === null || e === void 0 ? void 0 : e.stopPropagation();
51
- setIsMenuOpen(!isMenuOpen);
98
+ setIsMenuOpen(function (prev) {
99
+ return !prev;
100
+ });
101
+ };
102
+
103
+ var handleOpenRename = function handleOpenRename() {
104
+ setNewName((0, _helpers.getNameOfConversation)(conversation) || '');
105
+ setShowRenameDialog(true);
52
106
  };
53
107
 
54
- var actions = (0, _Actions.makeActions)([_share.share, _rename.rename, _delete.remove], {
55
- t: t
108
+ var handleRename = /*#__PURE__*/function () {
109
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
110
+ return _regenerator.default.wrap(function _callee$(_context) {
111
+ while (1) {
112
+ switch (_context.prev = _context.next) {
113
+ case 0:
114
+ _context.prev = 0;
115
+ _context.next = 3;
116
+ return client.save(_objectSpread(_objectSpread({}, conversation), {}, {
117
+ _type: _queries.CHAT_CONVERSATIONS_DOCTYPE,
118
+ name: newName.trim()
119
+ }));
120
+
121
+ case 3:
122
+ setShowRenameDialog(false);
123
+ _context.next = 9;
124
+ break;
125
+
126
+ case 6:
127
+ _context.prev = 6;
128
+ _context.t0 = _context["catch"](0);
129
+ showAlert({
130
+ message: t('assistant.default_error'),
131
+ severity: 'error'
132
+ });
133
+
134
+ case 9:
135
+ case "end":
136
+ return _context.stop();
137
+ }
138
+ }
139
+ }, _callee, null, [[0, 6]]);
140
+ }));
141
+
142
+ return function handleRename() {
143
+ return _ref2.apply(this, arguments);
144
+ };
145
+ }();
146
+
147
+ var handleDelete = /*#__PURE__*/function () {
148
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
149
+ return _regenerator.default.wrap(function _callee2$(_context2) {
150
+ while (1) {
151
+ switch (_context2.prev = _context2.next) {
152
+ case 0:
153
+ _context2.prev = 0;
154
+ _context2.next = 3;
155
+ return client.destroy(_objectSpread(_objectSpread({}, conversation), {}, {
156
+ _type: _queries.CHAT_CONVERSATIONS_DOCTYPE
157
+ }));
158
+
159
+ case 3:
160
+ setShowDeleteDialog(false);
161
+ _context2.next = 9;
162
+ break;
163
+
164
+ case 6:
165
+ _context2.prev = 6;
166
+ _context2.t0 = _context2["catch"](0);
167
+ showAlert({
168
+ message: t('assistant.default_error'),
169
+ severity: 'error'
170
+ });
171
+
172
+ case 9:
173
+ case "end":
174
+ return _context2.stop();
175
+ }
176
+ }
177
+ }, _callee2, null, [[0, 6]]);
178
+ }));
179
+
180
+ return function handleDelete() {
181
+ return _ref3.apply(this, arguments);
182
+ };
183
+ }();
184
+
185
+ var actions = (0, _Actions.makeActions)([_rename.rename, (0, _cozyFlags.default)('cozy.conversation-sharing.enabled') && _share.share, _delete.remove].filter(Boolean), {
186
+ t: t,
187
+ onRename: handleOpenRename,
188
+ onDelete: function onDelete() {
189
+ return setShowDeleteDialog(true);
190
+ }
56
191
  });
57
192
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
58
193
  className: buttonClassName,
@@ -71,6 +206,55 @@ var ConversationActions = function ConversationActions(_ref) {
71
206
  },
72
207
  autoClose: true,
73
208
  onClose: toggleMenu
209
+ }), showRenameDialog && /*#__PURE__*/_react.default.createElement(_CozyDialogs.ConfirmDialog, {
210
+ open: true,
211
+ title: t('assistant.sidebar.conversation.actions.rename'),
212
+ content: /*#__PURE__*/_react.default.createElement(_TextField.default, {
213
+ autoFocus: true,
214
+ fullWidth: true,
215
+ variant: "outlined",
216
+ value: newName,
217
+ onChange: function onChange(e) {
218
+ return setNewName(e.target.value);
219
+ },
220
+ onKeyDown: function onKeyDown(e) {
221
+ if (e.key === 'Enter' && newName.trim()) {
222
+ handleRename();
223
+ }
224
+ }
225
+ }),
226
+ actions: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Buttons.default, {
227
+ variant: "secondary",
228
+ label: t('assistant_create.buttons.cancel'),
229
+ onClick: function onClick() {
230
+ return setShowRenameDialog(false);
231
+ }
232
+ }), /*#__PURE__*/_react.default.createElement(_Buttons.default, {
233
+ label: t('assistant_edit.buttons.edit'),
234
+ onClick: handleRename,
235
+ disabled: !newName.trim()
236
+ })),
237
+ onClose: function onClose() {
238
+ return setShowRenameDialog(false);
239
+ }
240
+ }), showDeleteDialog && /*#__PURE__*/_react.default.createElement(_CozyDialogs.ConfirmDialog, {
241
+ open: true,
242
+ title: t('conversation_delete.title'),
243
+ content: t('conversation_delete.content'),
244
+ actions: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Buttons.default, {
245
+ variant: "secondary",
246
+ label: t('conversation_delete.buttons.cancel'),
247
+ onClick: function onClick() {
248
+ return setShowDeleteDialog(false);
249
+ }
250
+ }), /*#__PURE__*/_react.default.createElement(_Buttons.default, {
251
+ color: "error",
252
+ label: t('conversation_delete.buttons.confirm'),
253
+ onClick: handleDelete
254
+ })),
255
+ onClose: function onClose() {
256
+ return setShowDeleteDialog(false);
257
+ }
74
258
  }));
75
259
  };
76
260
 
@@ -13,8 +13,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
14
  var _react = _interopRequireDefault(require("react"));
15
15
 
16
- var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
17
-
18
16
  var _ListItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItem"));
19
17
 
20
18
  var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
@@ -81,8 +79,9 @@ var ConversationListItem = function ConversationListItem(_ref) {
81
79
  primary: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
82
80
  variant: "h6",
83
81
  className: "u-ellipsis"
84
- }, (0, _helpers.getNameOfConversation)(conversation)), (0, _cozyFlags.default)('cozy.conversation-actions.enabled') && /*#__PURE__*/_react.default.createElement(_ConversationActions.default, {
85
- buttonClassName: (0, _classnames.default)(styles['conversation-list-item-action'])
82
+ }, (0, _helpers.getNameOfConversation)(conversation)), /*#__PURE__*/_react.default.createElement(_ConversationActions.default, {
83
+ buttonClassName: (0, _classnames.default)(styles['conversation-list-item-action']),
84
+ conversation: conversation
86
85
  })),
87
86
  secondary: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
88
87
  variant: "h6",
@@ -13,8 +13,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
14
  var _react = _interopRequireDefault(require("react"));
15
15
 
16
- var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
17
-
18
16
  var _ListItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItem"));
19
17
 
20
18
  var _ListItemIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemIcon"));
@@ -92,8 +90,9 @@ var ConversationListItemWider = function ConversationListItemWider(_ref) {
92
90
  }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
93
91
  variant: "h6",
94
92
  className: "u-ellipsis u-mb-half"
95
- }, (0, _helpers.getNameOfConversation)(conversation)), !disableAction && (0, _cozyFlags.default)('cozy.conversation-actions.enabled') && /*#__PURE__*/_react.default.createElement(_ConversationActions.default, {
96
- buttonClassName: (0, _classnames.default)(styles['conversation-list-item-action'])
93
+ }, (0, _helpers.getNameOfConversation)(conversation)), !disableAction && /*#__PURE__*/_react.default.createElement(_ConversationActions.default, {
94
+ buttonClassName: (0, _classnames.default)(styles['conversation-list-item-action']),
95
+ conversation: conversation
97
96
  })),
98
97
  secondary: /*#__PURE__*/_react.default.createElement(_Typography.default, {
99
98
  variant: "h6",
@@ -23,6 +23,8 @@ var _MarkdownText = _interopRequireDefault(require("./MarkdownText"));
23
23
 
24
24
  var _TwakeAssistantIcon = require("../AssistantIcon/TwakeAssistantIcon");
25
25
 
26
+ var _Sources = _interopRequireDefault(require("../Conversations/Sources/Sources"));
27
+
26
28
  var AssistantMessage = function AssistantMessage() {
27
29
  var _useI18n = (0, _twakeI18n.useI18n)(),
28
30
  t = _useI18n.t;
@@ -32,6 +34,14 @@ var AssistantMessage = function AssistantMessage() {
32
34
 
33
35
  return ((_s$status = s.status) === null || _s$status === void 0 ? void 0 : _s$status.type) === 'requires-action';
34
36
  });
37
+ var messageId = (0, _react.useMessage)(function (s) {
38
+ return s.id;
39
+ });
40
+ var sources = (0, _react.useMessage)(function (s) {
41
+ var _s$metadata, _s$metadata$custom;
42
+
43
+ return (_s$metadata = s.metadata) === null || _s$metadata === void 0 ? void 0 : (_s$metadata$custom = _s$metadata.custom) === null || _s$metadata$custom === void 0 ? void 0 : _s$metadata$custom.sources;
44
+ });
35
45
  return /*#__PURE__*/_react2.default.createElement(_react.MessagePrimitive.Root, {
36
46
  className: "u-mt-1-half u-mr-3"
37
47
  }, isThinking && /*#__PURE__*/_react2.default.createElement(_Box.default, {
@@ -50,6 +60,9 @@ var AssistantMessage = function AssistantMessage() {
50
60
  components: {
51
61
  Text: _MarkdownText.default
52
62
  }
63
+ }), (sources === null || sources === void 0 ? void 0 : sources.length) > 0 && /*#__PURE__*/_react2.default.createElement(_Sources.default, {
64
+ messageId: messageId,
65
+ sources: sources
53
66
  }));
54
67
  };
55
68
 
@@ -1,4 +1,3 @@
1
- export function getInstantMessage(assistantState: any): string;
2
1
  export function makeConversationId(): string;
3
2
  export function pushMessagesIdInState(id: any, res: any, setState: any): void;
4
3
  export function isMessageForThisConversation(res: any, messagesId: any): any;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.sanitizeChatContent = exports.pushMessagesIdInState = exports.makeConversationId = exports.isMessageForThisConversation = exports.isAssistantEnabled = exports.getNameOfConversation = exports.getInstantMessage = exports.getDescriptionOfConversation = exports.formatConversationDate = void 0;
8
+ exports.sanitizeChatContent = exports.pushMessagesIdInState = exports.makeConversationId = exports.isMessageForThisConversation = exports.isAssistantEnabled = exports.getNameOfConversation = exports.getDescriptionOfConversation = exports.formatConversationDate = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -15,16 +15,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
15
15
 
16
16
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
17
 
18
- var getInstantMessage = function getInstantMessage(assistantState) {
19
- return Object.keys(assistantState.message).sort(function (a, b) {
20
- return a - b;
21
- }).map(function (key) {
22
- return assistantState.message[key];
23
- }).join('');
24
- };
25
-
26
- exports.getInstantMessage = getInstantMessage;
27
-
28
18
  var makeConversationId = function makeConversationId() {
29
19
  return "".concat(Date.now(), "-").concat(Math.floor(Math.random() * 90000) + 10000);
30
20
  };
@@ -114,7 +104,7 @@ exports.formatConversationDate = formatConversationDate;
114
104
  var getNameOfConversation = function getNameOfConversation(conversation) {
115
105
  var _conversation$message, _conversation$message2, _conversation$message3;
116
106
 
117
- return (_conversation$message = conversation.messages) === null || _conversation$message === void 0 ? void 0 : (_conversation$message2 = _conversation$message[((_conversation$message3 = conversation.messages) === null || _conversation$message3 === void 0 ? void 0 : _conversation$message3.length) - 2]) === null || _conversation$message2 === void 0 ? void 0 : _conversation$message2.content;
107
+ return conversation.name || ((_conversation$message = conversation.messages) === null || _conversation$message === void 0 ? void 0 : (_conversation$message2 = _conversation$message[((_conversation$message3 = conversation.messages) === null || _conversation$message3 === void 0 ? void 0 : _conversation$message3.length) - 2]) === null || _conversation$message2 === void 0 ? void 0 : _conversation$message2.content);
118
108
  };
119
109
  /**
120
110
  * Get description of the conversation
@@ -25,6 +25,8 @@ var _cozyClient = require("cozy-client");
25
25
 
26
26
  var _cozyMinilog = _interopRequireDefault(require("cozy-minilog"));
27
27
 
28
+ var _useRealtime2 = _interopRequireDefault(require("cozy-realtime/dist/useRealtime"));
29
+
28
30
  var _constants = require("../components/constants");
29
31
 
30
32
  var _queries = require("../components/queries");
@@ -181,6 +183,14 @@ var useFetchConversations = function useFetchConversations() {
181
183
  fetchConversations(null, query);
182
184
  }
183
185
  }, [query, fetchConversations]);
186
+ var refreshConversations = (0, _react.useCallback)(function () {
187
+ fetchConversations(null, previousQueryRef.current);
188
+ }, [fetchConversations]);
189
+ (0, _useRealtime2.default)(client, (0, _defineProperty2.default)({}, _queries.CHAT_CONVERSATIONS_DOCTYPE, {
190
+ created: refreshConversations,
191
+ updated: refreshConversations,
192
+ deleted: refreshConversations
193
+ }), [refreshConversations]);
184
194
  var fetchMore = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
185
195
  return _regenerator.default.wrap(function _callee2$(_context2) {
186
196
  while (1) {
@@ -33,6 +33,8 @@ jest.mock(
33
33
  { virtual: true }
34
34
  )
35
35
 
36
+ jest.mock('cozy-realtime/dist/useRealtime', () => jest.fn())
37
+
36
38
  const mockClient = {
37
39
  query: jest.fn()
38
40
  }
@@ -181,6 +181,14 @@
181
181
  "configure_api_key_title": "Configure your assistant",
182
182
  "success": "Assistant updated successfully"
183
183
  },
184
+ "conversation_delete": {
185
+ "title": "Delete conversation",
186
+ "content": "Are you sure you want to delete this conversation? This action cannot be undone.",
187
+ "buttons": {
188
+ "cancel": "Cancel",
189
+ "confirm": "Delete"
190
+ }
191
+ },
184
192
  "assistant_delete": {
185
193
  "title": "Delete AI Assistant",
186
194
  "content": "Are you sure you want to delete %{name}? This action cannot be undone and will permanently remove this assistant from your Twake.",
@@ -181,6 +181,14 @@
181
181
  "configure_api_key_title": "Configurer votre assistant",
182
182
  "success": "Assistant modifié avec succès"
183
183
  },
184
+ "conversation_delete": {
185
+ "title": "Supprimer la conversation",
186
+ "content": "Êtes-vous sûr de vouloir supprimer cette conversation\u00A0? Cette action ne peut pas être annulée.",
187
+ "buttons": {
188
+ "cancel": "Annuler",
189
+ "confirm": "Supprimer"
190
+ }
191
+ },
184
192
  "assistant_delete": {
185
193
  "title": "Supprimer l'assistant",
186
194
  "content": "Êtes-vous sûr de vouloir supprimer %{name}\u00A0? Cette action ne peut pas être annulée et supprimera définitivement cet assistant de votre Twake.",
@@ -187,6 +187,14 @@ var en = {
187
187
  configure_api_key_title: "Configure your assistant",
188
188
  success: "Assistant updated successfully"
189
189
  },
190
+ conversation_delete: {
191
+ title: "Delete conversation",
192
+ content: "Are you sure you want to delete this conversation? This action cannot be undone.",
193
+ buttons: {
194
+ cancel: "Cancel",
195
+ confirm: "Delete"
196
+ }
197
+ },
190
198
  assistant_delete: {
191
199
  title: "Delete AI Assistant",
192
200
  content: "Are you sure you want to delete %{name}? This action cannot be undone and will permanently remove this assistant from your Twake.",
@@ -379,6 +387,14 @@ var fr = {
379
387
  configure_api_key_title: "Configurer votre assistant",
380
388
  success: "Assistant modifi\xE9 avec succ\xE8s"
381
389
  },
390
+ conversation_delete: {
391
+ title: "Supprimer la conversation",
392
+ content: "\xCAtes-vous s\xFBr de vouloir supprimer cette conversation\xA0? Cette action ne peut pas \xEAtre annul\xE9e.",
393
+ buttons: {
394
+ cancel: "Annuler",
395
+ confirm: "Supprimer"
396
+ }
397
+ },
382
398
  assistant_delete: {
383
399
  title: "Supprimer l'assistant",
384
400
  content: "\xCAtes-vous s\xFBr de vouloir supprimer %{name}\xA0? Cette action ne peut pas \xEAtre annul\xE9e et supprimera d\xE9finitivement cet assistant de votre Twake.",
@@ -571,6 +587,14 @@ var ru = {
571
587
  configure_api_key_title: "\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442\u0430",
572
588
  success: "\u0410\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0431\u043D\u043E\u0432\u043B\u0451\u043D"
573
589
  },
590
+ conversation_delete: {
591
+ title: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440",
592
+ content: "\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u044D\u0442\u043E\u0442 \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440? \u042D\u0442\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043D\u0435\u043B\u044C\u0437\u044F \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C.",
593
+ buttons: {
594
+ cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
595
+ confirm: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C"
596
+ }
597
+ },
574
598
  assistant_delete: {
575
599
  title: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442\u0430",
576
600
  content: "\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C %{name}? \u042D\u0442\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043D\u0435\u043B\u044C\u0437\u044F \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0438 \u043E\u043D\u043E \u043D\u0430\u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u0430\u043B\u0438\u0442 \u044D\u0442\u043E\u0433\u043E \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442\u0430 \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043E Twake.",
@@ -763,6 +787,14 @@ var vi = {
763
787
  configure_api_key_title: "C\u1EA5u h\xECnh tr\u1EE3 l\xFD c\u1EE7a b\u1EA1n",
764
788
  success: "Ch\u1EC9nh s\u1EEDa tr\u1EE3 l\xFD th\xE0nh c\xF4ng"
765
789
  },
790
+ conversation_delete: {
791
+ title: "X\xF3a cu\u1ED9c tr\xF2 chuy\u1EC7n",
792
+ content: "B\u1EA1n c\xF3 ch\u1EAFc ch\u1EAFn mu\u1ED1n x\xF3a cu\u1ED9c tr\xF2 chuy\u1EC7n n\xE0y? H\xE0nh \u0111\u1ED9ng n\xE0y kh\xF4ng th\u1EC3 ho\xE0n t\xE1c.",
793
+ buttons: {
794
+ cancel: "H\u1EE7y",
795
+ confirm: "X\xF3a"
796
+ }
797
+ },
766
798
  assistant_delete: {
767
799
  title: "X\xF3a tr\u1EE3 l\xFD",
768
800
  content: "B\u1EA1n c\xF3 ch\u1EAFc ch\u1EAFn mu\u1ED1n x\xF3a %{name}? H\xE0nh \u0111\u1ED9ng n\xE0y kh\xF4ng th\u1EC3 ho\xE0n t\xE1c v\xE0 s\u1EBD x\xF3a v\u0129nh vi\u1EC5n tr\u1EE3 l\xFD n\xE0y kh\u1ECFi Twake c\u1EE7a b\u1EA1n.",
@@ -181,6 +181,14 @@
181
181
  "configure_api_key_title": "Настроить ассистента",
182
182
  "success": "Ассистент успешно обновлён"
183
183
  },
184
+ "conversation_delete": {
185
+ "title": "Удалить разговор",
186
+ "content": "Вы уверены, что хотите удалить этот разговор? Это действие нельзя отменить.",
187
+ "buttons": {
188
+ "cancel": "Отмена",
189
+ "confirm": "Удалить"
190
+ }
191
+ },
184
192
  "assistant_delete": {
185
193
  "title": "Удалить ассистента",
186
194
  "content": "Вы уверены, что хотите удалить %{name}? Это действие нельзя отменить и оно навсегда удалит этого ассистента из вашего Twake.",
@@ -181,6 +181,14 @@
181
181
  "configure_api_key_title": "Cấu hình trợ lý của bạn",
182
182
  "success": "Chỉnh sửa trợ lý thành công"
183
183
  },
184
+ "conversation_delete": {
185
+ "title": "Xóa cuộc trò chuyện",
186
+ "content": "Bạn có chắc chắn muốn xóa cuộc trò chuyện này? Hành động này không thể hoàn tác.",
187
+ "buttons": {
188
+ "cancel": "Hủy",
189
+ "confirm": "Xóa"
190
+ }
191
+ },
184
192
  "assistant_delete": {
185
193
  "title": "Xóa trợ lý",
186
194
  "content": "Bạn có chắc chắn muốn xóa %{name}? Hành động này không thể hoàn tác và sẽ xóa vĩnh viễn trợ lý này khỏi Twake của bạn.",
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": "0.20.0",
4
+ "version": "0.21.0",
5
5
  "author": {
6
6
  "name": "Cozy Cloud",
7
7
  "url": "https://github.com/cozy"
@@ -94,5 +94,5 @@
94
94
  "lint": "cd .. && yarn eslint --ext js,jsx,ts packages/cozy-search"
95
95
  },
96
96
  "types": "dist/index.d.ts",
97
- "gitHead": "c999ba85348597a89f8b9f35dde2e8c529da0ee7"
97
+ "gitHead": "0e19d6ff10553e998bd474d70027f78a1c0e6037"
98
98
  }
@@ -1,8 +0,0 @@
1
- export default ChatAssistantItem;
2
- declare function ChatAssistantItem({ label, className, id, sources, ...props }: {
3
- [x: string]: any;
4
- label: any;
5
- className: any;
6
- id: any;
7
- sources: any;
8
- }): JSX.Element;
@@ -1,55 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
-
14
- var _react = _interopRequireDefault(require("react"));
15
-
16
- var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
17
-
18
- var _twakeI18n = require("twake-i18n");
19
-
20
- var _ChatItem = _interopRequireDefault(require("./ChatItem"));
21
-
22
- var _Sources = _interopRequireDefault(require("./Sources/Sources"));
23
-
24
- var _TwakeAssistantIcon = require("../AssistantIcon/TwakeAssistantIcon");
25
-
26
- var _excluded = ["label", "className", "id", "sources"];
27
-
28
- var ChatAssistantItem = function ChatAssistantItem(_ref) {
29
- var label = _ref.label,
30
- className = _ref.className,
31
- id = _ref.id,
32
- sources = _ref.sources,
33
- props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
34
-
35
- var _useI18n = (0, _twakeI18n.useI18n)(),
36
- t = _useI18n.t;
37
-
38
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ChatItem.default, (0, _extends2.default)({}, props, {
39
- label: label,
40
- className: className,
41
- icon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
42
- icon: _TwakeAssistantIcon.TwakeAssistantIcon,
43
- size: 24,
44
- className: "u-mh-half",
45
- color: "var(--primaryColor)"
46
- }),
47
- name: t('assistant.name')
48
- })), (sources === null || sources === void 0 ? void 0 : sources.length) > 0 && /*#__PURE__*/_react.default.createElement(_Sources.default, {
49
- messageId: id,
50
- sources: sources
51
- }));
52
- };
53
-
54
- var _default = ChatAssistantItem;
55
- exports.default = _default;
@@ -1,5 +0,0 @@
1
- export default ChatConversationWithQuery;
2
- declare function ChatConversationWithQuery({ id, myself }: {
3
- id: any;
4
- myself: any;
5
- }): JSX.Element | null;
@@ -1,110 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
-
12
- var _react = _interopRequireWildcard(require("react"));
13
-
14
- var _cozyClient = require("cozy-client");
15
-
16
- var _ChatAssistantItem = _interopRequireDefault(require("./ChatAssistantItem"));
17
-
18
- var _ChatRealtimeAnswer = _interopRequireDefault(require("./ChatRealtimeAnswer"));
19
-
20
- var _ChatUserItem = _interopRequireDefault(require("./ChatUserItem"));
21
-
22
- var _AssistantProvider = require("../AssistantProvider");
23
-
24
- var _helpers = require("../helpers");
25
-
26
- var _queries = require("../queries");
27
-
28
- var _excluded = ["data"];
29
-
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- 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; }
33
-
34
- var ChatConversation = function ChatConversation(_ref) {
35
- var _conversation$message, _conversation$message2, _conversation$message3, _conversation$message4, _conversation$message5;
36
-
37
- var conversation = _ref.conversation,
38
- myself = _ref.myself;
39
-
40
- var _useAssistant = (0, _AssistantProvider.useAssistant)(),
41
- assistantState = _useAssistant.assistantState;
42
-
43
- var listRef = (0, _react.useRef)();
44
- var instantMessageKeysCount = Object.keys(assistantState.message).length; // test on role === user to be sure the last response is inside io.cozy.ai.chat.conversations
45
-
46
- var showRealtimeMessage = assistantState.status !== 'idle' || (conversation === null || conversation === void 0 ? void 0 : (_conversation$message = conversation.messages) === null || _conversation$message === void 0 ? void 0 : (_conversation$message2 = _conversation$message[(conversation === null || conversation === void 0 ? void 0 : (_conversation$message3 = conversation.messages) === null || _conversation$message3 === void 0 ? void 0 : _conversation$message3.length) - 1]) === null || _conversation$message2 === void 0 ? void 0 : _conversation$message2.role) === 'user';
47
- (0, _react.useEffect)(function () {
48
- var _listRef$current, _listRef$current$last;
49
-
50
- // force scroll down if new message of change in AI instant response
51
- (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : (_listRef$current$last = _listRef$current.lastElementChild) === null || _listRef$current$last === void 0 ? void 0 : _listRef$current$last.scrollIntoView(false);
52
- }, [conversation === null || conversation === void 0 ? void 0 : (_conversation$message4 = conversation.messages) === null || _conversation$message4 === void 0 ? void 0 : _conversation$message4.length, assistantState.status, instantMessageKeysCount]);
53
- return /*#__PURE__*/_react.default.createElement("div", {
54
- ref: listRef
55
- }, conversation === null || conversation === void 0 ? void 0 : (_conversation$message5 = conversation.messages) === null || _conversation$message5 === void 0 ? void 0 : _conversation$message5.map(function (message, idx) {
56
- if (message.role === 'user') {
57
- return /*#__PURE__*/_react.default.createElement(_ChatUserItem.default, {
58
- key: conversation._id + '--' + idx,
59
- className: "u-mt-1-half",
60
- myself: myself,
61
- label: message.content
62
- });
63
- }
64
-
65
- if (idx !== (conversation === null || conversation === void 0 ? void 0 : conversation.messages.length) - 1) {
66
- return /*#__PURE__*/_react.default.createElement(_ChatAssistantItem.default, {
67
- key: conversation._id + '--' + idx,
68
- className: "u-mt-1-half",
69
- id: message.id,
70
- label: message.content,
71
- sources: message.sources
72
- });
73
- }
74
-
75
- if (showRealtimeMessage) {
76
- return null;
77
- }
78
-
79
- return /*#__PURE__*/_react.default.createElement(_ChatAssistantItem.default, {
80
- key: conversation._id + '--' + idx,
81
- className: "u-mt-1-half",
82
- id: message.id,
83
- label: message.content,
84
- sources: message.sources
85
- });
86
- }), showRealtimeMessage && /*#__PURE__*/_react.default.createElement(_ChatRealtimeAnswer.default, {
87
- isLoading: assistantState.status === 'pending',
88
- label: (0, _helpers.getInstantMessage)(assistantState)
89
- }));
90
- };
91
-
92
- var ChatConversationWithQuery = function ChatConversationWithQuery(_ref2) {
93
- var id = _ref2.id,
94
- myself = _ref2.myself;
95
- var chatConversationQuery = (0, _queries.buildChatConversationQueryById)(id);
96
-
97
- var _useQuery = (0, _cozyClient.useQuery)(chatConversationQuery.definition, chatConversationQuery.options),
98
- chatConversation = _useQuery.data,
99
- queryResult = (0, _objectWithoutProperties2.default)(_useQuery, _excluded);
100
-
101
- var isLoading = (0, _cozyClient.isQueryLoading)(queryResult);
102
- if (isLoading) return null;
103
- return /*#__PURE__*/_react.default.createElement(ChatConversation, {
104
- conversation: chatConversation,
105
- myself: myself
106
- });
107
- };
108
-
109
- var _default = ChatConversationWithQuery;
110
- exports.default = _default;
@@ -1,7 +0,0 @@
1
- export default ChatItem;
2
- declare function ChatItem({ className, icon, name, label }: {
3
- className: any;
4
- icon: any;
5
- name: any;
6
- label: any;
7
- }): JSX.Element;
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _Box = _interopRequireDefault(require("cozy-ui/transpiled/react/Box"));
13
-
14
- var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
15
-
16
- var _ChatItemLabel = _interopRequireDefault(require("./ChatItemLabel"));
17
-
18
- var ChatItem = function ChatItem(_ref) {
19
- var className = _ref.className,
20
- icon = _ref.icon,
21
- name = _ref.name,
22
- label = _ref.label;
23
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Box.default, {
24
- className: className,
25
- display: "flex",
26
- alignItems: "center",
27
- gridGap: 12
28
- }, icon, /*#__PURE__*/_react.default.createElement(_Typography.default, {
29
- variant: "h6",
30
- display: "inline"
31
- }, name)), /*#__PURE__*/_react.default.createElement(_Box.default, {
32
- pl: "44px"
33
- }, /*#__PURE__*/_react.default.createElement(_ChatItemLabel.default, {
34
- label: label
35
- })));
36
- };
37
-
38
- var _default = ChatItem;
39
- exports.default = _default;
@@ -1,5 +0,0 @@
1
- declare const _default: React.MemoExoticComponent<({ label }: {
2
- label: any;
3
- }) => any>;
4
- export default _default;
5
- import React from 'react';
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _Markdown = _interopRequireDefault(require("cozy-ui/transpiled/react/Markdown"));
13
-
14
- var _helpers = require("../helpers");
15
-
16
- var ChatItemLabel = function ChatItemLabel(_ref) {
17
- var label = _ref.label;
18
-
19
- if (typeof label === 'string') {
20
- var content = (0, _helpers.sanitizeChatContent)(label);
21
- return /*#__PURE__*/_react.default.createElement(_Markdown.default, {
22
- content: content
23
- });
24
- }
25
-
26
- return label;
27
- }; // need memo to avoid rendering all label of all items
28
-
29
-
30
- var _default = /*#__PURE__*/_react.default.memo(ChatItemLabel);
31
-
32
- exports.default = _default;
@@ -1,5 +0,0 @@
1
- export default ChatRealtimeAnswer;
2
- declare function ChatRealtimeAnswer({ isLoading, label }: {
3
- isLoading: any;
4
- label: any;
5
- }): JSX.Element;
@@ -1,30 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _Skeleton = _interopRequireDefault(require("cozy-ui/transpiled/react/Skeleton"));
13
-
14
- var _ChatAssistantItem = _interopRequireDefault(require("./ChatAssistantItem"));
15
-
16
- var ChatRealtimeAnswer = function ChatRealtimeAnswer(_ref) {
17
- var isLoading = _ref.isLoading,
18
- label = _ref.label;
19
- return /*#__PURE__*/_react.default.createElement(_ChatAssistantItem.default, {
20
- className: "u-mt-1-half",
21
- label: isLoading ? /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
22
- width: "100%"
23
- }), /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
24
- width: "60%"
25
- })) : label
26
- });
27
- };
28
-
29
- var _default = ChatRealtimeAnswer;
30
- exports.default = _default;
@@ -1,7 +0,0 @@
1
- export default ChatUserItem;
2
- declare function ChatUserItem({ className, label, myself, ...props }: {
3
- [x: string]: any;
4
- className: any;
5
- label: any;
6
- myself: any;
7
- }): JSX.Element;
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
-
14
- var _react = _interopRequireDefault(require("react"));
15
-
16
- var _contact = require("cozy-client/dist/models/contact");
17
-
18
- var _Avatar = _interopRequireDefault(require("cozy-ui/transpiled/react/Avatar"));
19
-
20
- var _twakeI18n = require("twake-i18n");
21
-
22
- var _ChatItem = _interopRequireDefault(require("./ChatItem"));
23
-
24
- var _excluded = ["className", "label", "myself"];
25
-
26
- var ChatUserItem = function ChatUserItem(_ref) {
27
- var className = _ref.className,
28
- label = _ref.label,
29
- myself = _ref.myself,
30
- props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
31
-
32
- var _useI18n = (0, _twakeI18n.useI18n)(),
33
- t = _useI18n.t;
34
-
35
- var contact = myself || {
36
- displayName: t('assistant.default_username')
37
- };
38
- return /*#__PURE__*/_react.default.createElement(_ChatItem.default, (0, _extends2.default)({}, props, {
39
- className: className,
40
- icon: /*#__PURE__*/_react.default.createElement(_Avatar.default, {
41
- text: (0, _contact.getInitials)(contact),
42
- size: 24
43
- }),
44
- name: (0, _contact.getDisplayName)(contact),
45
- label: label
46
- }));
47
- };
48
-
49
- var _default = ChatUserItem;
50
- exports.default = _default;