@zohoim/client-sdk 1.0.0-poc83 → 1.0.0-poc84

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 (34) hide show
  1. package/es/application/services/messages/MessageService.js +0 -5
  2. package/es/application/services/sessions/SessionService.js +5 -0
  3. package/es/domain/dto/messages/index.js +0 -1
  4. package/es/domain/dto/messages/initiateSessionRequest.js +0 -1
  5. package/es/domain/dto/messages/sendAttachmentRequest.js +1 -0
  6. package/es/domain/dto/messages/sendMessageRequest.js +0 -2
  7. package/es/domain/dto/sessions/index.js +2 -1
  8. package/es/domain/dto/sessions/markSessionAsReadRequest.js +1 -5
  9. package/es/domain/dto/sessions/pickupSessionRequest.js +9 -0
  10. package/es/domain/dto/sessions/updateSessionStatusRequest.js +1 -0
  11. package/es/domain/entities/Actor/Actor.js +1 -5
  12. package/es/domain/entities/Message/Action.js +4 -3
  13. package/es/domain/entities/Message/ExternalInfo.js +0 -9
  14. package/es/domain/entities/Message/Info.js +6 -8
  15. package/es/domain/entities/Message/Message.js +3 -39
  16. package/es/domain/entities/Session/Session.js +4 -20
  17. package/es/domain/enum/actor/ActorType.js +1 -1
  18. package/es/domain/enum/attachment/AttachmentStatus.js +3 -1
  19. package/es/domain/enum/message/MessageDirection.js +2 -2
  20. package/es/domain/enum/message/MessageType.js +1 -5
  21. package/es/domain/interfaces/repositories/messages/IMessageRepository.js +1 -6
  22. package/es/domain/interfaces/repositories/sessions/ISessionRepository.js +6 -1
  23. package/es/domain/schema/message/MessageSchema.js +0 -4
  24. package/es/infrastructure/api/BaseAPI.js +56 -9
  25. package/es/infrastructure/api/messages/MessageAPI.js +1 -11
  26. package/es/infrastructure/api/registry/bots/botAPIRegistry.js +2 -1
  27. package/es/infrastructure/api/registry/messages/messageAPIRegistry.js +1 -6
  28. package/es/infrastructure/api/registry/sessions/sessionAPIRegistry.js +8 -2
  29. package/es/infrastructure/api/sessions/SessionAPI.js +11 -1
  30. package/es/infrastructure/repositories/messages/MessageRepository.js +0 -8
  31. package/es/infrastructure/repositories/sessions/SessionRepository.js +8 -0
  32. package/package.json +1 -1
  33. package/es/domain/dto/messages/getMessageRequest.js +0 -14
  34. package/es/infrastructure/api/UrlBuilder.js +0 -53
@@ -12,10 +12,6 @@ export default class MessageService extends IMessageRepository {
12
12
  return this.messageRepository.getMessages(request);
13
13
  }
14
14
 
15
- async getMessage(request) {
16
- return this.messageRepository.getMessage(request);
17
- }
18
-
19
15
  async getFullContent(request) {
20
16
  return this.messageRepository.getFullContent(request);
21
17
  }
