@telia-ace/knowledge-widget-bot-provider 0.0.1-alpha.4 → 0.0.1-alpha.40

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 (69) hide show
  1. package/lib/client/chat.client.d.ts +3 -2
  2. package/lib/client/chat.client.js +98 -33
  3. package/lib/client/contact-method.client.d.ts +9 -1
  4. package/lib/client/contact-method.client.js +48 -32
  5. package/lib/client/http.client.d.ts +11 -7
  6. package/lib/client/http.client.js +138 -41
  7. package/lib/client/middleware.client.d.ts +4 -3
  8. package/lib/client/middleware.client.js +100 -35
  9. package/lib/contract/custom-component/contact-method-item.js +12 -34
  10. package/lib/contract/custom-component/contact-method-list.js +6 -34
  11. package/lib/contract/custom-component/contact-method.js +12 -17
  12. package/lib/contract/enum/server-entry-type.enum.d.ts +3 -2
  13. package/lib/contract/enum/server-entry-type.enum.js +5 -7
  14. package/lib/contract/model/conversation-api-model/list.model.js +1 -2
  15. package/lib/contract/model/conversation-api-model/message.model.js +1 -2
  16. package/lib/contract/model/http/action.model.js +1 -2
  17. package/lib/contract/model/http/client-action.model.js +1 -2
  18. package/lib/contract/model/http/client-envelope.model.js +1 -2
  19. package/lib/contract/model/http/connect-options.model.js +1 -2
  20. package/lib/contract/model/http/global-state.model.js +1 -2
  21. package/lib/contract/model/http/http-client-options.model.js +1 -2
  22. package/lib/contract/model/http/server-entry.model.js +1 -2
  23. package/lib/contract/model/http/server-envelope.model.js +1 -2
  24. package/lib/contract/model/middleware/aggregator-state.model.js +1 -2
  25. package/lib/contract/model/shared/loose-object.model.js +1 -2
  26. package/lib/helper/chat.helper.js +1 -4
  27. package/lib/helper/http.helper.d.ts +1 -1
  28. package/lib/helper/http.helper.js +8 -13
  29. package/lib/helper/middleware.helper.d.ts +1 -1
  30. package/lib/helper/middleware.helper.js +7 -11
  31. package/lib/helper/store.helper.d.ts +4 -3
  32. package/lib/helper/store.helper.js +105 -16
  33. package/lib/index.js +2 -8
  34. package/lib/interface/entry.interface.d.ts +6 -3
  35. package/lib/interface/entry.interface.js +176 -57
  36. package/lib/interface/middleware/paging.interface.js +3 -5
  37. package/lib/interface/middleware/processor.interface.js +1 -3
  38. package/lib/plugin.d.ts +2 -2
  39. package/lib/plugin.js +73 -90
  40. package/lib/utils.d.ts +1 -0
  41. package/lib/utils.js +5 -0
  42. package/lib-esm/client/chat.client.d.ts +3 -2
  43. package/lib-esm/client/chat.client.js +81 -11
  44. package/lib-esm/client/contact-method.client.d.ts +9 -1
  45. package/lib-esm/client/contact-method.client.js +28 -6
  46. package/lib-esm/client/http.client.d.ts +11 -7
  47. package/lib-esm/client/http.client.js +125 -22
  48. package/lib-esm/client/middleware.client.d.ts +4 -3
  49. package/lib-esm/client/middleware.client.js +89 -19
  50. package/lib-esm/contract/custom-component/contact-method-item.js +4 -1
  51. package/lib-esm/contract/enum/server-entry-type.enum.d.ts +3 -2
  52. package/lib-esm/contract/enum/server-entry-type.enum.js +3 -2
  53. package/lib-esm/helper/http.helper.d.ts +1 -1
  54. package/lib-esm/helper/http.helper.js +7 -9
  55. package/lib-esm/helper/middleware.helper.d.ts +1 -1
  56. package/lib-esm/helper/middleware.helper.js +5 -6
  57. package/lib-esm/helper/store.helper.d.ts +4 -3
  58. package/lib-esm/helper/store.helper.js +103 -11
  59. package/lib-esm/interface/entry.interface.d.ts +6 -3
  60. package/lib-esm/interface/entry.interface.js +160 -39
  61. package/lib-esm/plugin.d.ts +2 -2
  62. package/lib-esm/plugin.js +66 -55
  63. package/lib-esm/utils.d.ts +1 -0
  64. package/lib-esm/utils.js +5 -0
  65. package/package.json +45 -45
  66. package/lib/interface/middleware/contact-expanded.interface.d.ts +0 -0
  67. package/lib/interface/middleware/contact-expanded.interface.js +0 -50
  68. package/lib/interface/middleware/legacy-contact-methods.interface.d.ts +0 -0
  69. package/lib/interface/middleware/legacy-contact-methods.interface.js +0 -394
