@memori.ai/memori-react 8.11.0 → 8.13.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 (243) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +41 -14
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +2 -2
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  5. package/dist/components/Auth/Auth.js +36 -8
  6. package/dist/components/Auth/Auth.js.map +1 -1
  7. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +2 -2
  8. package/dist/components/Chat/Chat.css +37 -3
  9. package/dist/components/Chat/Chat.js +61 -23
  10. package/dist/components/Chat/Chat.js.map +1 -1
  11. package/dist/components/ChatBubble/ChatBubble.css +87 -15
  12. package/dist/components/ChatBubble/ChatBubble.js +129 -19
  13. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  14. package/dist/components/ChatHistoryDrawer/ChatHistory.css +5 -1
  15. package/dist/components/ChatInputs/ChatInputs.css +293 -17
  16. package/dist/components/ChatInputs/ChatInputs.d.ts +1 -0
  17. package/dist/components/ChatInputs/ChatInputs.js +48 -27
  18. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  19. package/dist/components/ChatTextArea/ChatTextArea.css +75 -31
  20. package/dist/components/ChatTextArea/ChatTextArea.js +47 -18
  21. package/dist/components/ChatTextArea/ChatTextArea.js.map +1 -1
  22. package/dist/components/DateSelector/DateSelector.css +125 -104
  23. package/dist/components/DateSelector/DateSelector.d.ts +1 -1
  24. package/dist/components/DateSelector/DateSelector.js +110 -52
  25. package/dist/components/DateSelector/DateSelector.js.map +1 -1
  26. package/dist/components/FilePreview/FilePreview.css +225 -146
  27. package/dist/components/FilePreview/FilePreview.d.ts +1 -2
  28. package/dist/components/FilePreview/FilePreview.js +20 -6
  29. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  30. package/dist/components/Header/Header.css +2 -2
  31. package/dist/components/Header/Header.js +1 -1
  32. package/dist/components/Header/Header.js.map +1 -1
  33. package/dist/components/LoginDrawer/LoginDrawer.css +37 -5
  34. package/dist/components/LoginDrawer/LoginDrawer.d.ts +1 -2
  35. package/dist/components/LoginDrawer/LoginDrawer.js +2 -9
  36. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  37. package/dist/components/MediaWidget/MediaItemWidget.js +2 -1
  38. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  39. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  40. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  41. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +1 -1
  42. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  43. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js +3 -0
  44. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js.map +1 -1
  45. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -2
  46. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  47. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +16 -7
  48. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +6 -4
  49. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  50. package/dist/components/MemoriWidget/MemoriWidget.css +11 -2
  51. package/dist/components/MemoriWidget/MemoriWidget.js +105 -25
  52. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  53. package/dist/components/MicrophoneButton/MicrophoneButton.css +2 -2
  54. package/dist/components/StartPanel/StartPanel.css +8 -0
  55. package/dist/components/UploadButton/UploadButton.css +20 -17
  56. package/dist/components/UploadButton/UploadButton.js +218 -87
  57. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  58. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +14 -4
  59. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  60. package/dist/components/UploadButton/UploadImages/UploadImages.js +143 -16
  61. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  62. package/dist/components/layouts/chat.css +1 -1
  63. package/dist/components/ui/Drawer.css +8 -0
  64. package/dist/components/ui/Drawer.d.ts +2 -0
  65. package/dist/components/ui/Drawer.js +2 -2
  66. package/dist/components/ui/Drawer.js.map +1 -1
  67. package/dist/components/ui/Tooltip.css +49 -1
  68. package/dist/components/ui/Tooltip.d.ts +1 -1
  69. package/dist/helpers/constants.d.ts +1 -0
  70. package/dist/helpers/constants.js +2 -1
  71. package/dist/helpers/constants.js.map +1 -1
  72. package/dist/helpers/imageCompression.d.ts +7 -0
  73. package/dist/helpers/imageCompression.js +123 -0
  74. package/dist/helpers/imageCompression.js.map +1 -0
  75. package/dist/locales/de.json +13 -5
  76. package/dist/locales/en.json +17 -6
  77. package/dist/locales/es.json +13 -5
  78. package/dist/locales/fr.json +12 -5
  79. package/dist/locales/it.json +16 -6
  80. package/dist/styles.css +4 -4
  81. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +41 -14
  82. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +2 -2
  83. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  84. package/esm/components/Auth/Auth.js +36 -8
  85. package/esm/components/Auth/Auth.js.map +1 -1
  86. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +2 -2
  87. package/esm/components/Chat/Chat.css +37 -3
  88. package/esm/components/Chat/Chat.js +61 -23
  89. package/esm/components/Chat/Chat.js.map +1 -1
  90. package/esm/components/ChatBubble/ChatBubble.css +87 -15
  91. package/esm/components/ChatBubble/ChatBubble.js +130 -20
  92. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  93. package/esm/components/ChatHistoryDrawer/ChatHistory.css +5 -1
  94. package/esm/components/ChatInputs/ChatInputs.css +293 -17
  95. package/esm/components/ChatInputs/ChatInputs.d.ts +1 -0
  96. package/esm/components/ChatInputs/ChatInputs.js +49 -28
  97. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  98. package/esm/components/ChatTextArea/ChatTextArea.css +75 -31
  99. package/esm/components/ChatTextArea/ChatTextArea.js +49 -20
  100. package/esm/components/ChatTextArea/ChatTextArea.js.map +1 -1
  101. package/esm/components/DateSelector/DateSelector.css +125 -104
  102. package/esm/components/DateSelector/DateSelector.d.ts +1 -1
  103. package/esm/components/DateSelector/DateSelector.js +111 -52
  104. package/esm/components/DateSelector/DateSelector.js.map +1 -1
  105. package/esm/components/FilePreview/FilePreview.css +225 -146
  106. package/esm/components/FilePreview/FilePreview.d.ts +1 -2
  107. package/esm/components/FilePreview/FilePreview.js +21 -7
  108. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  109. package/esm/components/Header/Header.css +2 -2
  110. package/esm/components/Header/Header.js +1 -1
  111. package/esm/components/Header/Header.js.map +1 -1
  112. package/esm/components/LoginDrawer/LoginDrawer.css +37 -5
  113. package/esm/components/LoginDrawer/LoginDrawer.d.ts +1 -2
  114. package/esm/components/LoginDrawer/LoginDrawer.js +2 -9
  115. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  116. package/esm/components/MediaWidget/MediaItemWidget.js +2 -1
  117. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  118. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  119. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  120. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +1 -1
  121. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  122. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js +3 -0
  123. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.js.map +1 -1
  124. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -2
  125. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  126. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +16 -7
  127. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +6 -4
  128. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  129. package/esm/components/MemoriWidget/MemoriWidget.css +11 -2
  130. package/esm/components/MemoriWidget/MemoriWidget.js +105 -25
  131. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  132. package/esm/components/MicrophoneButton/MicrophoneButton.css +2 -2
  133. package/esm/components/StartPanel/StartPanel.css +8 -0
  134. package/esm/components/UploadButton/UploadButton.css +20 -17
  135. package/esm/components/UploadButton/UploadButton.js +219 -88
  136. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  137. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +14 -4
  138. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  139. package/esm/components/UploadButton/UploadImages/UploadImages.js +143 -16
  140. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  141. package/esm/components/layouts/chat.css +1 -1
  142. package/esm/components/ui/Drawer.css +8 -0
  143. package/esm/components/ui/Drawer.d.ts +2 -0
  144. package/esm/components/ui/Drawer.js +2 -2
  145. package/esm/components/ui/Drawer.js.map +1 -1
  146. package/esm/components/ui/Tooltip.css +49 -1
  147. package/esm/components/ui/Tooltip.d.ts +1 -1
  148. package/esm/helpers/constants.d.ts +1 -0
  149. package/esm/helpers/constants.js +1 -0
  150. package/esm/helpers/constants.js.map +1 -1
  151. package/esm/helpers/imageCompression.d.ts +7 -0
  152. package/esm/helpers/imageCompression.js +119 -0
  153. package/esm/helpers/imageCompression.js.map +1 -0
  154. package/esm/locales/de.json +13 -5
  155. package/esm/locales/en.json +17 -6
  156. package/esm/locales/es.json +13 -5
  157. package/esm/locales/fr.json +12 -5
  158. package/esm/locales/it.json +16 -6
  159. package/esm/styles.css +4 -4
  160. package/package.json +2 -2
  161. package/src/components/AgeVerificationModal/AgeVerificationModal.css +41 -14
  162. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +3 -1
  163. package/src/components/Auth/Auth.tsx +55 -11
  164. package/src/components/Avatar/Avatar.stories.tsx +3 -0
  165. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +2 -2
  166. package/src/components/Chat/Chat.css +37 -3
  167. package/src/components/Chat/Chat.stories.tsx +16 -2
  168. package/src/components/Chat/Chat.tsx +90 -21
  169. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +1752 -812
  170. package/src/components/ChatBubble/ChatBubble.css +87 -15
  171. package/src/components/ChatBubble/ChatBubble.stories.tsx +16 -2
  172. package/src/components/ChatBubble/ChatBubble.test.tsx +17 -0
  173. package/src/components/ChatBubble/ChatBubble.tsx +237 -33
  174. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +304 -8
  175. package/src/components/ChatHistoryDrawer/ChatHistory.css +5 -1
  176. package/src/components/ChatInputs/ChatInputs.css +293 -17
  177. package/src/components/ChatInputs/ChatInputs.tsx +156 -86
  178. package/src/components/ChatInputs/__snapshots__/ChatInputs.test.tsx.snap +430 -424
  179. package/src/components/ChatTextArea/ChatTextArea.css +75 -31
  180. package/src/components/ChatTextArea/ChatTextArea.test.tsx +1 -16
  181. package/src/components/ChatTextArea/ChatTextArea.tsx +51 -22
  182. package/src/components/ChatTextArea/__snapshots__/ChatTextArea.test.tsx.snap +9 -72
  183. package/src/components/DateSelector/DateSelector.css +125 -104
  184. package/src/components/DateSelector/DateSelector.stories.tsx +1 -1
  185. package/src/components/DateSelector/DateSelector.test.tsx +137 -23
  186. package/src/components/DateSelector/DateSelector.tsx +203 -177
  187. package/src/components/FilePreview/FilePreview.css +225 -146
  188. package/src/components/FilePreview/FilePreview.tsx +49 -36
  189. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +2 -2
  190. package/src/components/Header/Header.css +2 -2
  191. package/src/components/Header/Header.stories.tsx +5 -1
  192. package/src/components/Header/Header.tsx +1 -1
  193. package/src/components/Header/__snapshots__/Header.test.tsx.snap +1 -1
  194. package/src/components/LoginDrawer/LoginDrawer.css +37 -5
  195. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +0 -1
  196. package/src/components/LoginDrawer/LoginDrawer.test.tsx +0 -1
  197. package/src/components/LoginDrawer/LoginDrawer.tsx +0 -19
  198. package/src/components/MediaWidget/MediaItemWidget.tsx +2 -1
  199. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +996 -204
  200. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +2 -2
  201. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +1 -1
  202. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.tsx +3 -0
  203. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +56 -54
  204. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +16 -7
  205. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +12 -3
  206. package/src/components/MemoriWidget/MemoriWidget.css +11 -2
  207. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +6 -3
  208. package/src/components/MemoriWidget/MemoriWidget.tsx +173 -49
  209. package/src/components/MicrophoneButton/MicrophoneButton.css +2 -2
  210. package/src/components/StartPanel/StartPanel.css +8 -0
  211. package/src/components/UploadButton/UploadButton.css +20 -17
  212. package/src/components/UploadButton/UploadButton.stories.tsx +247 -35
  213. package/src/components/UploadButton/UploadButton.tsx +280 -173
  214. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +19 -4
  215. package/src/components/UploadButton/UploadImages/UploadImages.tsx +196 -35
  216. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +10 -1
  217. package/src/components/layouts/FullBody/FullBody.stories.tsx +9 -10
  218. package/src/components/layouts/Totem/Totem.stories.tsx +8 -9
  219. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +8 -9
  220. package/src/components/layouts/chat.css +1 -1
  221. package/src/components/layouts/layouts.stories.tsx +10 -9
  222. package/src/components/ui/Drawer.css +8 -0
  223. package/src/components/ui/Drawer.tsx +16 -12
  224. package/src/components/ui/Tooltip.css +49 -1
  225. package/src/components/ui/Tooltip.tsx +1 -1
  226. package/src/helpers/constants.ts +1 -1
  227. package/src/helpers/imageCompression.ts +230 -0
  228. package/src/index.stories.tsx +18 -0
  229. package/src/locales/de.json +13 -5
  230. package/src/locales/en.json +17 -6
  231. package/src/locales/es.json +13 -5
  232. package/src/locales/fr.json +12 -5
  233. package/src/locales/it.json +16 -6
  234. package/src/mocks/data.ts +4 -2
  235. package/src/styles.css +4 -4
  236. package/src/components/SignupForm/SignupForm.test.tsx +0 -40
  237. package/src/components/SignupForm/SignupForm.tsx +0 -457
  238. package/src/components/SignupForm/__snapshots__/SignupForm.test.tsx.snap +0 -247
  239. package/src/components/UploadMenu/UploadMenu.css +0 -47
  240. package/src/components/UploadMenu/UploadMenu.stories.tsx +0 -66
  241. package/src/components/UploadMenu/UploadMenu.test.tsx +0 -34
  242. package/src/components/UploadMenu/UploadMenu.tsx +0 -68
  243. package/src/components/UploadMenu/__snapshots__/UploadMenu.test.tsx.snap +0 -137
