react-native-chatbot-ai 0.1.70 → 0.1.72

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 (49) hide show
  1. package/lib/module/components/Drawer/SessionItem.js +13 -5
  2. package/lib/module/components/Drawer/SessionItem.js.map +1 -1
  3. package/lib/module/components/Drawer/SessionOptionsBottomSheet.js +96 -31
  4. package/lib/module/components/Drawer/SessionOptionsBottomSheet.js.map +1 -1
  5. package/lib/module/components/chat/footer/SuggestionsBar.js +6 -0
  6. package/lib/module/components/chat/footer/SuggestionsBar.js.map +1 -1
  7. package/lib/module/components/chat/footer/index.js +5 -0
  8. package/lib/module/components/chat/footer/index.js.map +1 -1
  9. package/lib/module/components/portal/BottomSheet.js +1 -1
  10. package/lib/module/components/portal/BottomSheet.js.map +1 -1
  11. package/lib/module/constants/query.js +1 -0
  12. package/lib/module/constants/query.js.map +1 -1
  13. package/lib/module/context/ChatContext.js +23 -6
  14. package/lib/module/context/ChatContext.js.map +1 -1
  15. package/lib/module/hooks/session/useSessionPin.js +26 -0
  16. package/lib/module/hooks/session/useSessionPin.js.map +1 -0
  17. package/lib/module/services/endpoints.js +2 -0
  18. package/lib/module/services/endpoints.js.map +1 -1
  19. package/lib/module/translation/resources/i18n.js +4 -0
  20. package/lib/module/translation/resources/i18n.js.map +1 -1
  21. package/lib/typescript/src/components/Drawer/SessionItem.d.ts.map +1 -1
  22. package/lib/typescript/src/components/Drawer/SessionOptionsBottomSheet.d.ts.map +1 -1
  23. package/lib/typescript/src/components/chat/footer/SuggestionsBar.d.ts.map +1 -1
  24. package/lib/typescript/src/components/chat/footer/index.d.ts.map +1 -1
  25. package/lib/typescript/src/constants/query.d.ts +1 -0
  26. package/lib/typescript/src/constants/query.d.ts.map +1 -1
  27. package/lib/typescript/src/context/ChatContext.d.ts.map +1 -1
  28. package/lib/typescript/src/hooks/session/useSessionPin.d.ts +6 -0
  29. package/lib/typescript/src/hooks/session/useSessionPin.d.ts.map +1 -0
  30. package/lib/typescript/src/services/endpoints.d.ts +2 -0
  31. package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
  32. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  33. package/lib/typescript/src/types/dto.d.ts +1 -0
  34. package/lib/typescript/src/types/dto.d.ts.map +1 -1
  35. package/lib/typescript/src/types/ui.d.ts +4 -1
  36. package/lib/typescript/src/types/ui.d.ts.map +1 -1
  37. package/package.json +2 -2
  38. package/src/components/Drawer/SessionItem.tsx +11 -3
  39. package/src/components/Drawer/SessionOptionsBottomSheet.tsx +111 -32
  40. package/src/components/chat/footer/SuggestionsBar.tsx +6 -0
  41. package/src/components/chat/footer/index.tsx +5 -0
  42. package/src/components/portal/BottomSheet.tsx +1 -1
  43. package/src/constants/query.ts +1 -0
  44. package/src/context/ChatContext.tsx +17 -4
  45. package/src/hooks/session/useSessionPin.ts +31 -0
  46. package/src/services/endpoints.ts +4 -0
  47. package/src/translation/resources/i18n.ts +4 -0
  48. package/src/types/dto.ts +1 -0
  49. package/src/types/ui.ts +7 -1
@@ -10,6 +10,8 @@ export const ENDPOINTS = {
10
10
  updateSession: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}`,
11
11
  shareSession: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}/share`,
12
12
  deleteSession: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}`,
13
+ pinSession: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}/pin`,
14
+ unpinSession: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}/unpin`,
13
15
  sendFeedback: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}/feedback`,
14
16
  generateAudio: (sessionId, messageId) => `/assistant-service/v1/app/chat/sessions/${sessionId}/messages/${messageId}/speech`,