@@ -47,7 +43,6 @@ export default class MessageService extends IMessageRepository {
47
43
  toJSON() {
48
44
  return {
49
45
  getMessages: this.getMessages.bind(this),
50
- getMessage: this.getMessage.bind(this),
51
46
  getFullContent: this.getFullContent.bind(this),
52
47
  sendMessage: this.sendMessage.bind(this),
53
48
  sendAttachment: this.sendAttachment.bind(this),
@@ -8,6 +8,10 @@ export default class SessionService extends ISessionRepository {
8
8
  this.sessionRepository = sessionRepository;
9
9
  }
10
10
 
11
+ async pickupSession(request) {
12
+ return this.sessionRepository.pickupSession(request);
13
+ }
14
+
11
15
  async updateAssignee(request) {
12
16
  return this.sessionRepository.updateAssignee(request);
13
17
  }
@@ -38,6 +42,7 @@ export default class SessionService extends ISessionRepository {
38
42
 
39
43
  toJSON() {
40
44
  return {
45
+ pickupSession: this.pickupSession.bind(this),
41
46
  updateAssignee: this.updateAssignee.bind(this),
42
47
  getSessions: this.getSessions.bind(this),
43
48
  getSession: this.getSession.bind(this),
@@ -1,5 +1,4 @@
1
1
  export { default as getMessagesRequest } from "./getMessagesRequest";
2
- export { default as getMessageRequest } from "./getMessageRequest";
3
2
  export { default as deleteMessageRequest } from "./deleteMessageRequest";
4
3
  export { default as getFullContentRequest } from "./getFullContentRequest";
5
4
  export { default as resendMessageRequest } from "./resendMessageRequest";
@@ -14,7 +14,6 @@ function initiateSessionRequest() {
14
14
  cannedMessageId: null,
15
15
  language: null,
16
16
  parameters: {},
17
- message: null,
18
17
  ...body
19
18
  }).build();
20
19
  }
@@ -7,6 +7,7 @@ function sendAttachmentRequest() {
7
7
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8
8
  return new RequestBuilder().withParams({
9
9
  sessionId: null,
10
+ messageId: null,
10
11
  ...params
11
12
  }).withBody({
12
13
  message: null,
@@ -10,8 +10,6 @@ function sendMessageRequest() {
10
10
  ...params
11
11
  }).withBody({
12
12
  message: null,
13
- replyToMessageId: null,
14
- meta: null,
15
13
  ...body
16
14
  }).build();
17
15
  }
@@ -4,4 +4,5 @@ export { default as getSessionRequest } from "./getSessionRequest";
4
4
  export { default as getSessionAttachmentsRequest } from "./getSessionAttachmentsRequest";
5
5
  export { default as getSessionLastMessagesRequest } from "./getSessionLastMessagesRequest";
6
6
  export { default as markSessionAsReadRequest } from "./markSessionAsReadRequest";
7
- export { default as updateSessionStatusRequest } from "./updateSessionStatusRequest";
7
+ export { default as updateSessionStatusRequest } from "./updateSessionStatusRequest";
8
+ export { default as pickupSessionRequest } from "./pickupSessionRequest";
@@ -2,15 +2,11 @@ import RequestBuilder from "../RequestBuilder";
2
2
 
3
3
  function markSessionAsReadRequest() {
4
4
  let {
5
- body = {},
6
- params = {}
5
+ body = {}
7
6
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8
7
  return new RequestBuilder().withBody({
9
8
  lastSeenMessageId: null,
10
9
  ...body
11
- }).withParams({
12
- sessionId: null,
13
- ...params
14
10
  }).build();
15
11
  }
16
12
 
@@ -0,0 +1,9 @@
1
+ import RequestBuilder from "../RequestBuilder";
2
+
3
+ function pickupSessionRequest() {
4
+ return new RequestBuilder().withParams({
5
+ sessionId: null
6
+ }).build();
7
+ }
8
+
9
+ export default pickupSessionRequest;
@@ -10,6 +10,7 @@ function updateSessionStatusRequest() {
10
10
  ...params
11
11
  }).withBody({
12
12
  status: null,
13
+ agentId: null,
13
14
  ...body
14
15
  }).build();
15
16
  }
@@ -21,14 +21,10 @@ export default class Actor {
21
21
  return type === ActorType.BOT;
22
22
  }
23
23
 
24
- static isEnduser(type) {
24
+ static isEndUser(type) {
25
25
  return type === ActorType.ENDUSER;
26
26
  }
27
27
 
28
- static isSystemMessage(type) {
29
- return type === ActorType.SYSTEM;
30
- }
31
-
32
28
  toJSON() {
33
29
  return { ...this.data
34
30
  };
@@ -1,6 +1,6 @@
1
1
  import { validateSchema } from "../../../core/utils";
2
- import { ActionSchema } from "../../schema";
3
2
  import { ActionType } from "../../enum";
3
+ import { ActionSchema } from "../../schema";
4
4
  export default class Action {
5
5
  constructor() {
6
6
  let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -12,8 +12,9 @@ export default class Action {
12
12
  };
13
13
  }
14
14
 
15
- static isTransferAction(action) {
16
- return action === ActionType.TRANSFER;
15
+ static isTransferAction() {
16
+ let action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
17
+ return action && action.type === ActionType.TRANSFER;
17
18
  }
18
19
 
19
20
  toJSON() {
@@ -1,5 +1,4 @@
1
1
  import { validateSchema } from "../../../core/utils";
2
- import { ExternalInfoAction } from "../../enum";
3
2
  import { ExternalInfoSchema } from "../../schema";
4
3
  export default class ExternalInfo {
5
4
  constructor() {
@@ -10,14 +9,6 @@ export default class ExternalInfo {
10
9
  };
11
10
  }
12
11
 
13
- static isGCConversationEnded(action) {
14
- return action === ExternalInfoAction.GC_CONVERSATION_ENDED;
15
- }
16
-
17
- static isZIAConversationEnded(action) {
18
- return action === ExternalInfoAction.ZIA_CONVERSATION_ENDED;
19
- }
20
-
21
12
  toJSON() {
22
13
  return { ...this.data
23
14
  };
@@ -14,16 +14,14 @@ export default class Info {
14
14
  };
15
15
  }
16
16
 
17
- static isChatTransfer(action) {
18
- return action === InfoAction.CHAT_TRANSFER;
17
+ static isAutoAssignMessage() {
18
+ let info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
19
+ return info && info.action === InfoAction.CHAT_AUTO_ASSIGN;
19
20
  }
20
21
 
21
- static isAutoAssign(action) {
22
- return action === InfoAction.CHAT_AUTO_ASSIGN;
23
- }
24
-
25
- static isEndSession(action) {
26
- return action === InfoAction.END_SESSION;
22
+ static isTransferMessage() {
23
+ let info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
24
+ return info && info.action === InfoAction.CHAT_TRANSFER;
27
25
  }
28
26
 
29
27
  toJSON() {
@@ -34,8 +34,7 @@ export default class Message {
34
34
  template: validatedData.template,
35
35
  type: validatedData.type,
36
36
  isRead: validatedData.isRead,
37
- article: validatedData.article,
38
- webUrl: validatedData.webUrl
37
+ article: validatedData.article
39
38
  };
40
39
  }
41
40
 
@@ -59,51 +58,16 @@ export default class Message {
59
58
  return type === MessageTypes.INFO;
60
59
  }
61
60
 
62
- static isExternalInfo(type) {
63
- return type === MessageTypes.EXTERNAL_INFO;
64
- }
65
-
66
61
  static isAttachment(type) {
67
62
  return type === MessageTypes.ATTACHMENT;
68
63
  }
69
64
 
70
- static isTemplate(type) {
71
- return type === MessageTypes.TEMPLATE;
72
- }
73
-
74
65
  static isActionMessage(type) {
75
66
  return type === MessageTypes.ACTION;
76
67
  }
77
68
 
78
- static isSystemMessage(message) {
79
- return !!message;
80
- }
81
-
82
- static isHapinessRating(systemMessageType) {
83
- return systemMessageType === MessageTypes.CX_HAPPINESS_SURVEY;
84
- }
85
-
86
- static isWelcomeMessage(systemMessageType) {
87
- return systemMessageType === MessageTypes.WELCOMEMSG;
88
- }
89
-
90
- static isWorkflowMessage(systemMessageType) {
91
- return systemMessageType === MessageTypes.WORKFLOW_MESSAGE;
92
- }
93
-
94
- static isWorkflowNotification(systemMessageType) {
95
- return systemMessageType === MessageTypes.WORKFLOW_NOTIFICATION;
96
- }
97
-
98
- static isFailed(status) {
99
- return status === MessageStatus.FAILED;
100
- }
101
-
102
- static getMetaValue() {
103
- let meta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
104
- let key = arguments.length > 1 ? arguments[1] : undefined;
105
- const item = meta.find(item => item.name === key);
106
- return item ? item.value : '';
69
+ static isAutoSent(systemMsgType) {
70
+ return !!systemMsgType;
107
71
  }
108
72
 
109
73
  toJSON() {
@@ -36,32 +36,16 @@ export default class Session {
36
36
  return sessionStatus === SessionStatus.BLOCKED;
37
37
  }
38
38
 
39
- static isOnProgress(sessionStatus) {
40
- return sessionStatus === SessionStatus.ON_PROGRESS;
41
- }
42
-
43
- static isHold(sessionStatus) {
44
- return sessionStatus === SessionStatus.ON_HOLD;
45
- }
46
-
47
- static isOpen(sessionStatus) {
48
- return sessionStatus === SessionStatus.OPEN;
49
- }
50
-
51
39
  static isInactiveChannel(replyStatus) {
52
40
  return replyStatus === SessionReplyStatus.CHANNEL_INACTIVE;
53
41
  }
54
42
 
55
- static isChannelDeleted(replyStatus) {
56
- return replyStatus === SessionReplyStatus.CHANNEL_DELETED;
57
- }
58
-
59
- static isReplyAccepted(replyStatus) {
60
- return replyStatus === SessionReplyStatus.ACCEPTED;
43
+ static isOpen(sessionStatus) {
44
+ return sessionStatus === SessionStatus.OPEN;
61
45
  }
62
46
 
63
- static isEndUserOffline(replyStatus) {
64
- return replyStatus === SessionReplyStatus.ENDUSER_OFFLINE;
47
+ static isCreated(sessionStatus) {
48
+ return sessionStatus === SessionStatus.CREATED;
65
49
  }
66
50
 
67
51
  static isAssignedToOtherService(replyStatus) {
@@ -1,7 +1,7 @@
1
1
  const ActorType = {
2
2
  AGENT: 'AGENT',
3
3
  BOT: 'BOT',
4
- ENDUSER: 'END_USER',
4
+ ENDUSER: 'ENDUSER',
5
5
  SYSTEM: 'SYSTEM'
6
6
  };
7
7
  export default ActorType;
@@ -1,5 +1,7 @@
1
1
  const AttachmentStatus = {
2
2
  VALID: 'VALID',
3
- INVALID: 'INVALID'
3
+ // NO I18N
4
+ INVALID: 'INVALID' // NO I18N
5
+
4
6
  };
5
7
  export default AttachmentStatus;
@@ -1,6 +1,6 @@
1
1
  const MessageDirection = {
2
- OUT: 'out',
3
- IN: 'in'
2
+ OUT: 'OUT',
3
+ IN: 'IN'
4
4
  }; // For im api need to changes this as out and in
5
5
 
6
6
  export default MessageDirection;
@@ -6,10 +6,6 @@ const MessageTypes = {
6
6
  LAYOUT: 'LAYOUT',
7
7
  EXTERNAL_INFO: 'EXTERNAL_INFO',
8
8
  TEMPLATE: 'TEMPLATE',
9
- ACTION: 'ACTION',
10
- WELCOMEMSG: 'WELCOMEMSG',
11
- WORKFLOW_MESSAGE: 'WORKFLOW_MESSAGE',
12
- WORKFLOW_NOTIFICATION: 'WORKFLOW_NOTIFICATION',
13
- CX_HAPPINESS_SURVEY: 'CX_HAPPINESS_SURVEY'
9
+ ACTION: 'ACTION'
14
10
  };
15
11
  export default MessageTypes;
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable no-unused-vars */
2
2
  import { ModuleNames } from "../../../../core/constants";
3
3
  import BaseAPI from "../../../../infrastructure/api/BaseAPI";
4
- import { getMessagesRequest, getMessageRequest, deleteMessageRequest, getFullContentRequest, resendMessageRequest, sendAttachmentRequest, sendMessageRequest, initiateSessionRequest, searchMessagesRequest } from "../../../dto";
4
+ import { getMessagesRequest, deleteMessageRequest, getFullContentRequest, resendMessageRequest, sendAttachmentRequest, sendMessageRequest, initiateSessionRequest, searchMessagesRequest } from "../../../dto";
5
5
  export default class IMessageRepository extends BaseAPI {
6
6
  constructor() {
7
7
  super({
@@ -14,11 +14,6 @@ export default class IMessageRepository extends BaseAPI {
14
14
  throw new Error('Method not implemented.');
15
15
  }
16
16
 
17
- getMessage() {
18
- let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getMessageRequest();
19
- throw new Error('Method not implemented.');
20
- }
21
-
22
17
  getFullContent() {
23
18
  let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getFullContentRequest();
24
19
  throw new Error('Method not implemented.');
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable no-unused-vars */
2
2
  import { ModuleNames } from "../../../../core/constants";
3
3
  import BaseAPI from "../../../../infrastructure/api/BaseAPI";
4
- import { updateSessionAssigneeRequest, getSessionsRequest, getSessionRequest, getSessionAttachmentsRequest, getSessionLastMessagesRequest, markSessionAsReadRequest, updateSessionStatusRequest } from "../../../dto";
4
+ import { updateSessionAssigneeRequest, getSessionsRequest, getSessionRequest, getSessionAttachmentsRequest, getSessionLastMessagesRequest, markSessionAsReadRequest, updateSessionStatusRequest, pickupSessionRequest } from "../../../dto";
5
5
  export default class ISessionRepository extends BaseAPI {
6
6
  constructor() {
7
7
  super({
@@ -9,6 +9,11 @@ export default class ISessionRepository extends BaseAPI {
9
9
  });
10
10
  }
11
11
 
12
+ pickupSession() {
13
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : pickupSessionRequest();
14
+ throw new Error('Method not implemented.');
15
+ }
16
+
12
17
  updateAssignee() {
13
18
  let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : updateSessionAssigneeRequest();
14
19
  throw new Error('Method not implemented.');
@@ -107,10 +107,6 @@ const MessageSchema = {
107
107
  article: {
108
108
  type: 'object',
109
109
  required: false
110
- },
111
- webUrl: {
112
- type: 'string',
113
- required: false
114
110
  }
115
111
  };
116
112
  export default MessageSchema;
@@ -2,7 +2,6 @@ import { ResponseTypes } from "../../core/constants";
2
2
  import { ResponseUtils } from "../../core/utils";
3
3
  import configRegistry from "../config/configRegistry";
4
4
  import { getRegistryConfig } from "./registry";
5
- import UrlBuilder from "./UrlBuilder";
6
5
  export default class BaseAPI {
7
6
  constructor() {
8
7
  let {
@@ -10,30 +9,78 @@ export default class BaseAPI {
10
9
  configProvider = configRegistry,
11
10
  registryProvider = {
12
11
  getRegistryConfig
13
- },
14
- urlBuilder = new UrlBuilder()
12
+ }
15
13
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
16
14
  this.configProvider = configProvider;
17
15
  this.registryProvider = registryProvider;
18
16
  this.httpClient = this.configProvider.getHttpClient();
19
17
  this.baseURL = this.configProvider.getBaseURL();
20
18
  this.module = module;
21
- this.urlBuilder = urlBuilder;
22
19
  }
23
20
 
24
- async request(_ref) {
21
+ replacePathParams(url, params) {
22
+ let _url = url;
23
+ Object.entries(params).forEach(_ref => {
24
+ let [key, value] = _ref;
25
+ _url = url.replace(`:${key}`, value);
26
+ });
27
+ return _url;
28
+ }
29
+
30
+ buildUrl(_ref2) {
31
+ let {
32
+ url,
33
+ params,
34
+ query
35
+ } = _ref2;
36
+
37
+ const _params = params || {};
38
+
39
+ const _query = query || {};
40
+
41
+ let _url = this.replacePathParams(url, _params);
42
+
43
+ if (this.baseURL) {
44
+ _url = `${this.baseURL}${_url}`;
45
+ }
46
+
47
+ const queryString = this.buildQuery(_query);
48
+
49
+ if (queryString) {
50
+ return `${_url}?${queryString}`;
51
+ }
52
+
53
+ return _url;
54
+ }
55
+
56
+ buildQuery(query) {
57
+ const filteredQuery = Object.entries(query).filter(_ref3 => {
58
+ let [, value] = _ref3;
59
+ return value !== undefined && value !== null && value !== '';
60
+ }).reduce((acc, _ref4) => {
61
+ let [key, value] = _ref4;
62
+ acc[key] = value;
63
+ return acc;
64
+ }, {});
65
+ return Object.entries(filteredQuery).map(_ref5 => {
66
+ let [key, value] = _ref5;
67
+ return `${key}=${value}`;
68
+ }).join('&');
69
+ }
70
+
71
+ async request(_ref6) {
25
72
  let {
26
73
  request,
27
74
  operation,
28
75
  header
29
- } = _ref;
76
+ } = _ref6;
30
77
  const config = this.registryProvider.getRegistryConfig(this.module, operation);
31
78
 
32
79
  if (!config) {
33
80
  throw new Error(`Operation "${operation}" not found in registry for module "${this.module}"`);
34
81
  }
35
82
 
36
- const url = this.urlBuilder.buildUrl({
83
+ const url = this.buildUrl({
37
84
  url: config.endpoint,
38
85
  params: request.params || {},
39
86
  query: request.query || {}
@@ -74,7 +121,7 @@ export default class BaseAPI {
74
121
  Object.prototype.hasOwnProperty.call(customPrototype, methodName);
75
122
  }
76
123
 
77
- async executeAPICall(_ref2) {
124
+ async executeAPICall(_ref7) {
78
125
  let {
79
126
  operation,
80
127
  request,
@@ -82,7 +129,7 @@ export default class BaseAPI {
82
129
  customAPI,
83
130
  adapter,
84
131
  responseType = ResponseTypes.SINGLE
85
- } = _ref2;
132
+ } = _ref7;
86
133
  const response = await apiProxy[operation](request);
87
134
  const isOverridden = this.isMethodOverridden(customAPI, operation);
88
135
 
@@ -1,4 +1,4 @@
1
- import { getMessagesRequest, deleteMessageRequest, getFullContentRequest, resendMessageRequest, sendAttachmentRequest, sendMessageRequest, initiateSessionRequest, searchMessagesRequest, getMessageRequest } from "../../../domain/dto";
1
+ import { getMessagesRequest, deleteMessageRequest, getFullContentRequest, resendMessageRequest, sendAttachmentRequest, sendMessageRequest, initiateSessionRequest, searchMessagesRequest } from "../../../domain/dto";
2
2
  import { IMessageRepository } from "../../../domain/interfaces/repositories";
3
3
  export default class MessageAPI extends IMessageRepository {
4
4
  async getMessages() {
@@ -11,16 +11,6 @@ export default class MessageAPI extends IMessageRepository {
11
11
  return httpRequest;
12
12
  }
13
13
 
14
- async getMessage() {
15
- let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getMessageRequest();
16
- const operation = 'getMessage';
17
- const httpRequest = await this.request({
18
- operation,
19
- request
20
- });
21
- return httpRequest;
22
- }
23
-
24
14
  async getFullContent() {
25
15
  let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getFullContentRequest();
26
16
  const operation = 'getFullContent';
@@ -8,7 +8,8 @@ function getBots() {
8
8
  }
9
9
 
10
10
  function getBot() {
11
- return createAPIRegistry(constructBotEndPoint('/:botId'), HTTP_METHODS.GET, getBotRequest());
11
+ return createAPIRegistry(constructBotEndPoint('/:botId'), // NO I18N
12
+ HTTP_METHODS.GET, getBotRequest());
12
13
  }
13
14
 
14
15
  export default {
@@ -1,5 +1,5 @@
1
1
  import { HTTP_METHODS } from "../../../../core/constants";
2
- import { deleteMessageRequest, getFullContentRequest, getMessagesRequest, initiateSessionRequest, resendMessageRequest, sendAttachmentRequest, sendMessageRequest, searchMessagesRequest, getMessageRequest } from "../../../../domain/dto";
2
+ import { deleteMessageRequest, getFullContentRequest, getMessagesRequest, initiateSessionRequest, resendMessageRequest, sendAttachmentRequest, sendMessageRequest, searchMessagesRequest } from "../../../../domain/dto";
3
3
  import constructChannelEndPoint from "../channels/constructChannelEndPoint";
4
4
  import constructMessageEndPoint from "./constructMessageEndPoint";
5
5
  import createAPIRegistry from "../createAPIRegistry";
@@ -17,10 +17,6 @@ function getMessages() {
17
17
  return createAPIRegistry(constructMessageEndPoint(MESSAGES_URL), HTTP_METHODS.GET, getMessagesRequest());
18
18
  }
19
19
 
20
- function getMessage() {
21
- return createAPIRegistry(constructMessageEndPoint(SINGLE_MESSAGE_URL), HTTP_METHODS.GET, getMessageRequest());
22
- }
23
-
24
20
  function getFullContent() {
25
21
  return createAPIRegistry(constructMessageEndPoint(FULL_CONTENT_URL), HTTP_METHODS.GET, getFullContentRequest());
26
22
  }
@@ -51,7 +47,6 @@ function searchMessages() {
51
47
 
52
48
  export default {
53
49
  getMessages,
54
- getMessage,
55
50
  getFullContent,
56
51
  sendMessage,
57
52
  sendAttachment,
@@ -1,11 +1,16 @@
1
1
  import { HTTP_METHODS } from "../../../../core/constants";
2
- import { updateSessionAssigneeRequest, getSessionAttachmentsRequest, getSessionLastMessagesRequest, getSessionRequest, getSessionsRequest, markSessionAsReadRequest, updateSessionStatusRequest } from "../../../../domain/dto";
2
+ import { updateSessionAssigneeRequest, getSessionAttachmentsRequest, getSessionLastMessagesRequest, getSessionRequest, getSessionsRequest, markSessionAsReadRequest, updateSessionStatusRequest, pickupSessionRequest } from "../../../../domain/dto";
3
3
  import createAPIRegistry from "../createAPIRegistry";
4
4
  import constructSessionEndPoint from "./constructSessionEndPoint";
5
5
  const SINGLE_SESSION_URL = '/:sessionId';
6
6
  const SESSION_ATTACHMENTS_URL = `${SINGLE_SESSION_URL}/attachments`;
7
7
  const SESSION_LAST_MESSAGE = '/lastMessages';
8
8
  const MARK_AS_READ = `${SINGLE_SESSION_URL}/markAsRead`;
9
+ const PICKUP_SESSION = `${SINGLE_SESSION_URL}/pickup`;
10
+
11
+ function pickupSession() {
12
+ return createAPIRegistry(constructSessionEndPoint(PICKUP_SESSION), HTTP_METHODS.POST, pickupSessionRequest());
13
+ }
9
14
 
10
15
  function updateAssignee() {
11
16
  return createAPIRegistry(constructSessionEndPoint(SINGLE_SESSION_URL), HTTP_METHODS.PATCH, updateSessionAssigneeRequest());
@@ -42,5 +47,6 @@ export default {
42
47
  getSessionAttachments,
43
48
  getSessionLastMessages,
44
49
  markSessionAsRead,
45
- updateSessionStatus
50
+ updateSessionStatus,
51
+ pickupSession
46
52
  };
@@ -1,6 +1,16 @@
1
- import { updateSessionAssigneeRequest, getSessionsRequest, getSessionRequest, getSessionAttachmentsRequest, getSessionLastMessagesRequest, markSessionAsReadRequest, updateSessionStatusRequest } from "../../../domain/dto";
1
+ import { updateSessionAssigneeRequest, getSessionsRequest, getSessionRequest, getSessionAttachmentsRequest, getSessionLastMessagesRequest, markSessionAsReadRequest, updateSessionStatusRequest, pickupSessionRequest } from "../../../domain/dto";
2
2
  import { ISessionRepository } from "../../../domain/interfaces/repositories";
3
3
  export default class SessionAPI extends ISessionRepository {
4
+ async pickupSession() {
5
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : pickupSessionRequest();
6
+ const operation = 'pickupSession';
7
+ const httpRequest = await this.request({
8
+ request,
9
+ operation
10
+ });
11
+ return httpRequest;
12
+ }
13
+
4
14
  async updateAssignee() {
5
15
  let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : updateSessionAssigneeRequest();
6
16
  const operation = 'updateAssignee';
@@ -43,13 +43,6 @@ export default class MessageRepository extends IMessageRepository {
43
43
  });
44
44
  }
45
45
 
46
- async getMessage(request) {
47
- return this.invokeAPI({
48
- operation: 'getMessage',
49
- request
50
- });
51
- }
52
-
53
46
  async getFullContent(request) {
54
47
  return this.invokeAPI({
55
48
  operation: 'getFullContent',
@@ -105,7 +98,6 @@ export default class MessageRepository extends IMessageRepository {
105
98
  toJSON() {
106
99
  return {
107
100
  getMessages: this.getMessages.bind(this),
108
- getMessage: this.getMessage.bind(this),
109
101
  getFullContent: this.getFullContent.bind(this),
110
102
  sendMessage: this.sendMessage.bind(this),
111
103
  sendAttachment: this.sendAttachment.bind(this),
@@ -36,6 +36,13 @@ export default class SessionRepository extends ISessionRepository {
36
36
  });
37
37
  }
38
38
 
39
+ async pickupSession(request) {
40
+ return this.invokeAPI({
41
+ operation: 'pickupSession',
42
+ request
43
+ });
44
+ }
45
+
39
46
  async updateAssignee(request) {
40
47
  return this.invokeAPI({
41
48
  operation: 'updateAssignee',
@@ -92,6 +99,7 @@ export default class SessionRepository extends ISessionRepository {
92
99
 
93
100
  toJSON() {
94
101
  return {
102
+ pickupSession: this.pickupSession.bind(this),
95
103
  updateAssignee: this.updateAssignee.bind(this),
96
104
  getSessions: this.getSessions.bind(this),
97
105
  getSession: this.getSession.bind(this),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohoim/client-sdk",
3
- "version": "1.0.0-poc83",
3
+ "version": "1.0.0-poc84",
4
4
  "description": "To have the client sdk for the IM",
5
5
  "main": "es/index.js",
6
6
  "module": "es/index.js",
@@ -1,14 +0,0 @@
1
- import RequestBuilder from "../RequestBuilder";
2
-
3
- function getMessageRequest() {
4
- let {
5
- params = {}
6
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7
- return new RequestBuilder().withParams({
8
- sessionId: null,
9
- messageId: null,
10
- ...params
11
- }).build();
12
- }
13
-
14
- export default getMessageRequest;
@@ -1,53 +0,0 @@
1
- export default class UrlBuilder {
2
- constructor(baseURL) {
3
- this.baseURL = baseURL;
4
- }
5
-
6
- replacePathParams(url, params) {
7
- let processedUrl = url;
8
- Object.entries(params).forEach(_ref => {
9
- let [key, value] = _ref;
10
- processedUrl = processedUrl.replace(`:${key}`, value);
11
- });
12
- return processedUrl;
13
- }
14
-
15
- buildUrl(_ref2) {
16
- let {
17
- url,
18
- params,
19
- query
20
- } = _ref2;
21
- const paramsObj = params || {};
22
- const queryObj = query || {};
23
- let processedUrl = this.replacePathParams(url, paramsObj);
24
-
25
- if (this.baseURL) {
26
- processedUrl = `${this.baseURL}${processedUrl}`;
27
- }
28
-
29
- const queryString = this.buildQuery(queryObj);
30
-
31
- if (queryString) {
32
- return `${processedUrl}?${queryString}`;
33
- }
34
-
35
- return processedUrl;
36
- }
37
-
38
- buildQuery(query) {
39
- const filteredQuery = Object.entries(query).filter(_ref3 => {
40
- let [, value] = _ref3;
41
- return value !== undefined && value !== null && value !== '';
42
- }).reduce((acc, _ref4) => {
43
- let [key, value] = _ref4;
44
- acc[key] = value;
45
- return acc;
46
- }, {});
47
- return Object.entries(filteredQuery).map(_ref5 => {
48
- let [key, value] = _ref5;
49
- return `${key}=${value}`;
50
- }).join('&');
51
- }
52
-
53
- }