@aslaluroba/help-center-react 3.2.11 → 3.2.13

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.
@@ -13,6 +13,7 @@ type HelpPopupProps = {
13
13
  onEnsureSession: () => Promise<string>;
14
14
  onEndChat: (options?: {
15
15
  fromChatScreen?: boolean;
16
+ sessionClosedByServer?: boolean;
16
17
  }) => void | Promise<void>;
17
18
  messages: Message[];
18
19
  needsAgent: boolean;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "main": "dist/index.js",
4
4
  "module": "dist/index.esm.js",
5
5
  "types": "dist/index.d.ts",
6
- "version": "3.2.11",
6
+ "version": "3.2.13",
7
7
  "description": "BabylAI Help Center Widget for React and Next.js",
8
8
  "private": false,
9
9
  "exports": {
@@ -110,20 +110,24 @@ const HelpCenterContent = ({
110
110
  };
111
111
 
112
112
  const handleEndChat = useCallback(
113
- async (options?: { fromChatScreen?: boolean }) => {
113
+ async (options?: { fromChatScreen?: boolean; sessionClosedByServer?: boolean }) => {
114
114
  if (!sessionId || !selectedOption) return;
115
115
 
116
116
  const fromChatScreen = options?.fromChatScreen === true;
117
+ // When Ably sends end_session (e.g. admin closed from dashboard), skip close API call
118
+ const sessionClosedByServer = options?.sessionClosedByServer === true;
117
119
 
118
120
  try {
119
121
  await ClientAblyService.stopConnection();
120
122
  setIsAblyConnected(false);
121
123
  setAssistantStatus('idle');
122
124
 
123
- const response = await apiRequest(`Client/ClientChatSession/${sessionId}/close`, 'POST', null, {
124
- language: language,
125
- });
126
- if (!response.ok) throw new Error('Failed to close chat session');
125
+ if (!sessionClosedByServer) {
126
+ const response = await apiRequest(`Client/ClientChatSession/${sessionId}/close`, 'POST', null, {
127
+ language: language,
128
+ });
129
+ if (!response.ok) throw new Error('Failed to close chat session');
130
+ }
127
131
 
128
132
  setReviewSessionId(sessionId);
129
133
  setSessionId(null);
@@ -131,7 +135,6 @@ const HelpCenterContent = ({
131
135
  if (fromChatScreen) {
132
136
  setInChatReviewSessionId(sessionId);
133
137
  setIsChatClosed(true);
134
- // Keep selectedOption and messages; do not open popup
135
138
  } else {
136
139
  setSelectedOption(null);
137
140
  setMessages([]);
@@ -341,9 +344,9 @@ const HelpCenterContent = ({
341
344
  setNeedsAgent(true);
342
345
  });
343
346
 
344
- // "end_session" → close session and show in-chat review (user stays in chat)
347
+ // "end_session" → session was closed by server (e.g. admin from dashboard); update local state only, do not call close API
345
348
  actionHandler.registerHandler('end_session', () => {
346
- void handleEndChat({ fromChatScreen: true });
349
+ void handleEndChat({ fromChatScreen: true, sessionClosedByServer: true });
347
350
  });
348
351
 
349
352
  return () => {
@@ -375,7 +378,7 @@ const HelpCenterContent = ({
375
378
  const themeStyles = getPrimaryColorStyles(primaryColor);
376
379
 
377
380
  return (
378
- <div className='babylai-theme-root babylai:mb-4' style={themeStyles} dir="auto">
381
+ <div className='babylai-theme-root babylai:mb-4' style={themeStyles}>
379
382
  {showArrowAnimation && !isOpen && !isClosing && (
380
383
  <FloatingMessage onClose={handleCloseArrowAnimation} message={messageLabel || t('homeSdk.needAssistance')} />
381
384
  )}
@@ -25,7 +25,7 @@ type HelpPopupProps = {
25
25
  onStartChat: (option: Option) => void;
26
26
  onSendMessage: (message: string, attachmentIds: string[]) => void;
27
27
  onEnsureSession: () => Promise<string>;
28
- onEndChat: (options?: { fromChatScreen?: boolean }) => void | Promise<void>;
28
+ onEndChat: (options?: { fromChatScreen?: boolean; sessionClosedByServer?: boolean }) => void | Promise<void>;
29
29
  messages: Message[];
30
30
  needsAgent: boolean;
31
31
  assistantStatus: string;