@escapenavigator/utils 1.10.164 → 1.10.166

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -32,3 +32,4 @@ export * from './user-session-permissions';
32
32
  export * from './utm-touchpoints';
33
33
  export * from './validate-by-dto';
34
34
  export * from './validate-promocode';
35
+ export * from './widget-chat-attention';
package/dist/index.js CHANGED
@@ -48,3 +48,4 @@ __exportStar(require("./user-session-permissions"), exports);
48
48
  __exportStar(require("./utm-touchpoints"), exports);
49
49
  __exportStar(require("./validate-by-dto"), exports);
50
50
  __exportStar(require("./validate-promocode"), exports);
51
+ __exportStar(require("./widget-chat-attention"), exports);
@@ -0,0 +1,24 @@
1
+ import { WidgetChatConversationStatusEnum } from '@escapenavigator/types/dist/widget-chat/enum/widget-chat-conversation-status.enum';
2
+ type ConversationAttentionInput = {
3
+ status?: WidgetChatConversationStatusEnum | null;
4
+ unreadCount: number;
5
+ aiEnabled: boolean;
6
+ aiPaused: boolean;
7
+ };
8
+ /**
9
+ * Беседа «ждёт человека» (для бейджа в меню и подсветки в списке) только когда:
10
+ * - есть непрочитанные сообщения посетителя;
11
+ * - беседа не помечена решённой;
12
+ * - ИИ НЕ ведёт диалог сам — то есть он передал оператору (aiPaused) или ИИ
13
+ * вообще выключен для этого диалога.
14
+ *
15
+ * Пока ИИ общается (aiEnabled && !aiPaused), такие диалоги внимание оператора
16
+ * не требуют, поэтому в счётчик/подсветку не попадают.
17
+ */
18
+ export declare const conversationAwaitsHuman: (conversation: ConversationAttentionInput) => boolean;
19
+ /**
20
+ * Сумма непрочитанных только по диалогам, которые реально ждут оператора.
21
+ * Используется для бейджа в меню (app) и в таб-баре (mobile).
22
+ */
23
+ export declare const countAwaitingHuman: (conversations: ConversationAttentionInput[]) => number;
24
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.countAwaitingHuman = exports.conversationAwaitsHuman = void 0;
4
+ const widget_chat_conversation_status_enum_1 = require("@escapenavigator/types/dist/widget-chat/enum/widget-chat-conversation-status.enum");
5
+ /**
6
+ * Беседа «ждёт человека» (для бейджа в меню и подсветки в списке) только когда:
7
+ * - есть непрочитанные сообщения посетителя;
8
+ * - беседа не помечена решённой;
9
+ * - ИИ НЕ ведёт диалог сам — то есть он передал оператору (aiPaused) или ИИ
10
+ * вообще выключен для этого диалога.
11
+ *
12
+ * Пока ИИ общается (aiEnabled && !aiPaused), такие диалоги внимание оператора
13
+ * не требуют, поэтому в счётчик/подсветку не попадают.
14
+ */
15
+ const conversationAwaitsHuman = (conversation) => {
16
+ if (conversation.status === widget_chat_conversation_status_enum_1.WidgetChatConversationStatusEnum.RESOLVED)
17
+ return false;
18
+ if (!conversation.unreadCount)
19
+ return false;
20
+ return conversation.aiPaused || !conversation.aiEnabled;
21
+ };
22
+ exports.conversationAwaitsHuman = conversationAwaitsHuman;
23
+ /**
24
+ * Сумма непрочитанных только по диалогам, которые реально ждут оператора.
25
+ * Используется для бейджа в меню (app) и в таб-баре (mobile).
26
+ */
27
+ const countAwaitingHuman = (conversations) => conversations.reduce((sum, conversation) => sum + ((0, exports.conversationAwaitsHuman)(conversation) ? conversation.unreadCount : 0), 0);
28
+ exports.countAwaitingHuman = countAwaitingHuman;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@escapenavigator/utils",
3
- "version": "1.10.164",
3
+ "version": "1.10.166",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -14,7 +14,7 @@
14
14
  "test": "jest"
15
15
  },
16
16
  "dependencies": {
17
- "@escapenavigator/types": "^1.10.157",
17
+ "@escapenavigator/types": "^1.10.159",
18
18
  "axios": "^0.21.4",
19
19
  "class-transformer": "^0.5.1",
20
20
  "class-validator": "^0.13.2",
@@ -28,5 +28,5 @@
28
28
  "ts-jest": "^29.1.1",
29
29
  "typescript": "^5.6"
30
30
  },
31
- "gitHead": "bf6187b65676d5fe31a54d5a3c8d518ea74286d7"
31
+ "gitHead": "ec89e018a85f2301968b5862bc3c45182eb6c58c"
32
32
  }