@@ -323,14 +323,18 @@ declare global {
323
323
  typeBatchMessages: typeof typeBatchMessages;
324
324
  MemoriArtifactAPI?: {
325
325
  openArtifact: (artifact: ArtifactData) => void;
326
- createAndOpenArtifact: (content: string, mimeType?: string, title?: string) => void;
326
+ createAndOpenArtifact: (
327
+ content: string,
328
+ mimeType?: string,
329
+ title?: string
330
+ ) => void;
327
331
  createFromOutputElement: (outputElement: HTMLOutputElement) => string;
328
332
  closeArtifact: () => void;
329
333
  toggleFullscreen: () => void;
330
- getState: () => {
331
- currentArtifact: ArtifactData | null;
332
- isDrawerOpen: boolean;
333
- isFullscreen: boolean
334
+ getState: () => {
335
+ currentArtifact: ArtifactData | null;
336
+ isDrawerOpen: boolean;
337
+ isFullscreen: boolean;
334
338
  };
335
339
  };
336
340
  }
@@ -915,7 +919,7 @@ const MemoriWidget = ({
915
919
  setHistory(h => [...h.slice(0, h.length - 1)]);
916
920
 
917
921
  reopenSession(
918
- false,
922
+ true,
919
923
  memoriPwd || memori.secretToken,
920
924
  memoriTokens,
921
925
  undefined,
@@ -926,7 +930,12 @@ const MemoriWidget = ({
926
930
  ROUTE: window.location.pathname?.split('/')?.pop() || '',
927
931
  ...(initialContextVars || {}),
928
932
  },
929
- initialQuestion
933
+ initialQuestion,
934
+ undefined,
935
+ undefined,
936
+ undefined,
937
+ undefined,
938
+ true // isSessionExpired
930
939
  ).then(state => {
931
940
  console.info('session timeout');
932
941
  if (state?.sessionID) {
@@ -935,8 +944,21 @@ const MemoriWidget = ({
935
944
  }, 500);
936
945
  }
937
946
  });
947
+ } else if (response.resultCode === 500 && response.resultMessage) {
948
+ setHistory(h => [...h, {
949
+ text: 'Error: ' + response.resultMessage,
950
+ emitter: 'system',
951
+ fromUser: false,
952
+ initial: false,
953
+ contextVars: {},
954
+ date: new Date().toISOString(),
955
+ }]);
956
+ } else {
957
+ console.warn('[SEND_MESSAGE]', response);
958
+ return Promise.reject(response);
938
959
  }
939
960
  } catch (error) {
961
+ console.log('error', error);
940
962
  console.error(error);
941
963
  gotError = true;
942
964
 
@@ -1283,9 +1305,13 @@ const MemoriWidget = ({
1283
1305
  tag: params.tag ?? personification?.tag,
1284
1306
  pin: params.pin ?? personification?.pin,
1285
1307
  additionalInfo: {
1286
- ...(additionalInfo || {}),
1308
+ ...(params.additionalInfo || additionalInfo || {}),
1287
1309
  loginToken:
1288
- userToken ?? loginToken ?? additionalInfo?.loginToken ?? authToken,
1310
+ userToken ??
1311
+ loginToken ??
1312
+ params.additionalInfo?.loginToken ??
1313
+ additionalInfo?.loginToken ??
1314
+ authToken,
1289
1315
  language: getCultureCodeByLanguage(userLang),
1290
1316
  referral: referral,
1291
1317
  timeZoneOffset: new Date().getTimezoneOffset().toString(),
@@ -1379,19 +1405,12 @@ const MemoriWidget = ({
1379
1405
  pin?: string,
1380
1406
  initialContextVars?: { [key: string]: string },
1381
1407
  initialQuestion?: string,
1382
- birthDate?: string
1408
+ birthDate?: string,
1409
+ additionalInfoProp?: { [key: string]: string | undefined },
1410
+ continueFromChatLogID?: string,
1411
+ continueFromSessionID?: string,
1412
+ isSessionExpired?: boolean
1383
1413
  ) => {
1384
- // console.log('[REOPEN_SESSION] Starting reopenSession with params:', {
1385
- // updateDialogState,
1386
- // hasPassword: !!password,
1387
- // hasRecoveryTokens: !!recoveryTokens,
1388
- // tag,
1389
- // hasPin: !!pin,
1390
- // initialContextVars,
1391
- // initialQuestion,
1392
- // hasBirthDate: !!birthDate
1393
- // });
1394
-
1395
1414
  // Set loading state while reopening session
1396
1415
  setLoading(true);
1397
1416
 
@@ -1444,6 +1463,8 @@ const MemoriWidget = ({
1444
1463
  recoveryTokens: recoveryTokens || memoriTokens,
1445
1464
  tag: tag ?? personification?.tag,
1446
1465
  pin: pin ?? personification?.pin,
1466
+ continueFromChatLogID: continueFromChatLogID,
1467
+ continueFromSessionID: continueFromSessionID,
1447
1468
  initialContextVars: {
1448
1469
  LANG: userLang,
1449
1470
  PATHNAME: window.location.pathname,
@@ -1453,9 +1474,13 @@ const MemoriWidget = ({
1453
1474
  initialQuestion,
1454
1475
  birthDate: userBirthDate,
1455
1476
  additionalInfo: {
1456
- ...(additionalInfo || {}),
1477
+ ...(additionalInfoProp || additionalInfo || {}),
1457
1478
  loginToken:
1458
- userToken ?? loginToken ?? additionalInfo?.loginToken ?? authToken,
1479
+ userToken ??
1480
+ loginToken ??
1481
+ additionalInfoProp?.loginToken ??
1482
+ additionalInfo?.loginToken ??
1483
+ authToken,
1459
1484
  language: getCultureCodeByLanguage(userLang),
1460
1485
  referral: referral,
1461
1486
  timeZoneOffset: new Date().getTimezoneOffset().toString(),
@@ -1464,7 +1489,10 @@ const MemoriWidget = ({
1464
1489
 
1465
1490
  // Handle successful session initialization
1466
1491
  if (sessionID && currentState && response.resultCode === 0) {
1467
- // console.log('[REOPEN_SESSION] Session initialized successfully:', sessionID);
1492
+ console.log(
1493
+ '[REOPEN_SESSION] Session initialized successfully:',
1494
+ sessionID
1495
+ );
1468
1496
  setSessionId(sessionID);
1469
1497
 
1470
1498
  // Update dialog state and history if requested
@@ -1473,7 +1501,19 @@ const MemoriWidget = ({
1473
1501
  setCurrentDialogState(currentState);
1474
1502
 
1475
1503
  if (currentState.emission) {
1476
- // console.log('[REOPEN_SESSION] Processing emission:', currentState.emission);
1504
+ console.log(
1505
+ '[REOPEN_SESSION] Processing emission:',
1506
+ currentState.emission
1507
+ );
1508
+ // Determine initial status message based on context
1509
+ // Show status message only if session expired and there's existing history
1510
+ const initialStatus =
1511
+ isSessionExpired && history.length > 1
1512
+ ? 'Session Expired, reopening session'
1513
+ : history.length <= 1
1514
+ ? true
1515
+ : undefined;
1516
+
1477
1517
  // Set initial message or append to existing history
1478
1518
  history.length <= 1
1479
1519
  ? setHistory([
@@ -1482,7 +1522,9 @@ const MemoriWidget = ({
1482
1522
  emitter: currentState.emitter,
1483
1523
  media: currentState.emittedMedia ?? currentState.media,
1484
1524
  fromUser: false,
1485
- initial: true,
1525
+ initial: (initialStatus === true
1526
+ ? true
1527
+ : initialStatus || undefined) as any,
1486
1528
  contextVars: currentState.contextVars,
1487
1529
  date: currentState.currentDate,
1488
1530
  placeName: currentState.currentPlaceName,
@@ -1498,7 +1540,9 @@ const MemoriWidget = ({
1498
1540
  emitter: currentState.emitter,
1499
1541
  media: currentState.emittedMedia ?? currentState.media,
1500
1542
  fromUser: false,
1501
- initial: true,
1543
+ initial: (initialStatus === true
1544
+ ? true
1545
+ : initialStatus || undefined) as any,
1502
1546
  contextVars: currentState.contextVars,
1503
1547
  date: currentState.currentDate,
1504
1548
  placeName: currentState.currentPlaceName,
@@ -2551,6 +2595,7 @@ const MemoriWidget = ({
2551
2595
  // No tag changes needed
2552
2596
  else {
2553
2597
  try {
2598
+ //This is the session id of the session that was opened before the current session
2554
2599
  const { chatLogs } = await getSessionChatLogs(
2555
2600
  sessionID!,
2556
2601
  sessionID!
@@ -2627,6 +2672,20 @@ const MemoriWidget = ({
2627
2672
  text: initialQuestion,
2628
2673
  });
2629
2674
 
2675
+ // Handle 500 error from TextEnteredEvent
2676
+ if (response.resultCode === 500 && response.resultMessage) {
2677
+ setHistory(h => [...h, {
2678
+ text: 'Error: ' + response.resultMessage,
2679
+ emitter: 'system',
2680
+ fromUser: false,
2681
+ initial: false,
2682
+ contextVars: {},
2683
+ date: new Date().toISOString(),
2684
+ }]);
2685
+ setMemoriTyping(false);
2686
+ return;
2687
+ }
2688
+
2630
2689
  await translateAndSpeak(
2631
2690
  response.currentState ?? currentState,
2632
2691
  userLang,
@@ -3049,16 +3108,21 @@ const MemoriWidget = ({
3049
3108
  loading={loading}
3050
3109
  />
3051
3110
 
3052
- <ArtifactAPIBridge pushMessage={(message: Message) => {
3053
- setHistory(history => {
3054
- if (!history.length) return history;
3055
- const lastMessage = history[history.length - 1];
3056
- if (!lastMessage || lastMessage.fromUser) return history;
3057
- // Create a new message object with the updated text
3058
- const updatedLastMessage = { ...lastMessage, text: lastMessage.text + message.text };
3059
- return [...history.slice(0, -1), updatedLastMessage];
3060
- });
3061
- }} />
3111
+ <ArtifactAPIBridge
3112
+ pushMessage={(message: Message) => {
3113
+ setHistory(history => {
3114
+ if (!history.length) return history;
3115
+ const lastMessage = history[history.length - 1];
3116
+ if (!lastMessage || lastMessage.fromUser) return history;
3117
+ // Create a new message object with the updated text
3118
+ const updatedLastMessage = {
3119
+ ...lastMessage,
3120
+ text: lastMessage.text + message.text,
3121
+ };
3122
+ return [...history.slice(0, -1), updatedLastMessage];
3123
+ });
3124
+ }}
3125
+ />
3062
3126
 
3063
3127
  <audio
3064
3128
  id="memori-audio"
@@ -3073,12 +3137,12 @@ const MemoriWidget = ({
3073
3137
  openModal={!!authModalState}
3074
3138
  setPwdOrTokens={setAuthModalState}
3075
3139
  showTokens={memori.privacyType === 'SECRET'}
3076
- onFinish={async (values: any) => {
3140
+ onFinish={(values: any) => {
3077
3141
  if (values['password']) setMemoriPwd(values['password']);
3078
3142
  if (values['password']) memoriPassword = values['password'];
3079
3143
  if (values['tokens']) setMemoriTokens(values['tokens']);
3080
3144
 
3081
- reopenSession(
3145
+ return reopenSession(
3082
3146
  !sessionId,
3083
3147
  values['password'],
3084
3148
  values['tokens'],
@@ -3096,6 +3160,10 @@ const MemoriWidget = ({
3096
3160
  birthDate
3097
3161
  )
3098
3162
  .then(state => {
3163
+ if (!state?.sessionID) {
3164
+ throw new Error('AUTH_FAILED');
3165
+ }
3166
+
3099
3167
  setAuthModalState(null);
3100
3168
  // If we got a valid state from reopenSession, don't call onClickStart again
3101
3169
  // to avoid duplicate snippet execution
@@ -3103,12 +3171,17 @@ const MemoriWidget = ({
3103
3171
  setHasUserActivatedSpeak(true);
3104
3172
  } else {
3105
3173
  // Only call onClickStart if reopenSession didn't return a valid state
3106
- onClickStart(state || undefined);
3174
+ onClickStart(state);
3107
3175
  }
3108
3176
  })
3109
- .catch(() => {
3110
- setAuthModalState(null);
3111
- setGotErrorInOpening(true);
3177
+ .catch(error => {
3178
+ if (
3179
+ !(error instanceof Error) ||
3180
+ error.message !== 'AUTH_FAILED'
3181
+ ) {
3182
+ setGotErrorInOpening(true);
3183
+ }
3184
+ throw error;
3112
3185
  });
3113
3186
  }}
3114
3187
  minimumNumberOfRecoveryTokens={
@@ -3254,16 +3327,67 @@ const MemoriWidget = ({
3254
3327
  loginToken={loginToken}
3255
3328
  onClose={() => setShowLoginDrawer(false)}
3256
3329
  onLogin={(user, token) => {
3257
- setUser(user);
3258
- setLoginToken(token);
3259
- userToken = token;
3260
- setShowLoginDrawer(false);
3261
- setLocalConfig('loginToken', token);
3330
+ //The user is logged in, so we need to set open a new session with the new token
3331
+ reopenSession(
3332
+ false,
3333
+ memoriPassword || memoriPwd || memori?.secretToken,
3334
+ [],
3335
+ personification?.tag,
3336
+ personification?.pin,
3337
+ {
3338
+ LANG: userLang,
3339
+ PATHNAME: window.location.pathname?.toUpperCase(),
3340
+ ROUTE:
3341
+ window.location.pathname?.split('/')?.pop()?.toUpperCase() ||
3342
+ '',
3343
+ ...(initialContextVars || {}),
3344
+ },
3345
+ undefined, // Don't send initialQuestion after login, only show the login status chip
3346
+ birthDate,
3347
+ { loginToken: token } as any,
3348
+ undefined,
3349
+ sessionId
3350
+ ).then(state => {
3351
+ setShowLoginDrawer(false);
3352
+ setUser(user);
3353
+ setLoginToken(token);
3354
+ userToken = token;
3355
+ setLocalConfig('loginToken', token);
3356
+ // Push a message with initial status to show status message when a new session is created after login
3357
+ if (
3358
+ state?.sessionID &&
3359
+ state.sessionID !== sessionId &&
3360
+ state?.dialogState
3361
+ ) {
3362
+ // Push a message with initial status message showing successful login
3363
+ // Only show the chip component, not the emission text
3364
+ const username = user?.userName || t('login.user');
3365
+ pushMessage({
3366
+ text: '', // Empty text so only the chip is visible
3367
+ emitter: state.dialogState.emitter,
3368
+ media:
3369
+ state.dialogState.emittedMedia ??
3370
+ state.dialogState.media ??
3371
+ [],
3372
+ fromUser: false,
3373
+ initial: t('login.successfullyLoggedIn', { username }) as any,
3374
+ contextVars: state.dialogState.contextVars,
3375
+ date: state.dialogState.currentDate,
3376
+ placeName: state.dialogState.currentPlaceName,
3377
+ placeLatitude: state.dialogState.currentLatitude,
3378
+ placeLongitude: state.dialogState.currentLongitude,
3379
+ placeUncertaintyKm: state.dialogState.currentUncertaintyKm,
3380
+ tag: state.dialogState.currentTag,
3381
+ memoryTags: state.dialogState.memoryTags,
3382
+ });
3383
+ // Update the dialog state so the UI reflects the new session
3384
+ setCurrentDialogState(state.dialogState);
3385
+ }
3386
+ });
3262
3387
  }}
3263
3388
  setUser={setUser}
3264
3389
  onLogout={() => {
3265
3390
  if (!loginToken) return;
3266
-
3267
3391
  client.backend.pwlUserLogout(loginToken).then(() => {
3268
3392
  setShowLoginDrawer(false);
3269
3393
  setUser(undefined);
@@ -26,7 +26,7 @@
26
26
  }
27
27
 
28
28
  .memori-chat-inputs--mic svg {
29
- color: var(--memori-primary-text, #fff);
29
+ color: var(--memori-primary, #fff);
30
30
  font-size: 1em;
31
31
  -webkit-user-select: none;
32
32
  user-select: none;
@@ -36,7 +36,7 @@
36
36
  .memori-chat-inputs--mic:active,
37
37
  .memori-chat-inputs--mic:focus {
38
38
  border-color: var(--memori-primary) !important;
39
- color: var(--memori-primary-text, #fff);
39
+ color: var(--memori-primary, #fff);
40
40
  }
41
41
 
42
42
  .memori-chat-inputs--mic:active,
@@ -133,7 +133,14 @@
133
133
  }
134
134
 
135
135
  .memori--start-button {
136
+ position: relative;
137
+ overflow: hidden;
138
+ min-width: 140px;
139
+ min-height: 42px;
140
+ border-radius: 8px;
136
141
  margin-right: 1em;
142
+ font-weight: 600;
143
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
137
144
  }
138
145
 
139
146
  .memori--language-chooser {
@@ -263,3 +270,4 @@
263
270
  .memori--privacy-tooltip-content-list {
264
271
  padding-left: 1rem;
265
272
  }
273
+
@@ -200,17 +200,6 @@
200
200
  height: 20px;
201
201
  }
202
202
 
203
- /* Preview Container */
204
- .memori--preview-container {
205
- min-width: 200px;
206
- padding: 12px;
207
- border-radius: 8px;
208
- margin-bottom: 12px;
209
- animation: slide-in 0.3s ease;
210
- background: #fff;
211
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
212
- transition: all 0.3s ease;
213
- }
214
203
 
215
204
  .memori--absolute-preview {
216
205
  position: absolute;
@@ -352,7 +341,7 @@
352
341
  padding: 16px;
353
342
  border-radius: 8px;
354
343
  margin: 0;
355
- background-color: #f8f9fa;
344
+ /* background-color: #f8f9fa; */
356
345
  font-family: monospace;
357
346
  line-height: 1.5;
358
347
  }
@@ -362,7 +351,7 @@
362
351
  border: 1px solid #b2f2bb;
363
352
  border-radius: 8px;
364
353
  margin-top: 16px;
365
- background-color: #ebfbee;
354
+ /* background-color: #ebfbee; */
366
355
  text-align: left;
367
356
  }
368
357
 
@@ -381,8 +370,8 @@
381
370
  .memori--error-message-container,
382
371
  .memori--login-tip {
383
372
  position: fixed;
384
- z-index: 1001;
385
- top: 120px;
373
+ z-index: 10001;
374
+ top: 80px;
386
375
  right: 20px;
387
376
  }
388
377
 
@@ -431,6 +420,13 @@
431
420
  font-weight: bold;
432
421
  }
433
422
 
423
+ .memori--upload-image {
424
+ min-width: 140px;
425
+ min-height: 42px;
426
+ border-radius: 8px;
427
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
428
+ }
429
+
434
430
  .memori--image-count-full {
435
431
  background-color: #fa5252;
436
432
  }
@@ -439,8 +435,8 @@
439
435
  .memori--document-count {
440
436
  position: absolute;
441
437
  z-index: 5;
442
- top: -8px;
443
- right: -8px;
438
+ top: -20px;
439
+ right: -10px;
444
440
  padding: 1px 6px;
445
441
  border-radius: 10px;
446
442
  background-color: #51cf66;
@@ -509,6 +505,13 @@ input.memori--upload-title-input {
509
505
  transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
510
506
  }
511
507
 
508
+ .memori--error-message-alert{
509
+ position: relative;
510
+ z-index: 10002;
511
+ top: 0;
512
+ right: 0;
513
+ }
514
+
512
515
  /* Animation Keyframes */
513
516
  @keyframes slide-in {
514
517
  from {