@@ -1,28 +1,97 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __values = (this && this.__values) || function(o) {
38
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
39
+ if (m) return m.call(o);
40
+ if (o && typeof o.length === "number") return {
41
+ next: function () {
42
+ if (o && i >= o.length) o = void 0;
43
+ return { value: o && o[i++], done: !o };
44
+ }
45
+ };
46
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
47
+ };
1
48
  import { v4 as newGuid } from 'uuid';
2
49
  import { ServerEntryTypeEnum } from '../contract/enum/server-entry-type.enum';
3
50
  import { ChatHelper } from '../helper/chat.helper';
4
51
  import { StoreHelper } from '../helper/store.helper';
5
52
  import EntryInterface from '../interface/entry.interface';
6
53
  var ChatClient = /** @class */ (function () {
7
- function ChatClient() {
8
- this.entryInterface = new EntryInterface();
54
+ function ChatClient(container) {
55
+ this.entryInterface = new EntryInterface(container);
9
56
  }
57
+ // Initialize from setting the user and agent for the Helper
10
58
  ChatClient.initialize = function (user, agent) {
11
59
  ChatHelper.setUser(user);
12
60
  ChatHelper.setAgent(agent);
13
61
  };
62
+ // function for posting the messages
14
63
  ChatClient.prototype.processMessageArrayAndStoreIt = function (messages) {
15
- var _this = this;
16
- messages
17
- .filter(function (o) { return o && o != null; })
18
- .forEach(function (o) {
19
- if (o.isUser)
20
- _this.postUserMessage(o);
21
- else
22
- _this.postAgentMessage(o);
64
+ return __awaiter(this, void 0, void 0, function () {
65
+ var _a, _b, message;
66
+ var e_1, _c;
67
+ return __generator(this, function (_d) {
68
+ switch (_d.label) {
69
+ case 0:
70
+ try {
71
+ for (_a = __values(messages.filter(function (o) { return o && o != null; })), _b = _a.next(); !_b.done; _b = _a.next()) {
72
+ message = _b.value;
73
+ if (message.isUser)
74
+ this.postUserMessage(message);
75
+ else
76
+ this.postAgentMessage(message);
77
+ }
78
+ }
79
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
80
+ finally {
81
+ try {
82
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
83
+ }
84
+ finally { if (e_1) throw e_1.error; }
85
+ }
86
+ return [4 /*yield*/, StoreHelper.insertOrUpdateMessageArrayStore(messages)];
87
+ case 1:
88
+ _d.sent();
89
+ return [2 /*return*/];
90
+ }
91
+ });
23
92
  });
24
- StoreHelper.insertOrUpdateMessageArrayStore(messages);
25
93
  };
94
+ // function for updating current messages
26
95
  ChatClient.prototype.updateMessageArrayAndStoreIt = function (messages) {
27
96
  var conversationEntry = undefined;
28
97
  messages.forEach(function (o) {
@@ -32,6 +101,7 @@ var ChatClient = /** @class */ (function () {
32
101
  });
33
102
  StoreHelper.insertOrUpdateMessageArrayStore(messages, conversationEntry);
34
103
  };
104
+ // function for posting a message for the user actions, such as button clicks
35
105
  ChatClient.prototype.printUserMessageAndStoreIt = function (action) {
36
106
  if (action == 'next' || action == 'help')
37
107
  return;
@@ -1,17 +1,25 @@
1
1
  import { ContactMethodPlatform } from '@telia-ace/knowledge-widget-adapters';
2
2
  import { DataClient } from '@telia-ace/knowledge-widget-types-grid';
3
+ import { Container } from '@webprovisions/platform';
3
4
  export declare class ContactMethodClient {
4
5
  private static dataClient;
5
6
  private static contactMethodPlatform;
6
7
  private static contactMessageEntryArray;
7
8
  private static agent;
8
9
  private chatClient;
9
- static initialize(dataClient: DataClient, contactMethodPlatform: ContactMethodPlatform, agent: any): void;
10
+ private static container;
11
+ constructor(container: Container);
12
+ static initialize(container: any, dataClient: DataClient, contactMethodPlatform: ContactMethodPlatform, agent: any): void;
10
13
  handleNewForm: (errors: any, entry: any) => Promise<void>;
11
14
  handleContactMethod: (input?: string) => Promise<void>;
12
15
  validate(form: any): void;
13
16
  private handleContactCategoryList;
14
17
  private handleForm;
18
+ addContactMethod(contactMethod: any): {
19
+ contactMethods: any;
20
+ type: string;
21
+ noPadding: boolean;
22
+ };
15
23
  private handleContactMethodList;
16
24
  private handleSingleContactMethod;
17
25
  private submit;
@@ -51,9 +51,9 @@ import { v4 as uuidv4 } from 'uuid';
51
51
  import { StoreHelper } from '../helper/store.helper';
52
52
  import ChatClient from './chat.client';
53
53
  var ContactMethodClient = /** @class */ (function () {
54
- function ContactMethodClient() {
54
+ function ContactMethodClient(container) {
55
55
  var _this = this;
56
- this.chatClient = new ChatClient();
56
+ // function for handling forms as contact methods
57
57
  this.handleNewForm = function (errors, entry) { return __awaiter(_this, void 0, void 0, function () {
58
58
  return __generator(this, function (_a) {
59
59
  this.updateForm(entry.contactMethods, {
@@ -68,6 +68,7 @@ var ContactMethodClient = /** @class */ (function () {
68
68
  return [2 /*return*/];
69
69
  });
70
70
  }); };
71
+ // function for receiving the contact method based on the input
71
72
  this.handleContactMethod = function (input) {
72
73
  if (input === void 0) { input = ''; }
73
74
  return __awaiter(_this, void 0, void 0, function () {
@@ -132,12 +133,15 @@ var ContactMethodClient = /** @class */ (function () {
132
133
  }
133
134
  return (contactMethod === null || contactMethod === void 0 ? void 0 : contactMethod.body) || {};
134
135
  };
136
+ this.chatClient = new ChatClient(container);
135
137
  }
136
- ContactMethodClient.initialize = function (dataClient, contactMethodPlatform, agent) {
138
+ ContactMethodClient.initialize = function (container, dataClient, contactMethodPlatform, agent) {
137
139
  this.dataClient = dataClient;
138
140
  this.contactMethodPlatform = contactMethodPlatform;
139
141
  this.agent = agent;
142
+ this.container = container;
140
143
  };
144
+ // validation of the form provided
141
145
  ContactMethodClient.prototype.validate = function (form) {
142
146
  var _this = this;
143
147
  var entry = ContactMethodClient.contactMessageEntryArray.find(function (o) { return o.id == form.schema.id; });
@@ -158,6 +162,14 @@ var ContactMethodClient = /** @class */ (function () {
158
162
  });
159
163
  this.printMessage(contactMethods.id, contactMethods, title);
160
164
  };
165
+ ContactMethodClient.prototype.addContactMethod = function (contactMethod) {
166
+ contactMethod.expanded = true;
167
+ this.updateForm(contactMethod, {
168
+ submit: 'Submit',
169
+ errors: undefined,
170
+ });
171
+ return this.printMessage(contactMethod.id, contactMethod);
172
+ };
161
173
  ContactMethodClient.prototype.handleContactMethodList = function (input, contactMethods) {
162
174
  var title = input.split('/')[2];
163
175
  var newGuid = uuidv4();
@@ -210,6 +222,7 @@ var ContactMethodClient = /** @class */ (function () {
210
222
  isUser: false,
211
223
  },
212
224
  ]);
225
+ return message;
213
226
  }
214
227
  else {
215
228
  if (title)
@@ -232,15 +245,24 @@ var ContactMethodClient = /** @class */ (function () {
232
245
  contactMethods: contactMethods,
233
246
  entry: entry,
234
247
  });
248
+ return message;
235
249
  }
236
250
  };
237
251
  ContactMethodClient.prototype.loadContactMethods = function (dataType, id) {
238
252
  if (id === void 0) { id = undefined; }
239
253
  switch (dataType) {
240
254
  case DataType.ContactMethodCategories: {
241
- return ContactMethodClient.dataClient
242
- .fetch(DataType.ContactMethods, { contactMethodCategoryId: id })
243
- .then(function (contactMethods) { return contactMethods; });
255
+ return ContactMethodClient.container
256
+ .getAsync('matchingClient')
257
+ .then(function (matchingClient) {
258
+ return matchingClient.customRequest('/contactmethods', 'GET', {});
259
+ })
260
+ .then(function (contactMethods) {
261
+ return contactMethods;
262
+ });
263
+ // return ContactMethodClient.dataClient
264
+ // .fetch(DataType.ContactMethods, { contactMethodCategoryId: id })
265
+ // .then((contactMethods) => contactMethods);
244
266
  }
245
267
  case DataType.ContactMethods: {
246
268
  if (!!id) {
@@ -1,4 +1,4 @@
1
- import { ServerEntry } from '../contract/model/http/server-entry.model';
1
+ import { Container } from '@webprovisions/platform';
2
2
  export declare class HttpClient {
3
3
  private endpointUrl;
4
4
  private clientId;
@@ -7,16 +7,20 @@ export declare class HttpClient {
7
7
  private options;
8
8
  private middlewareClient;
9
9
  private chatClient;
10
- constructor(endpoint: string);
11
- firstHit(): void;
12
- handleUpdate(action: string): Promise<ServerEntry[]>;
13
- handleInput(action: string): void;
14
- handlePhrase(phrase: string): void;
10
+ private container;
11
+ constructor(endpoint: string, clientId: string, container: Container);
12
+ firstHit(): Promise<void>;
13
+ handleUpdate(action: string): Promise<any>;
14
+ handleInput(action: string): Promise<void>;
15
+ handleCategories(): Promise<void>;
16
+ handlePhrase(phrase: string): Promise<void>;
15
17
  private postAndHandleTheData;
16
- private postAndReturnTheData;
18
+ private postAndHandleTheUpdateData;
17
19
  private getHttpOptions;
18
20
  private constructInputEnvelope;
21
+ private constructCategoriesEnvelope;
19
22
  private constructPhraseEnvelope;
20
23
  private constructFirstHitEnvelope;
21
24
  private handleResponseData;
25
+ private handleUpdateResponseData;
22
26
  }
@@ -1,50 +1,137 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { readStorage } from '@telia-ace/widget-services';
38
+ import { v4 as newGuid } from 'uuid';
39
+ import { ChatHelper } from '../helper/chat.helper';
1
40
  import { HttpHelper } from '../helper/http.helper';
2
41
  import { MiddlewareHelper } from '../helper/middleware.helper';
3
42
  import { StoreHelper } from '../helper/store.helper';
4
43
  import ChatClient from './chat.client';
5
44
  import MiddlewareClient from './middleware.client';
6
45
  var HttpClient = /** @class */ (function () {
7
- function HttpClient(endpoint) {
46
+ function HttpClient(endpoint, clientId, container) {
8
47
  this.options = {
9
48
  credentials: HttpHelper.getCredentials(),
10
- clientId: '84d96a63-b8ba-33ec-22d5-515255f866f8',
49
+ clientId: clientId,
11
50
  };
12
51
  this.apiEndpoint = endpoint;
13
52
  this.projectionPath = window.location.href;
14
53
  this.endpointUrl = HttpHelper.combineUrl(this.projectionPath, 'conversations');
15
54
  this.clientId = this.options.clientId;
16
- this.middlewareClient = new MiddlewareClient();
17
- this.chatClient = new ChatClient();
55
+ this.middlewareClient = new MiddlewareClient(container);
56
+ this.chatClient = new ChatClient(container);
57
+ this.container = container;
18
58
  }
19
59
  HttpClient.prototype.firstHit = function () {
20
- var _this = this;
21
- // On first hit if there are entries stored in the storage, use them
22
- // Otherwise start a new session
23
- MiddlewareHelper.getEntrySessionStorage().then(function (o) {
24
- if (o && o.length > 0)
25
- _this.chatClient.processMessageArrayAndStoreIt(o);
26
- else {
27
- var envelope = _this.constructFirstHitEnvelope();
28
- _this.postAndHandleTheData(envelope);
29
- }
60
+ return __awaiter(this, void 0, void 0, function () {
61
+ var entries, meta, agent, envelope;
62
+ return __generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0: return [4 /*yield*/, MiddlewareHelper.getEntrySessionStorage()];
65
+ case 1:
66
+ entries = (_a.sent());
67
+ if (!(entries && entries.length > 0)) return [3 /*break*/, 5];
68
+ return [4 /*yield*/, StoreHelper.rehydrateState()];
69
+ case 2:
70
+ _a.sent();
71
+ return [4 /*yield*/, readStorage(this.container, 'bot-provider-conversation-meta')];
72
+ case 3:
73
+ meta = _a.sent();
74
+ if (meta === null || meta === void 0 ? void 0 : meta.agent) {
75
+ agent = ChatHelper.getAgent();
76
+ agent.update({
77
+ name: meta.agent.name,
78
+ avatar: meta.agent.avatar,
79
+ });
80
+ }
81
+ return [4 /*yield*/, this.chatClient.processMessageArrayAndStoreIt(entries)];
82
+ case 4:
83
+ _a.sent();
84
+ return [3 /*break*/, 7];
85
+ case 5:
86
+ envelope = this.constructFirstHitEnvelope();
87
+ return [4 /*yield*/, this.postAndHandleTheData(envelope)];
88
+ case 6:
89
+ _a.sent();
90
+ _a.label = 7;
91
+ case 7: return [2 /*return*/];
92
+ }
93
+ });
30
94
  });
31
95
  };
32
96
  // for updates, such as paging changes
33
97
  HttpClient.prototype.handleUpdate = function (action) {
34
98
  var envelope = this.constructInputEnvelope(action);
35
- return this.postAndReturnTheData(envelope, action).then(function (o) {
36
- return o.entries;
37
- });
99
+ return this.postAndHandleTheUpdateData(envelope, action);
38
100
  };
39
101
  // for action clicks
40
102
  HttpClient.prototype.handleInput = function (action) {
41
103
  var envelope = this.constructInputEnvelope(action);
42
- this.postAndHandleTheData(envelope, action);
104
+ return this.postAndHandleTheData(envelope, action);
105
+ };
106
+ // for category burger
107
+ HttpClient.prototype.handleCategories = function () {
108
+ var envelope = this.constructCategoriesEnvelope();
109
+ return this.postAndHandleTheData(envelope);
43
110
  };
44
111
  // for text entries by user
45
112
  HttpClient.prototype.handlePhrase = function (phrase) {
46
113
  var envelope = this.constructPhraseEnvelope(phrase);
47
- this.postAndHandleTheData(envelope);
114
+ var id = newGuid();
115
+ var entry = {
116
+ id: id,
117
+ type: 'Text',
118
+ timestamp: new Date(),
119
+ content: {
120
+ $type: 'Humany.Matching.Bots.Conversations.Content.Text, Humany.Matching',
121
+ html: "".concat(phrase),
122
+ },
123
+ actions: {},
124
+ tags: {},
125
+ };
126
+ var message = {
127
+ id: id,
128
+ message: ['html', { body: "<p>".concat(phrase, "</p>") }],
129
+ entry: entry,
130
+ isUser: true,
131
+ conversationEntry: {},
132
+ };
133
+ StoreHelper.insertMessageToStore(message);
134
+ return this.postAndHandleTheData(envelope);
48
135
  };
49
136
  HttpClient.prototype.postAndHandleTheData = function (envelope, action) {
50
137
  var _this = this;
@@ -59,7 +146,8 @@ var HttpClient = /** @class */ (function () {
59
146
  })
60
147
  .catch(function (err) { return console.log(err); });
61
148
  };
62
- HttpClient.prototype.postAndReturnTheData = function (envelope, action) {
149
+ HttpClient.prototype.postAndHandleTheUpdateData = function (envelope, action) {
150
+ var _this = this;
63
151
  return fetch(this.apiEndpoint, this.getHttpOptions(envelope))
64
152
  .then(function (response) {
65
153
  if (response.ok)
@@ -67,7 +155,7 @@ var HttpClient = /** @class */ (function () {
67
155
  throw response;
68
156
  })
69
157
  .then(function (data) {
70
- return data;
158
+ _this.handleUpdateResponseData(data, action);
71
159
  })
72
160
  .catch(function (err) { return console.log(err); });
73
161
  };
@@ -85,6 +173,18 @@ var HttpClient = /** @class */ (function () {
85
173
  clientId: this.clientId,
86
174
  };
87
175
  };
176
+ HttpClient.prototype.constructCategoriesEnvelope = function () {
177
+ return {
178
+ action: {
179
+ content: {
180
+ $type: 'Humany.Matching.Bots.Conversations.Actions.BrowseCategories, Humany.Matching',
181
+ },
182
+ key: 'browseCategories',
183
+ },
184
+ globalState: StoreHelper.getGlobalState(),
185
+ clientId: this.clientId,
186
+ };
187
+ };
88
188
  HttpClient.prototype.constructPhraseEnvelope = function (phrase) {
89
189
  return {
90
190
  command: { phrase: phrase },
@@ -101,7 +201,10 @@ var HttpClient = /** @class */ (function () {
101
201
  };
102
202
  HttpClient.prototype.handleResponseData = function (envelope, action) {
103
203
  StoreHelper.setGlobalState(envelope.globalState);
104
- this.middlewareClient.handleEntries(envelope.entries, action);
204
+ return this.middlewareClient.handleEntries(envelope.entries, action);
205
+ };
206
+ HttpClient.prototype.handleUpdateResponseData = function (envelope, action) {
207
+ return this.middlewareClient.handleUpdate(envelope.entries, action);
105
208
  };
106
209
  return HttpClient;
107
210
  }());
@@ -1,13 +1,14 @@
1
+ import { Container } from '@webprovisions/platform';
1
2
  import { ServerEntry } from '../contract/model/http/server-entry.model';
2
3
  export default class MiddlewareClient {
3
4
  private paging;
4
5
  private processor;
5
6
  private entryInterface;
6
7
  private chatClient;
7
- constructor();
8
+ constructor(container: Container);
8
9
  static initialize(container: any, widget: any): void;
9
- handleEntries(entries: ServerEntry[], action?: string): void;
10
- handleUpdate(input: string, endpoint: string): void;
10
+ handleEntries(entries: ServerEntry[], action?: string): Promise<void>;
11
+ handleUpdate(entries: ServerEntry[], action?: string): Promise<void>;
11
12
  checkForUpdate(input: string): boolean;
12
13
  private executeMiddlewares;
13
14
  }
@@ -1,40 +1,110 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { createStorageWriter, StorageCategory } from '@telia-ace/widget-services';
38
+ import { ChatHelper } from '../helper/chat.helper';
1
39
  import { MiddlewareHelper } from '../helper/middleware.helper';
2
40
  import { StoreHelper } from '../helper/store.helper';
3
41
  import EntryInterface from '../interface/entry.interface';
4
- // import ContactExpandedInterface from "../interface/middleware/contact-expanded.interface";
5
- // import ContactInterface from "../interface/middleware/legacy-contact-methods.interface";
6
42
  import PagingInterface from '../interface/middleware/paging.interface';
7
43
  import ProcessorInterface from '../interface/middleware/processor.interface';
8
44
  import ChatClient from './chat.client';
9
- import { HttpClient } from './http.client';
10
45
  var MiddlewareClient = /** @class */ (function () {
11
- function MiddlewareClient() {
12
- // this.contactExpanded = new ContactExpandedInterface();
13
- // this.legacyContact = new ContactInterface();
46
+ function MiddlewareClient(container) {
14
47
  this.paging = new PagingInterface();
15
48
  this.processor = new ProcessorInterface();
16
- this.entryInterface = new EntryInterface();
17
- this.chatClient = new ChatClient();
49
+ this.entryInterface = new EntryInterface(container);
50
+ this.chatClient = new ChatClient(container);
18
51
  }
19
52
  MiddlewareClient.initialize = function (container, widget) {
20
53
  MiddlewareHelper.setContainer(container);
21
54
  MiddlewareHelper.setWidget(widget);
22
55
  };
23
- // called on all standart scenarios like actions and user messages
56
+ // called on all standard scenarios like actions and user messages
24
57
  MiddlewareClient.prototype.handleEntries = function (entries, action) {
25
- var o = this.executeMiddlewares(entries, false, action);
26
- var messageArray = this.entryInterface.transformArray(o);
27
- this.chatClient.processMessageArrayAndStoreIt(messageArray);
58
+ return __awaiter(this, void 0, void 0, function () {
59
+ var widgetEntry, agent, write, o, messageArray;
60
+ return __generator(this, function (_a) {
61
+ switch (_a.label) {
62
+ case 0:
63
+ widgetEntry = (entries || []).find(function (e) { return e.type === 'Widget'; });
64
+ if (!widgetEntry) return [3 /*break*/, 2];
65
+ agent = ChatHelper.getAgent();
66
+ if (!agent) return [3 /*break*/, 2];
67
+ agent.update({
68
+ name: widgetEntry.content.agent.name,
69
+ avatar: widgetEntry.content.agent.avatar,
70
+ });
71
+ return [4 /*yield*/, createStorageWriter(MiddlewareHelper.getContainer(), 'bot-provider-conversation-meta', StorageCategory.Necessary)];
72
+ case 1:
73
+ write = _a.sent();
74
+ write({
75
+ agent: {
76
+ name: widgetEntry.content.agent.name,
77
+ avatar: widgetEntry.content.agent.avatar,
78
+ },
79
+ });
80
+ _a.label = 2;
81
+ case 2:
82
+ o = this.executeMiddlewares(entries, false, action);
83
+ return [4 /*yield*/, this.entryInterface.transformArray(o)];
84
+ case 3:
85
+ messageArray = _a.sent();
86
+ this.chatClient.processMessageArrayAndStoreIt(messageArray);
87
+ return [2 /*return*/];
88
+ }
89
+ });
90
+ });
28
91
  };
29
92
  // called on situations such as paging changes
30
93
  // when no new entries will be printed
31
- MiddlewareClient.prototype.handleUpdate = function (input, endpoint) {
32
- var _this = this;
33
- var httpClient = new HttpClient(endpoint);
34
- httpClient.handleUpdate(input).then(function (entries) {
35
- var o = _this.executeMiddlewares(entries, true, input);
36
- var messageArray = _this.entryInterface.transformArray(o);
37
- _this.chatClient.updateMessageArrayAndStoreIt(messageArray);
94
+ MiddlewareClient.prototype.handleUpdate = function (entries, action) {
95
+ return __awaiter(this, void 0, void 0, function () {
96
+ var o, messageArray;
97
+ return __generator(this, function (_a) {
98
+ switch (_a.label) {
99
+ case 0:
100
+ o = this.executeMiddlewares(entries, true, action);
101
+ return [4 /*yield*/, this.entryInterface.transformArray(o)];
102
+ case 1:
103
+ messageArray = _a.sent();
104
+ this.chatClient.updateMessageArrayAndStoreIt(messageArray);
105
+ return [2 /*return*/];
106
+ }
107
+ });
38
108
  });
39
109
  };
40
110
  // checks whether the action was of an update type
@@ -26,13 +26,16 @@ var __read = (this && this.__read) || function (o, n) {
26
26
  return ar;
27
27
  };
28
28
  import { ContactMethod as GenericContactMethod } from '@telia-ace/knowledge-widget-adapters';
29
- import { useContainer, useDispatch } from '@telia-ace/widget-ui';
29
+ import { useContainer, useDispatch } from '@telia-ace/knowledge-widget-ui';
30
30
  import React, { useEffect, useState } from 'react';
31
31
  var ContactMethodItem = function (props) {
32
32
  var dispatch = useDispatch();
33
33
  var container = useContainer();
34
34
  var _a = __read(useState(props.contactMethod.body), 2), body = _a[0], setBody = _a[1];
35
35
  useEffect(function () {
36
+ if (!container || !container.get('$widget')) {
37
+ return;
38
+ }
36
39
  var events = container.get('$widget').events;
37
40
  events.subscribe('form:validated', function (_event, _data) {
38
41
  // TODO: this is a due to props not being updated when props.contactMethod.body changes
@@ -1,6 +1,7 @@
1
1
  export declare enum ServerEntryTypeEnum {
2
2
  Widget = 0,
3
3
  Text = 1,
4
- List = 2,
5
- Error = 3
4
+ Contact = 2,
5
+ List = 3,
6
+ Error = 4
6
7
  }