15
17
  getExternalSessionInfo: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}/tab-data`
@@ -1 +1 @@
1
- {"version":3,"names":["ENDPOINTS","assistantService","getSuggestions","getSessionById","sessionId","getStreamMessage","createSession","searchSessions","updateSession","shareSession","deleteSession","sendFeedback","generateAudio","messageId","getExternalSessionInfo","uploaderService","upload","productService","search"],"sourceRoot":"../../../src","sources":["services/endpoints.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,GAAG;EACvBC,gBAAgB,EAAE;IAChBC,cAAc,EAAE,mDAAmD;IACnEC,cAAc,EAAGC,SAAiB,IAChC,2CAA2CA,SAAS,EAAE;IACxDC,gBAAgB,EAAGD,SAAiB,IAClC,2CAA2CA,SAAS,SAAS;IAC/DE,aAAa,EAAE,yCAAyC;IACxDC,cAAc,EAAE,gDAAgD;IAChEC,aAAa,EAAGJ,SAAiB,IAC/B,2CAA2CA,SAAS,EAAE;IACxDK,YAAY,EAAGL,SAAiB,IAC9B,2CAA2CA,SAAS,QAAQ;IAC9DM,aAAa,EAAGN,SAAiB,IAC/B,2CAA2CA,SAAS,EAAE;IACxDO,YAAY,EAAGP,SAAiB,IAC9B,2CAA2CA,SAAS,WAAW;IACjEQ,aAAa,EAAEA,CAACR,SAAiB,EAAES,SAAiB,KAClD,2CAA2CT,SAAS,aAAaS,SAAS,SAAS;IACrFC,sBAAsB,EAAGV,SAAiB,IACxC,2CAA2CA,SAAS;EACxD,CAAC;EACDW,eAAe,EAAE;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,cAAc,EAAE;IACdC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ENDPOINTS","assistantService","getSuggestions","getSessionById","sessionId","getStreamMessage","createSession","searchSessions","updateSession","shareSession","deleteSession","pinSession","unpinSession","sendFeedback","generateAudio","messageId","getExternalSessionInfo","uploaderService","upload","productService","search"],"sourceRoot":"../../../src","sources":["services/endpoints.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,GAAG;EACvBC,gBAAgB,EAAE;IAChBC,cAAc,EAAE,mDAAmD;IACnEC,cAAc,EAAGC,SAAiB,IAChC,2CAA2CA,SAAS,EAAE;IACxDC,gBAAgB,EAAGD,SAAiB,IAClC,2CAA2CA,SAAS,SAAS;IAC/DE,aAAa,EAAE,yCAAyC;IACxDC,cAAc,EAAE,gDAAgD;IAChEC,aAAa,EAAGJ,SAAiB,IAC/B,2CAA2CA,SAAS,EAAE;IACxDK,YAAY,EAAGL,SAAiB,IAC9B,2CAA2CA,SAAS,QAAQ;IAC9DM,aAAa,EAAGN,SAAiB,IAC/B,2CAA2CA,SAAS,EAAE;IACxDO,UAAU,EAAGP,SAAiB,IAC5B,2CAA2CA,SAAS,MAAM;IAC5DQ,YAAY,EAAGR,SAAiB,IAC9B,2CAA2CA,SAAS,QAAQ;IAC9DS,YAAY,EAAGT,SAAiB,IAC9B,2CAA2CA,SAAS,WAAW;IACjEU,aAAa,EAAEA,CAACV,SAAiB,EAAEW,SAAiB,KAClD,2CAA2CX,SAAS,aAAaW,SAAS,SAAS;IACrFC,sBAAsB,EAAGZ,SAAiB,IACxC,2CAA2CA,SAAS;EACxD,CAAC;EACDa,eAAe,EAAE;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,cAAc,EAAE;IACdC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -8,9 +8,13 @@ const i18nKey = {
8
8
  chat_empty_description_2: 'Những gợi ý dành cho bạn:',
9
9
  // Session options
10
10
  session_options_title: 'Tuỳ chọn phiên chat',
11
+ session_pin: 'Ghim',
12
+ session_unpin: 'Bỏ ghim',
11
13
  session_rename: 'Đổi tên',
12
14
  session_share: 'Chia sẻ',
13
15
  session_delete: 'Xoá',
16
+ pin_session_success: 'Đã ghim phiên chat',
17
+ unpin_session_success: 'Đã bỏ ghim phiên chat',
14
18
  // Attachment bottom sheet
15
19
  attachment_options_title: 'Tuỳ chọn thêm',
16
20
  attachment_photo_library: 'Thư viện ảnh',
@@ -1 +1 @@
1
- {"version":3,"names":["i18nKey","input_placeholder","ai_answer_note","chat_empty_title","chat_empty_description_1","chat_empty_description_2","session_options_title","session_rename","session_share","session_delete","attachment_options_title","attachment_photo_library","attachment_camera","attachment_document","rename_session_title","rename_session_placeholder","rename_session_success","rename_session_cancel","rename_session_confirm","share_session_title","share_session_description","share_session_link_label","share_session_cancel","share_session_confirm","share_session_success","delete_session_title","delete_session_description","delete_session_cancel","delete_session_confirm","delete_session_success","recently_chat_history","stop_stream_alert","images_too_large","file_too_large","max_image_reached","max_file_reached","error_play_audio","commissions","points","answer","source","product","view_original_message","empty_product","vi"],"sourceRoot":"../../../../src","sources":["translation/resources/i18n.ts"],"mappings":";;AAAA,MAAMA,OAA+B,GAAG;EACtCC,iBAAiB,EAAE,0BAA0B;EAC7CC,cAAc,EACZ,gGAAgG;EAClGC,gBAAgB,EAAE,4BAA4B;EAC9CC,wBAAwB,EAAE,8CAA8C;EACxEC,wBAAwB,EAAE,2BAA2B;EAErD;EACAC,qBAAqB,EAAE,qBAAqB;EAC5CC,cAAc,EAAE,SAAS;EACzBC,aAAa,EAAE,SAAS;EACxBC,cAAc,EAAE,KAAK;EAErB;EACAC,wBAAwB,EAAE,eAAe;EACzCC,wBAAwB,EAAE,cAAc;EACxCC,iBAAiB,EAAE,UAAU;EAC7BC,mBAAmB,EAAE,UAAU;EAE/B;EACAC,oBAAoB,EAAE,oBAAoB;EAC1CC,0BAA0B,EAAE,qBAAqB;EACjDC,sBAAsB,EAAE,+BAA+B;EACvDC,qBAAqB,EAAE,KAAK;EAC5BC,sBAAsB,EAAE,SAAS;EAEjC;EACAC,mBAAmB,EAAE,oBAAoB;EACzCC,yBAAyB,EACvB,+GAA+G;EACjHC,wBAAwB,EAAE,kBAAkB;EAC5CC,oBAAoB,EAAE,KAAK;EAC3BC,qBAAqB,EAAE,UAAU;EACjCC,qBAAqB,EACnB,gEAAgE;EAElE;EACAC,oBAAoB,EAAE,gBAAgB;EACtCC,0BAA0B,EACxB,4EAA4E;EAC9EC,qBAAqB,EAAE,OAAO;EAC9BC,sBAAsB,EAAE,KAAK;EAC7BC,sBAAsB,EAAE,8BAA8B;EAEtDC,qBAAqB,EAAE,iBAAiB;EACxCC,iBAAiB,EAAE,yBAAyB;EAC5CC,gBAAgB,EAAE;AACpB;AACA;AACA,uDAAuD;EACrDC,cAAc,EAAE;AAClB;AACA;AACA,uDAAuD;EACrDC,iBAAiB,EAAE,yCAAyC;EAC5DC,gBAAgB,EAAE,oCAAoC;EACtDC,gBAAgB,EAAE,gDAAgD;EAElE;EACAC,WAAW,EAAE,MAAM;EACnBC,MAAM,EAAE,UAAU;EAElB;EACAC,MAAM,EAAE,SAAS;EACjBC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAE,UAAU;EACnBC,qBAAqB,EAAE,qBAAqB;EAC5CC,aAAa,EAAE;AACjB,CAAC;AAED,eAAe;EACbC,EAAE,EAAE5C;AACN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["i18nKey","input_placeholder","ai_answer_note","chat_empty_title","chat_empty_description_1","chat_empty_description_2","session_options_title","session_pin","session_unpin","session_rename","session_share","session_delete","pin_session_success","unpin_session_success","attachment_options_title","attachment_photo_library","attachment_camera","attachment_document","rename_session_title","rename_session_placeholder","rename_session_success","rename_session_cancel","rename_session_confirm","share_session_title","share_session_description","share_session_link_label","share_session_cancel","share_session_confirm","share_session_success","delete_session_title","delete_session_description","delete_session_cancel","delete_session_confirm","delete_session_success","recently_chat_history","stop_stream_alert","images_too_large","file_too_large","max_image_reached","max_file_reached","error_play_audio","commissions","points","answer","source","product","view_original_message","empty_product","vi"],"sourceRoot":"../../../../src","sources":["translation/resources/i18n.ts"],"mappings":";;AAAA,MAAMA,OAA+B,GAAG;EACtCC,iBAAiB,EAAE,0BAA0B;EAC7CC,cAAc,EACZ,gGAAgG;EAClGC,gBAAgB,EAAE,4BAA4B;EAC9CC,wBAAwB,EAAE,8CAA8C;EACxEC,wBAAwB,EAAE,2BAA2B;EAErD;EACAC,qBAAqB,EAAE,qBAAqB;EAC5CC,WAAW,EAAE,MAAM;EACnBC,aAAa,EAAE,SAAS;EACxBC,cAAc,EAAE,SAAS;EACzBC,aAAa,EAAE,SAAS;EACxBC,cAAc,EAAE,KAAK;EACrBC,mBAAmB,EAAE,oBAAoB;EACzCC,qBAAqB,EAAE,uBAAuB;EAE9C;EACAC,wBAAwB,EAAE,eAAe;EACzCC,wBAAwB,EAAE,cAAc;EACxCC,iBAAiB,EAAE,UAAU;EAC7BC,mBAAmB,EAAE,UAAU;EAE/B;EACAC,oBAAoB,EAAE,oBAAoB;EAC1CC,0BAA0B,EAAE,qBAAqB;EACjDC,sBAAsB,EAAE,+BAA+B;EACvDC,qBAAqB,EAAE,KAAK;EAC5BC,sBAAsB,EAAE,SAAS;EAEjC;EACAC,mBAAmB,EAAE,oBAAoB;EACzCC,yBAAyB,EACvB,+GAA+G;EACjHC,wBAAwB,EAAE,kBAAkB;EAC5CC,oBAAoB,EAAE,KAAK;EAC3BC,qBAAqB,EAAE,UAAU;EACjCC,qBAAqB,EACnB,gEAAgE;EAElE;EACAC,oBAAoB,EAAE,gBAAgB;EACtCC,0BAA0B,EACxB,4EAA4E;EAC9EC,qBAAqB,EAAE,OAAO;EAC9BC,sBAAsB,EAAE,KAAK;EAC7BC,sBAAsB,EAAE,8BAA8B;EAEtDC,qBAAqB,EAAE,iBAAiB;EACxCC,iBAAiB,EAAE,yBAAyB;EAC5CC,gBAAgB,EAAE;AACpB;AACA;AACA,uDAAuD;EACrDC,cAAc,EAAE;AAClB;AACA;AACA,uDAAuD;EACrDC,iBAAiB,EAAE,yCAAyC;EAC5DC,gBAAgB,EAAE,oCAAoC;EACtDC,gBAAgB,EAAE,gDAAgD;EAElE;EACAC,WAAW,EAAE,MAAM;EACnBC,MAAM,EAAE,UAAU;EAElB;EACAC,MAAM,EAAE,SAAS;EACjBC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAE,UAAU;EACnBC,qBAAqB,EAAE,qBAAqB;EAC5CC,aAAa,EAAE;AACjB,CAAC;AAED,eAAe;EACbC,EAAE,EAAEhD;AACN,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/Drawer/SessionItem.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIpD,UAAU,gBAAgB;IACxB,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC5C;AAED,QAAA,MAAM,WAAW,wDAqCf,CAAC;AA0BH,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"SessionItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/Drawer/SessionItem.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIpD,UAAU,gBAAgB;IACxB,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC5C;AAED,QAAA,MAAM,WAAW,wDA4Cf,CAAC;AA2BH,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionOptionsBottomSheet.d.ts","sourceRoot":"","sources":["../../../../../src/components/Drawer/SessionOptionsBottomSheet.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AA4BpD,eAAO,MAAM,6BAA6B,GACxC,SAAS,iBAAiB,EAC1B,cAAc,MAAM,IAAI,EACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,SAiF9C,CAAC"}
1
+ {"version":3,"file":"SessionOptionsBottomSheet.d.ts","sourceRoot":"","sources":["../../../../../src/components/Drawer/SessionOptionsBottomSheet.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAiIpD,eAAO,MAAM,6BAA6B,GACxC,SAAS,iBAAiB,EAC1B,cAAc,MAAM,IAAI,EACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,SA0D9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SuggestionsBar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/chat/footer/SuggestionsBar.tsx"],"names":[],"mappings":"AAWA,OAAO,EACL,eAAe,EACf,WAAW,EACX,iBAAiB,EAElB,MAAM,gBAAgB,CAAC;AAKxB,UAAU,KAAK;IACb,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,EACvC,OAAO,CAAC,EAAE,iBAAiB,KACxB,IAAI,CAAC;CACX;AAqBD,QAAA,MAAM,cAAc,GAAI,+DAKrB,KAAK,4CA6KP,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"SuggestionsBar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/chat/footer/SuggestionsBar.tsx"],"names":[],"mappings":"AAWA,OAAO,EACL,eAAe,EACf,WAAW,EACX,iBAAiB,EAElB,MAAM,gBAAgB,CAAC;AAMxB,UAAU,KAAK;IACb,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,EACvC,OAAO,CAAC,EAAE,iBAAiB,KACxB,IAAI,CAAC;CACX;AAqBD,QAAA,MAAM,cAAc,GAAI,+DAKrB,KAAK,4CA8KP,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/chat/footer/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAEL,YAAY,EAGb,MAAM,gBAAgB,CAAC;AAQxB,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B;AAMD,QAAA,MAAM,UAAU,GAAI,iBAAiB,gBAAgB,4CA8MpD,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/chat/footer/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAEL,YAAY,EAGb,MAAM,gBAAgB,CAAC;AAQxB,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B;AAMD,QAAA,MAAM,UAAU,GAAI,iBAAiB,gBAAgB,4CA+MpD,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -7,6 +7,7 @@ export declare const QUERY_KEYS: {
7
7
  UPDATE_SESSION: string;
8
8
  SHARE_SESSION: string;
9
9
  DELETE_SESSION: string;
10
+ SESSION_PIN: string;
10
11
  SEND_FEEDBACK: string;
11
12
  GET_EXTERNAL_SESSION_INFO: string;
12
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/constants/query.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;CAWtB,CAAC"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/constants/query.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;CAYtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../../src/context/ChatContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOxE,eAAO,MAAM,WAAW,0CAgBtB,CAAC;AAEH,eAAO,MAAM,cAAc,uBAAgC,CAAC;AAE5D,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,4CAkFpD,CAAC"}
1
+ {"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../../src/context/ChatContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASxE,eAAO,MAAM,WAAW,0CAgBtB,CAAC;AAEH,eAAO,MAAM,cAAc,uBAAgC,CAAC;AAU5D,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,4CAoFpD,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { BaseResponse } from '../../types/common';
2
+ export declare const useSessionPin: () => import("@tanstack/react-query").UseMutationResult<BaseResponse<unknown> | undefined, unknown, {
3
+ sessionId: string;
4
+ pin: boolean;
5
+ }, unknown>;
6
+ //# sourceMappingURL=useSessionPin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessionPin.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/session/useSessionPin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,eAAO,MAAM,aAAa;eAST,MAAM;SACZ,OAAO;WAcjB,CAAC"}
@@ -8,6 +8,8 @@ export declare const ENDPOINTS: {
8
8
  updateSession: (sessionId: string) => string;
9
9
  shareSession: (sessionId: string) => string;
10
10
  deleteSession: (sessionId: string) => string;
11
+ pinSession: (sessionId: string) => string;
12
+ unpinSession: (sessionId: string) => string;
11
13
  sendFeedback: (sessionId: string) => string;
12
14
  generateAudio: (sessionId: string, messageId: string) => string;
13
15
  getExternalSessionInfo: (sessionId: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../../../src/services/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;oCAGU,MAAM;sCAEJ,MAAM;;;mCAIT,MAAM;kCAEP,MAAM;mCAEL,MAAM;kCAEP,MAAM;mCAEL,MAAM,aAAa,MAAM;4CAEhB,MAAM;;;;;;;;CAS7C,CAAC"}
1
+ {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../../../src/services/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;oCAGU,MAAM;sCAEJ,MAAM;;;mCAIT,MAAM;kCAEP,MAAM;mCAEL,MAAM;gCAET,MAAM;kCAEJ,MAAM;kCAEN,MAAM;mCAEL,MAAM,aAAa,MAAM;4CAEhB,MAAM;;;;;;;;CAS7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/translation/resources/i18n.ts"],"names":[],"mappings":";;;AAuEA,wBAEE"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/translation/resources/i18n.ts"],"names":[],"mappings":";;;AA2EA,wBAEE"}
@@ -84,6 +84,7 @@ export interface SessionSearchItem {
84
84
  created_at: string;
85
85
  updated_at: string;
86
86
  metadata: Record<string, any>;
87
+ pinned_at?: string;
87
88
  }
88
89
  export interface SearchSessionsRequest {
89
90
  limit: number;
@@ -1 +1 @@
1
- {"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../../../src/types/dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,WAAW,EAAE,KAAK,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EACL,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,WAAW,GACX,iBAAiB,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,WAAW,EAAE,KAAK,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EACL,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,WAAW,GACX,iBAAiB,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,EAAE,CAAC;AAEzD,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,gBAAgB,GAAG,aAAa,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAAC;IACxC,UAAU,EAAE,aAAa,GAAG,gBAAgB,GAAG,MAAM,CAAC;CACvD;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B,EAAE,MAAM,CAAC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B,EAAE,MAAM,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,EAAE,GAAG,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,YAAY,CAAC;IAC1B,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAGD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE;QACR,KAAK,EAAE,mBAAmB,EAAE,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH"}
1
+ {"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../../../src/types/dto.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,11 @@ export interface WithToastProps {
9
9
  dismiss: () => void;
10
10
  }
11
11
  export interface KBottomSheetPropsEnhance extends KBottomSheetProps {
12
- header: KBottomSheetProps['header'] & {
12
+ header?: NonNullable<KBottomSheetProps['header']> & {
13
13
  customRenderer?: (dismiss: () => void) => JSX.Element;
14
+ subTitle?: NonNullable<NonNullable<KBottomSheetProps['header']>['subTitle']> & {
15
+ numberOfLines?: number;
16
+ };
14
17
  };
15
18
  }
16
19
  export interface WithBottomSheetProps {
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/types/ui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAEJ,OAAO,EAAE,cAAc,GAAG;QAAE,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;KAAE,KACvE,IAAI,CAAC;IACV,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG;QACpC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/types/ui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAEJ,OAAO,EAAE,cAAc,GAAG;QAAE,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;KAAE,KACvE,IAAI,CAAC;IACV,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,MAAM,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,GAAG;QAClD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC;QAEtD,QAAQ,CAAC,EAAE,WAAW,CACpB,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CACrD,GAAG;YACF,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-chatbot-ai",
3
- "version": "0.1.70",
3
+ "version": "0.1.72",
4
4
  "description": "React Native library for Chatbot AI",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -61,7 +61,7 @@
61
61
  "devDependencies": {
62
62
  "@commitlint/config-conventional": "^19.8.1",
63
63
  "@d11/react-native-fast-image": "8.12.0",
64
- "@droppii/libs": "git+ssh://git@github.com:droppii/mobile-components.git#v1.0.88",
64
+ "@droppii/libs": "git+ssh://git@github.com:droppii/mobile-components.git#v1.1.13",
65
65
  "@eslint/compat": "^1.3.2",
66
66
  "@eslint/eslintrc": "^3.3.1",
67
67
  "@eslint/js": "^9.35.0",
@@ -44,12 +44,19 @@ const SessionItem = memo<SessionItemProps>(({ item, isActive, onPress }) => {
44
44
  </KLabel.Text>
45
45
  </KContainer.Touchable>
46
46
  {/* @ts-ignore */}
47
+ <KContainer.VisibleView visible={!!item?.pinned_at}>
48
+ <KImage.VectorIcons
49
+ name="thumbtack-b"
50
+ size={16}
51
+ color={KColors.gray.light}
52
+ style={styles.pinIcon}
53
+ />
54
+ </KContainer.VisibleView>
47
55
  <KContainer.Touchable onPress={handlePressOptions}>
48
56
  <KImage.VectorIcons
49
57
  name="more-horizontal-b"
50
58
  size={20}
51
59
  color={KColors.gray.dark}
52
- style={styles.menuIcon}
53
60
  />
54
61
  </KContainer.Touchable>
55
62
  </KContainer.View>
@@ -74,9 +81,10 @@ const styles = StyleSheet.create({
74
81
  },
75
82
  sessionItemTouchable: {
76
83
  flex: 1,
84
+ marginRight: KSpacingValue['0.5rem'],
77
85
  },
78
- menuIcon: {
79
- marginLeft: KSpacingValue['0.5rem'],
86
+ pinIcon: {
87
+ marginRight: KSpacingValue['0.25rem'],
80
88
  },
81
89
  });
82
90
 
@@ -1,3 +1,4 @@
1
+ import { useCallback } from 'react';
1
2
  import { StyleSheet } from 'react-native';
2
3
  import {
3
4
  KContainer,
@@ -13,6 +14,8 @@ import { openRenameSessionPopup } from './RenameSessionPopup';
13
14
  import { openShareSessionPopup } from './ShareSessionPopup';
14
15
  import { openDeleteSessionPopup } from './DeleteSessionPopup';
15
16
  import { GAEvents } from '../../constants/events';
17
+ import { useSessionPin } from '../../hooks/session/useSessionPin';
18
+ import { useChatContext } from '../../context/ChatContext';
16
19
 
17
20
  interface OptionItemProps {
18
21
  icon: string;
@@ -36,6 +39,105 @@ const OptionItem = ({ icon, label, onPress, isDanger }: OptionItemProps) => {
36
39
  );
37
40
  };
38
41
 
42
+ const isSessionPinned = (session: SessionSearchItem) => !!session.pinned_at;
43
+
44
+ interface SessionOptionsSheetBodyProps {
45
+ session: SessionSearchItem;
46
+ onPinPress: () => void;
47
+ onRename: () => void;
48
+ onShare: () => void;
49
+ onDelete: () => void;
50
+ }
51
+
52
+ const SessionOptionsSheetBody = ({
53
+ session,
54
+ onPinPress,
55
+ onRename,
56
+ onShare,
57
+ onDelete,
58
+ }: SessionOptionsSheetBodyProps) => {
59
+ const pinned = isSessionPinned(session);
60
+
61
+ return (
62
+ // @ts-ignore
63
+ <KContainer.View style={styles.container}>
64
+ <OptionItem
65
+ icon={pinned ? 'thumbtack-off-o' : 'thumbtack-o'}
66
+ label={trans(pinned ? 'session_unpin' : 'session_pin')}
67
+ onPress={onPinPress}
68
+ />
69
+ <KContainer.View style={styles.divider} />
70
+ <OptionItem
71
+ icon="edit-o"
72
+ label={trans('session_rename')}
73
+ onPress={onRename}
74
+ />
75
+ {/* @ts-ignore */}
76
+ <KContainer.View style={styles.divider} />
77
+ <OptionItem
78
+ icon="share-glob-o"
79
+ label={trans('session_share')}
80
+ onPress={onShare}
81
+ />
82
+ {/* @ts-ignore */}
83
+ <KContainer.View style={styles.divider} />
84
+ <OptionItem
85
+ icon="trash-alt-o-1"
86
+ label={trans('session_delete')}
87
+ onPress={onDelete}
88
+ isDanger
89
+ />
90
+ </KContainer.View>
91
+ );
92
+ };
93
+
94
+ interface SessionOptionsProps {
95
+ session: SessionSearchItem;
96
+ onRename: () => void;
97
+ onShare: () => void;
98
+ onDelete: () => void;
99
+ }
100
+
101
+ const SessionOptions = ({
102
+ session,
103
+ onRename,
104
+ onShare,
105
+ onDelete,
106
+ }: SessionOptionsProps) => {
107
+ const { mutateAsync: setSessionPin } = useSessionPin();
108
+ const { notifyError } = useChatContext();
109
+ const pinned = isSessionPinned(session);
110
+
111
+ const handlePinPress = useCallback(async () => {
112
+ try {
113
+ await setSessionPin({ sessionId: session.id, pin: !pinned });
114
+ UIUtils.bottomSheet.dismiss();
115
+ UIUtils.toast.open({
116
+ title: trans(pinned ? 'unpin_session_success' : 'pin_session_success'),
117
+ });
118
+ } catch (err) {
119
+ const errorObj = err instanceof Error ? err : new Error(String(err));
120
+ notifyError?.({
121
+ errorClass: 'ChatbotAI',
122
+ errorMessage: errorObj.message,
123
+ name: 'SessionPinError',
124
+ message: `Session pin error id: ${session?.id}, error: ${errorObj.message}`,
125
+ stack: errorObj?.stack,
126
+ });
127
+ }
128
+ }, [pinned, session.id, setSessionPin, notifyError]);
129
+
130
+ return (
131
+ <SessionOptionsSheetBody
132
+ session={session}
133
+ onPinPress={handlePinPress}
134
+ onRename={onRename}
135
+ onShare={onShare}
136
+ onDelete={onDelete}
137
+ />
138
+ );
139
+ };
140
+
39
141
  export const openSessionOptionsBottomSheet = (
40
142
  session: SessionSearchItem,
41
143
  closeDrawer?: () => void,
@@ -43,7 +145,6 @@ export const openSessionOptionsBottomSheet = (
43
145
  ) => {
44
146
  const handleRename = () => {
45
147
  UIUtils.bottomSheet.dismiss();
46
- // Close drawer first, then open popup
47
148
  closeDrawer?.();
48
149
  setTimeout(() => {
49
150
  openRenameSessionPopup(session, () => {
@@ -60,7 +161,6 @@ export const openSessionOptionsBottomSheet = (
60
161
 
61
162
  const handleShare = () => {
62
163
  UIUtils.bottomSheet.dismiss();
63
- // Close drawer first, then open popup
64
164
  closeDrawer?.();
65
165
  setTimeout(() => {
66
166
  openShareSessionPopup(session);
@@ -72,51 +172,30 @@ export const openSessionOptionsBottomSheet = (
72
172
 
73
173
  const handleDelete = () => {
74
174
  UIUtils.bottomSheet.dismiss();
75
- // Close drawer first, then open popup
76
175
  closeDrawer?.();
77
176
  setTimeout(() => {
78
177
  openDeleteSessionPopup(session, logGA);
79
178
  }, 300);
80
179
  };
81
180
 
82
- const OptionsContent = () => {
83
- return (
84
- // @ts-ignore
85
- <KContainer.View style={styles.container}>
86
- <OptionItem
87
- icon="edit-o"
88
- label={trans('session_rename')}
89
- onPress={handleRename}
90
- />
91
- {/* @ts-ignore */}
92
- <KContainer.View style={styles.divider} />
93
- <OptionItem
94
- icon="share-glob-o"
95
- label={trans('session_share')}
96
- onPress={handleShare}
97
- />
98
- {/* @ts-ignore */}
99
- <KContainer.View style={styles.divider} />
100
- <OptionItem
101
- icon="trash-alt-o-1"
102
- label={trans('session_delete')}
103
- onPress={handleDelete}
104
- isDanger
105
- />
106
- </KContainer.View>
107
- );
108
- };
109
-
110
181
  UIUtils.bottomSheet.open({
111
182
  header: {
112
183
  title: {
113
184
  text: trans('session_options_title'),
114
185
  },
186
+ subTitle: { text: session?.title, numberOfLines: 1 },
115
187
  showCloseButton: true,
116
188
  alignment: 'left',
117
189
  },
118
190
  body: {
119
- renderContent: () => <OptionsContent />,
191
+ renderContent: () => (
192
+ <SessionOptions
193
+ session={session}
194
+ onRename={handleRename}
195
+ onShare={handleShare}
196
+ onDelete={handleDelete}
197
+ />
198
+ ),
120
199
  },
121
200
  touchOutsideToDismiss: true,
122
201
  });
@@ -18,6 +18,7 @@ import {
18
18
  import { GAEvents } from '../../../constants/events';
19
19
  import useSessionStore from '../../../store/session';
20
20
  import { useChatContext } from '../../../context/ChatContext';
21
+ import { IS_IOS } from '../../../constants';
21
22
 
22
23
  interface Props {
23
24
  suggestions?: ISuggestionItem[];
@@ -189,6 +190,7 @@ const SuggestionsBar = ({
189
190
  keyExtractor={keyExtractor}
190
191
  horizontal
191
192
  renderItem={renderItem}
193
+ style={styles.flatListContainer}
192
194
  contentContainerStyle={styles.contentContainer}
193
195
  onScroll={onScroll}
194
196
  scrollEventThrottle={16}
@@ -235,6 +237,10 @@ const styles = StyleSheet.create({
235
237
  wrapper: {
236
238
  position: 'relative',
237
239
  },
240
+ flatListContainer: {
241
+ paddingBottom: IS_IOS ? 8 : 6,
242
+ marginBottom: -(IS_IOS ? 8 : 6),
243
+ },
238
244
  contentContainer: {
239
245
  gap: KSpacingValue['0.25rem'],
240
246
  paddingHorizontal: KSpacingValue['0.5rem'],
@@ -171,6 +171,7 @@ const ChatFooter = ({ lastMessage }: IChatFooterProps) => {
171
171
  renderItem={renderUploadItem}
172
172
  horizontal
173
173
  keyExtractor={uploadItemKeyExtractor}
174
+ style={styles.flatListContainer}
174
175
  contentContainerStyle={styles.listUploadItem}
175
176
  />
176
177
  </KContainer.View>
@@ -271,6 +272,10 @@ const styles = StyleSheet.create({
271
272
  fontFamily: KFonts.regular,
272
273
  marginVertical: IS_IOS ? 0 : -8,
273
274
  },
275
+ flatListContainer: {
276
+ paddingBottom: IS_IOS ? 8 : 6,
277
+ marginBottom: -(IS_IOS ? 8 : 6),
278
+ },
274
279
  listUploadItem: {
275
280
  gap: KSpacingValue['0.75rem'],
276
281
  paddingHorizontal: KSpacingValue['0.5rem'],
@@ -173,7 +173,7 @@ const BottomSheet = forwardRef<WithBottomSheetProps>((_, ref) => {
173
173
  <KLabel.Text
174
174
  typo={subTitle.typo || 'TextSmNormal'}
175
175
  color={subTitle.color || KColors.gray.light}
176
- numberOfLines={2}
176
+ numberOfLines={data?.header?.subTitle?.numberOfLines || 2}
177
177
  marginT="0.25rem"
178
178
  >
179
179
  {subTitle.text}
@@ -7,6 +7,7 @@ export const QUERY_KEYS = {
7
7
  UPDATE_SESSION: 'UPDATE_SESSION',
8
8
  SHARE_SESSION: 'SHARE_SESSION',
9
9
  DELETE_SESSION: 'DELETE_SESSION',
10
+ SESSION_PIN: 'SESSION_PIN',
10
11
  SEND_FEEDBACK: 'SEND_FEEDBACK',
11
12
  GET_EXTERNAL_SESSION_INFO: 'GET_EXTERNAL_SESSION_INFO',
12
13
  };
@@ -1,10 +1,13 @@
1
1
  import { createContext, useContext, useEffect, useRef, useState } from 'react';
2
+ import { StyleSheet } from 'react-native';
2
3
  import type { ChatContextType, ChatProviderProps } from '../types/chat';
3
4
  import ChatBotAI from '../components/chat';
4
5
  import Portal from '../components/portal';
5
6
  import ReanimatedDrawerExample from '../components/Drawer';
6
7
  import useSessionStore from '../store/session';
7
8
  import useStreamMessageStore from '../store/streamMessage';
9
+ import { Z_INDEX_PRIORITY } from '../constants';
10
+ import { KContainer } from '@droppii/libs';
8
11
 
9
12
  export const ChatContext = createContext<ChatContextType>({
10
13
  apiAddress: '',
@@ -26,6 +29,14 @@ export const ChatContext = createContext<ChatContextType>({
26
29
 
27
30
  export const useChatContext = () => useContext(ChatContext);
28
31
 
32
+ const styles = StyleSheet.create({
33
+ root: { flex: 1 },
34
+ portalLayer: {
35
+ ...StyleSheet.absoluteFillObject,
36
+ zIndex: Z_INDEX_PRIORITY.popup,
37
+ },
38
+ });
39
+
29
40
  export const ChatProvider = (props: ChatProviderProps) => {
30
41
  const ref = useRef<any>(null);
31
42
  const spanRef = useRef<any>(null);
@@ -100,12 +111,14 @@ export const ChatProvider = (props: ChatProviderProps) => {
100
111
  setTabIndex,
101
112
  }}
102
113
  >
103
- <ReanimatedDrawerExample ref={ref}>
104
- <>
114
+ <KContainer.View style={styles.root}>
115
+ <ReanimatedDrawerExample ref={ref}>
105
116
  <ChatBotAI />
117
+ </ReanimatedDrawerExample>
118
+ <KContainer.View style={styles.portalLayer} pointerEvents="box-none">
106
119
  <Portal />
107
- </>
108
- </ReanimatedDrawerExample>
120
+ </KContainer.View>
121
+ </KContainer.View>
109
122
  </ChatContext.Provider>
110
123
  );
111
124
  };
@@ -0,0 +1,31 @@
1
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
2
+ import { QUERY_KEYS } from '../../constants/query';
3
+ import { apiInstance } from '../../services/apis';
4
+ import { ENDPOINTS } from '../../services/endpoints';
5
+ import { BaseResponse } from '../../types/common';
6
+
7
+ export const useSessionPin = () => {
8
+ const queryClient = useQueryClient();
9
+
10
+ return useMutation({
11
+ mutationKey: [QUERY_KEYS.SESSION_PIN],
12
+ mutationFn: async ({
13
+ sessionId,
14
+ pin,
15
+ }: {
16
+ sessionId: string;
17
+ pin: boolean;
18
+ }) => {
19
+ const url = pin
20
+ ? ENDPOINTS.assistantService.pinSession(sessionId)
21
+ : ENDPOINTS.assistantService.unpinSession(sessionId);
22
+ const res = await apiInstance?.put<BaseResponse<unknown>>(url);
23
+ return res?.data;
24
+ },
25
+ onSuccess: () => {
26
+ queryClient.refetchQueries({
27
+ queryKey: [QUERY_KEYS.SEARCH_SESSIONS],
28
+ });
29
+ },
30
+ });
31
+ };
@@ -13,6 +13,10 @@ export const ENDPOINTS = {
13
13
  `/assistant-service/v1/app/chat/sessions/${sessionId}/share`,
14
14
  deleteSession: (sessionId: string) =>
15
15
  `/assistant-service/v1/app/chat/sessions/${sessionId}`,
16
+ pinSession: (sessionId: string) =>
17
+ `/assistant-service/v1/app/chat/sessions/${sessionId}/pin`,
18
+ unpinSession: (sessionId: string) =>
19
+ `/assistant-service/v1/app/chat/sessions/${sessionId}/unpin`,
16
20
  sendFeedback: (sessionId: string) =>
17
21
  `/assistant-service/v1/app/chat/sessions/${sessionId}/feedback`,
18
22
  generateAudio: (sessionId: string, messageId: string) =>
@@ -8,9 +8,13 @@ const i18nKey: Record<string, string> = {
8
8
 
9
9
  // Session options
10
10
  session_options_title: 'Tuỳ chọn phiên chat',
11
+ session_pin: 'Ghim',
12
+ session_unpin: 'Bỏ ghim',
11
13
  session_rename: 'Đổi tên',
12
14
  session_share: 'Chia sẻ',
13
15
  session_delete: 'Xoá',
16
+ pin_session_success: 'Đã ghim phiên chat',
17
+ unpin_session_success: 'Đã bỏ ghim phiên chat',
14
18
 
15
19
  // Attachment bottom sheet
16
20
  attachment_options_title: 'Tuỳ chọn thêm',
package/src/types/dto.ts CHANGED
@@ -104,6 +104,7 @@ export interface SessionSearchItem {
104
104
  created_at: string;
105
105
  updated_at: string;
106
106
  metadata: Record<string, any>;
107
+ pinned_at?: string;
107
108
  }
108
109
 
109
110
  export interface SearchSessionsRequest {
package/src/types/ui.ts CHANGED
@@ -14,8 +14,14 @@ export interface WithToastProps {
14
14
  }
15
15
 
16
16
  export interface KBottomSheetPropsEnhance extends KBottomSheetProps {
17
- header: KBottomSheetProps['header'] & {
17
+ header?: NonNullable<KBottomSheetProps['header']> & {
18
18
  customRenderer?: (dismiss: () => void) => JSX.Element;
19
+
20
+ subTitle?: NonNullable<
21
+ NonNullable<KBottomSheetProps['header']>['subTitle']
22
+ > & {
23
+ numberOfLines?: number;
24
+ };
19
25
  };
20
26
  }
21
27