react-native-chatbot-ai 0.1.18 → 0.1.19

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.
@@ -28,12 +28,15 @@ const SessionList = /*#__PURE__*/memo(({
28
28
  onPress: onPressSession
29
29
  }), [onPressSession]);
30
30
  const keyExtractor = useCallback(item => item.id, []);
31
- return /*#__PURE__*/_jsx(FlashList, {
31
+ return /*#__PURE__*/ /* @ts-expect-error - FlashList type issue */_jsx(FlashList, {
32
32
  data: sessions,
33
33
  renderItem: renderItem,
34
34
  keyExtractor: keyExtractor,
35
35
  contentContainerStyle: styles.listContainer,
36
- refreshControl: /*#__PURE__*/_jsx(RefreshControl, {
36
+ refreshControl:
37
+ /*#__PURE__*/
38
+ /* @ts-expect-error - React Native RefreshControl type issue */
39
+ _jsx(RefreshControl, {
37
40
  refreshing: isRefetching,
38
41
  onRefresh: onRefresh
39
42
  }),
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useCallback","StyleSheet","RefreshControl","FlashList","KSpacingValue","SessionItem","EmptyState","KContainer","jsx","_jsx","ItemSeparator","View","height","SessionList","sessions","activeSessionId","_activeSessionId","isLoading","isRefetching","onPressSession","onRefresh","onEndReached","renderItem","item","isActive","onPress","keyExtractor","id","data","contentContainerStyle","styles","listContainer","refreshControl","refreshing","onEndReachedThreshold","ItemSeparatorComponent","estimatedItemSize","ListEmptyComponent","displayName","create","flexGrow","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["components/Drawer/SessionList.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,QAAQ,OAAO;AACzC,SAASC,UAAU,EAAEC,cAAc,QAAQ,cAAc;AACzD,SAASC,SAAS,QAAQ,qBAAqB;AAC/C,SAASC,aAAa,QAAQ,eAAe;AAE7C,OAAOC,WAAW,MAAM,kBAAe;AACvC,OAAOC,UAAU,MAAM,iBAAc;AACrC,SAASC,UAAU,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3C,MAAMC,aAAa,GAAGA,CAAA,kBAAMD,IAAA,CAACF,UAAU,CAACI,IAAI;EAACC,MAAM,EAAE;AAAE,CAAE,CAAC;AAc1D,MAAMC,WAAW,gBAAGd,IAAI,CACtB,CAAC;EACCe,QAAQ;EACRC,eAAe,EAAEC,gBAAgB;EACjCC,SAAS;EACTC,YAAY;EACZC,cAAc;EACdC,SAAS;EACTC;AACF,CAAC,KAAK;EACJ,MAAMC,UAAU,GAAGtB,WAAW,CAC5B,CAAC;IAAEuB;EAAkC,CAAC,kBACpCd,IAAA,CAACJ,WAAW;IAACkB,IAAI,EAAEA,IAAK;IAACC,QAAQ,EAAE,KAAM;IAACC,OAAO,EAAEN;EAAe,CAAE,CACrE,EACD,CAACA,cAAc,CACjB,CAAC;EAED,MAAMO,YAAY,GAAG1B,WAAW,CAAEuB,IAAuB,IAAKA,IAAI,CAACI,EAAE,EAAE,EAAE,CAAC;EAE1E,oBACElB,IAAA,CAACN,SAAS;IACRyB,IAAI,EAAEd,QAAS;IACfQ,UAAU,EAAEA,UAAW;IACvBI,YAAY,EAAEA,YAAa;IAC3BG,qBAAqB,EAAEC,MAAM,CAACC,aAAc;IAC5CC,cAAc,eACZvB,IAAA,CAACP,cAAc;MAAC+B,UAAU,EAAEf,YAAa;MAACE,SAAS,EAAEA;IAAU,CAAE,CAClE;IACDC,YAAY,EAAEA,YAAa;IAC3Ba,qBAAqB,EAAE,GAAI;IAC3BC,sBAAsB,EAAEzB,aAAc;IACtC0B,iBAAiB,EAAE,EAAG;IACtBC,kBAAkB,EAAE,CAACpB,SAAS,gBAAGR,IAAA,CAACH,UAAU,IAAE,CAAC,GAAG;EAAK,CACxD,CAAC;AAEN,CACF,CAAC;AAEDO,WAAW,CAACyB,WAAW,GAAG,aAAa;AAEvC,MAAMR,MAAM,GAAG7B,UAAU,CAACsC,MAAM,CAAC;EAC/BR,aAAa,EAAE;IACbS,QAAQ,EAAE,CAAC;IACXC,iBAAiB,EAAErC,aAAa,CAAC,MAAM;EACzC;AACF,CAAC,CAAC;AAEF,eAAeS,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["memo","useCallback","StyleSheet","RefreshControl","FlashList","KSpacingValue","SessionItem","EmptyState","KContainer","jsx","_jsx","ItemSeparator","View","height","SessionList","sessions","activeSessionId","_activeSessionId","isLoading","isRefetching","onPressSession","onRefresh","onEndReached","renderItem","item","isActive","onPress","keyExtractor","id","data","contentContainerStyle","styles","listContainer","refreshControl","refreshing","onEndReachedThreshold","ItemSeparatorComponent","estimatedItemSize","ListEmptyComponent","displayName","create","flexGrow","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["components/Drawer/SessionList.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,QAAQ,OAAO;AACzC,SAASC,UAAU,EAAEC,cAAc,QAAQ,cAAc;AACzD,SAASC,SAAS,QAAQ,qBAAqB;AAC/C,SAASC,aAAa,QAAQ,eAAe;AAE7C,OAAOC,WAAW,MAAM,kBAAe;AACvC,OAAOC,UAAU,MAAM,iBAAc;AACrC,SAASC,UAAU,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3C,MAAMC,aAAa,GAAGA,CAAA,kBAAMD,IAAA,CAACF,UAAU,CAACI,IAAI;EAACC,MAAM,EAAE;AAAE,CAAE,CAAC;AAc1D,MAAMC,WAAW,gBAAGd,IAAI,CACtB,CAAC;EACCe,QAAQ;EACRC,eAAe,EAAEC,gBAAgB;EACjCC,SAAS;EACTC,YAAY;EACZC,cAAc;EACdC,SAAS;EACTC;AACF,CAAC,KAAK;EACJ,MAAMC,UAAU,GAAGtB,WAAW,CAC5B,CAAC;IAAEuB;EAAkC,CAAC,kBACpCd,IAAA,CAACJ,WAAW;IAACkB,IAAI,EAAEA,IAAK;IAACC,QAAQ,EAAE,KAAM;IAACC,OAAO,EAAEN;EAAe,CAAE,CACrE,EACD,CAACA,cAAc,CACjB,CAAC;EAED,MAAMO,YAAY,GAAG1B,WAAW,CAAEuB,IAAuB,IAAKA,IAAI,CAACI,EAAE,EAAE,EAAE,CAAC;EAE1E,qBACE,6CACAlB,IAAA,CAACN,SAAS;IACRyB,IAAI,EAAEd,QAAS;IACfQ,UAAU,EAAEA,UAAW;IACvBI,YAAY,EAAEA,YAAa;IAC3BG,qBAAqB,EAAEC,MAAM,CAACC,aAAc;IAC5CC,cAAc;IAAA;IACZ;IACAvB,IAAA,CAACP,cAAc;MAAC+B,UAAU,EAAEf,YAAa;MAACE,SAAS,EAAEA;IAAU,CAAE,CAClE;IACDC,YAAY,EAAEA,YAAa;IAC3Ba,qBAAqB,EAAE,GAAI;IAC3BC,sBAAsB,EAAEzB,aAAc;IACtC0B,iBAAiB,EAAE,EAAG;IACtBC,kBAAkB,EAAE,CAACpB,SAAS,gBAAGR,IAAA,CAACH,UAAU,IAAE,CAAC,GAAG;EAAK,CACxD,CAAC;AAEN,CACF,CAAC;AAEDO,WAAW,CAACyB,WAAW,GAAG,aAAa;AAEvC,MAAMR,MAAM,GAAG7B,UAAU,CAACsC,MAAM,CAAC;EAC/BR,aAAa,EAAE;IACbS,QAAQ,EAAE,CAAC;IACXC,iBAAiB,EAAErC,aAAa,CAAC,MAAM;EACzC;AACF,CAAC,CAAC;AAEF,eAAeS,WAAW","ignoreList":[]}
@@ -20,10 +20,37 @@ export const useSearchSessions = (enabled = true, searchTerm) => {
20
20
  search_term: searchTerm.trim()
21
21
  })
22
22
  });
23
- return res?.data;
23
+ const response = res?.data;
24
+
25
+ // Validate response structure
26
+ if (!response) {
27
+ throw new Error('No response received from API');
28
+ }
29
+
30
+ // Check for successful response: HTTP status 200 and API statusCode 0
31
+ if (res?.status !== 200 || response?.statusCode !== 0) {
32
+ return {
33
+ ...response,
34
+ data: []
35
+ };
36
+ }
37
+
38
+ // Ensure data is an array
39
+ if (!Array.isArray(response?.data)) {
40
+ // If data is not an array, return empty array to prevent crashes
41
+ return {
42
+ ...response,
43
+ data: []
44
+ };
45
+ }
46
+ return response;
24
47
  },
25
48
  getNextPageParam: (lastPage, allPages) => {
26
- const currentData = lastPage?.data || [];
49
+ // Validate that data exists and is an array
50
+ if (!lastPage || !Array.isArray(lastPage.data)) {
51
+ return undefined;
52
+ }
53
+ const currentData = lastPage.data;
27
54
  if (currentData.length < LIMIT) {
28
55
  return undefined;
29
56
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useInfiniteQuery","useCallback","QUERY_KEYS","apiInstance","ENDPOINTS","LIMIT","useSearchSessions","enabled","searchTerm","queryKey","SEARCH_SESSIONS","query","queryFn","pageParam","res","post","assistantService","searchSessions","limit","offset","trim","search_term","data","getNextPageParam","lastPage","allPages","currentData","length","undefined","initialPageParam","staleTime","refetchPageOne","refetch","refetchPage","_page","index"],"sourceRoot":"../../../../src","sources":["hooks/session/useSearchSessions.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,WAAW,QAAQ,OAAO;AACnC,SAASC,UAAU,QAAQ,0BAAuB;AAClD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,SAAS,QAAQ,6BAA0B;AAIpD,MAAMC,KAAK,GAAG,EAAE;AAEhB,OAAO,MAAMC,iBAAiB,GAAGA,CAC/BC,OAAgB,GAAG,IAAI,EACvBC,UAAmB,KAChB;EACH,MAAMC,QAAQ,GAAG,CAACP,UAAU,CAACQ,eAAe,EAAEF,UAAU,CAAC;EAEzD,MAAMG,KAAK,GAAGX,gBAAgB,CAAC;IAC7BS,QAAQ;IACRG,OAAO,EAAE,MAAAA,CAAO;MAAEC,SAAS,GAAG;IAAyB,CAAC,KAAK;MAC3D,MAAMC,GAAG,GAAG,MAAMX,WAAW,EAAEY,IAAI,CACjCX,SAAS,CAACY,gBAAgB,CAACC,cAAc,EACzC;QACEC,KAAK,EAAEb,KAAK;QACZc,MAAM,EAAEN,SAAS;QACjB,IAAIL,UAAU,EAAEY,IAAI,CAAC,CAAC,IAAI;UAAEC,WAAW,EAAEb,UAAU,CAACY,IAAI,CAAC;QAAE,CAAC;MAC9D,CACF,CAAC;MACD,OAAON,GAAG,EAAEQ,IAAI;IAClB,CAAC;IACDC,gBAAgB,EAAEA,CAChBC,QAA8C,EAC9CC,QAAgD,KAC7C;MACH,MAAMC,WAAW,GAAGF,QAAQ,EAAEF,IAAI,IAAI,EAAE;MACxC,IAAII,WAAW,CAACC,MAAM,GAAGtB,KAAK,EAAE;QAC9B,OAAOuB,SAAS;MAClB;MACA,OAAOH,QAAQ,CAACE,MAAM,GAAGtB,KAAK;IAChC,CAAC;IACDwB,gBAAgB,EAAE,CAAC;IACnBtB,OAAO,EAAE,CAAC,CAACJ,WAAW,IAAII,OAAO;IACjCuB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAE;EAC5B,CAAC,CAAC;;EAEF;EACA,MAAMC,cAAc,GAAG9B,WAAW,CAAC,YAAY;IAC7C;IACA;IACA;IACA,OAAOU,KAAK,CAACqB,OAAO,CAAC;MACnBC,WAAW,EAAEA,CACXC,KAA2C,EAC3CC,KAAa,KACVA,KAAK,KAAK;IACjB,CAAC,CAAC;EACJ,CAAC,EAAE,CAACxB,KAAK,CAAC,CAAC;EAEX,OAAO;IACL,GAAGA,KAAK;IACRqB,OAAO,EAAED;EACX,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useInfiniteQuery","useCallback","QUERY_KEYS","apiInstance","ENDPOINTS","LIMIT","useSearchSessions","enabled","searchTerm","queryKey","SEARCH_SESSIONS","query","queryFn","pageParam","res","post","assistantService","searchSessions","limit","offset","trim","search_term","response","data","Error","status","statusCode","Array","isArray","getNextPageParam","lastPage","allPages","undefined","currentData","length","initialPageParam","staleTime","refetchPageOne","refetch","refetchPage","_page","index"],"sourceRoot":"../../../../src","sources":["hooks/session/useSearchSessions.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,WAAW,QAAQ,OAAO;AACnC,SAASC,UAAU,QAAQ,0BAAuB;AAClD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,SAAS,QAAQ,6BAA0B;AAIpD,MAAMC,KAAK,GAAG,EAAE;AAEhB,OAAO,MAAMC,iBAAiB,GAAGA,CAC/BC,OAAgB,GAAG,IAAI,EACvBC,UAAmB,KAChB;EACH,MAAMC,QAAQ,GAAG,CAACP,UAAU,CAACQ,eAAe,EAAEF,UAAU,CAAC;EAEzD,MAAMG,KAAK,GAAGX,gBAAgB,CAAC;IAC7BS,QAAQ;IACRG,OAAO,EAAE,MAAAA,CAAO;MAAEC,SAAS,GAAG;IAAyB,CAAC,KAAK;MAC3D,MAAMC,GAAG,GAAG,MAAMX,WAAW,EAAEY,IAAI,CACjCX,SAAS,CAACY,gBAAgB,CAACC,cAAc,EACzC;QACEC,KAAK,EAAEb,KAAK;QACZc,MAAM,EAAEN,SAAS;QACjB,IAAIL,UAAU,EAAEY,IAAI,CAAC,CAAC,IAAI;UAAEC,WAAW,EAAEb,UAAU,CAACY,IAAI,CAAC;QAAE,CAAC;MAC9D,CACF,CAAC;MAED,MAAME,QAAQ,GAAGR,GAAG,EAAES,IAAI;;MAE1B;MACA,IAAI,CAACD,QAAQ,EAAE;QACb,MAAM,IAAIE,KAAK,CAAC,+BAA+B,CAAC;MAClD;;MAEA;MACA,IAAIV,GAAG,EAAEW,MAAM,KAAK,GAAG,IAAIH,QAAQ,EAAEI,UAAU,KAAK,CAAC,EAAE;QACrD,OAAO;UACL,GAAGJ,QAAQ;UACXC,IAAI,EAAE;QACR,CAAC;MACH;;MAEA;MACA,IAAI,CAACI,KAAK,CAACC,OAAO,CAACN,QAAQ,EAAEC,IAAI,CAAC,EAAE;QAClC;QACA,OAAO;UACL,GAAGD,QAAQ;UACXC,IAAI,EAAE;QACR,CAAC;MACH;MAEA,OAAOD,QAAQ;IACjB,CAAC;IACDO,gBAAgB,EAAEA,CAChBC,QAA8C,EAC9CC,QAAgD,KAC7C;MACH;MACA,IAAI,CAACD,QAAQ,IAAI,CAACH,KAAK,CAACC,OAAO,CAACE,QAAQ,CAACP,IAAI,CAAC,EAAE;QAC9C,OAAOS,SAAS;MAClB;MAEA,MAAMC,WAAW,GAAGH,QAAQ,CAACP,IAAI;MACjC,IAAIU,WAAW,CAACC,MAAM,GAAG7B,KAAK,EAAE;QAC9B,OAAO2B,SAAS;MAClB;MACA,OAAOD,QAAQ,CAACG,MAAM,GAAG7B,KAAK;IAChC,CAAC;IACD8B,gBAAgB,EAAE,CAAC;IACnB5B,OAAO,EAAE,CAAC,CAACJ,WAAW,IAAII,OAAO;IACjC6B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAE;EAC5B,CAAC,CAAC;;EAEF;EACA,MAAMC,cAAc,GAAGpC,WAAW,CAAC,YAAY;IAC7C;IACA;IACA;IACA,OAAOU,KAAK,CAAC2B,OAAO,CAAC;MACnBC,WAAW,EAAEA,CACXC,KAA2C,EAC3CC,KAAa,KACVA,KAAK,KAAK;IACjB,CAAC,CAAC;EACJ,CAAC,EAAE,CAAC9B,KAAK,CAAC,CAAC;EAEX,OAAO;IACL,GAAGA,KAAK;IACR2B,OAAO,EAAED;EACX,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1,25 +1,25 @@
1
1
  "use strict";
2
2
 
3
- import 'intl-pluralrules';
4
3
  import i18n from 'i18next';
5
4
  import { initReactI18next } from 'react-i18next';
6
5
  import vi from "./resources/vi.js";
7
- i18n.use(initReactI18next).init({
8
- compatibilityJSON: 'v3',
9
- resources: {
10
- vi: {
11
- chatbot: vi
12
- }
13
- },
14
- lng: 'vi',
15
- // default
16
- fallbackLng: 'vi',
17
- interpolation: {
18
- escapeValue: false
19
- },
20
- ns: ['chatbot'],
21
- defaultNS: 'chatbot'
22
- });
6
+ if (!i18n.isInitialized) {
7
+ i18n.use(initReactI18next).init({
8
+ resources: {
9
+ vi: {
10
+ chatbot: vi
11
+ }
12
+ },
13
+ lng: 'vi',
14
+ // default
15
+ fallbackLng: 'vi',
16
+ interpolation: {
17
+ escapeValue: false
18
+ },
19
+ ns: ['chatbot'],
20
+ defaultNS: 'chatbot'
21
+ });
22
+ }
23
23
 
24
24
  //@ts-ignore
25
25
  const trans = (...args) => i18n.t(...args);
@@ -1 +1 @@
1
- {"version":3,"names":["i18n","initReactI18next","vi","use","init","compatibilityJSON","resources","chatbot","lng","fallbackLng","interpolation","escapeValue","ns","defaultNS","trans","args","t"],"sourceRoot":"../../../src","sources":["translation/index.ts"],"mappings":";;AAAA,OAAO,kBAAkB;AACzB,OAAOA,IAAI,MAAM,SAAS;AAC1B,SAASC,gBAAgB,QAAQ,eAAe;AAChD,OAAOC,EAAE,MAAM,mBAAgB;AAE/BF,IAAI,CAACG,GAAG,CAACF,gBAAgB,CAAC,CAACG,IAAI,CAAC;EAC9BC,iBAAiB,EAAE,IAAI;EACvBC,SAAS,EAAE;IACTJ,EAAE,EAAE;MAAEK,OAAO,EAAEL;IAAG;EACpB,CAAC;EACDM,GAAG,EAAE,IAAI;EAAE;EACXC,WAAW,EAAE,IAAI;EACjBC,aAAa,EAAE;IAAEC,WAAW,EAAE;EAAM,CAAC;EACrCC,EAAE,EAAE,CAAC,SAAS,CAAC;EACfC,SAAS,EAAE;AACb,CAAC,CAAC;;AAEF;AACA,MAAMC,KAAK,GAAGA,CAAC,GAAGC,IAAI,KAAKf,IAAI,CAACgB,CAAC,CAAC,GAAGD,IAAI,CAAQ;AAEjD,SAASf,IAAI;AACb,eAAec,KAAK","ignoreList":[]}
1
+ {"version":3,"names":["i18n","initReactI18next","vi","isInitialized","use","init","resources","chatbot","lng","fallbackLng","interpolation","escapeValue","ns","defaultNS","trans","args","t"],"sourceRoot":"../../../src","sources":["translation/index.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;AAC1B,SAASC,gBAAgB,QAAQ,eAAe;AAChD,OAAOC,EAAE,MAAM,mBAAgB;AAE/B,IAAI,CAACF,IAAI,CAACG,aAAa,EAAE;EACvBH,IAAI,CAACI,GAAG,CAACH,gBAAgB,CAAC,CAACI,IAAI,CAAC;IAC9BC,SAAS,EAAE;MACTJ,EAAE,EAAE;QAAEK,OAAO,EAAEL;MAAG;IACpB,CAAC;IACDM,GAAG,EAAE,IAAI;IAAE;IACXC,WAAW,EAAE,IAAI;IACjBC,aAAa,EAAE;MAAEC,WAAW,EAAE;IAAM,CAAC;IACrCC,EAAE,EAAE,CAAC,SAAS,CAAC;IACfC,SAAS,EAAE;EACb,CAAC,CAAC;AACJ;;AAEA;AACA,MAAMC,KAAK,GAAGA,CAAC,GAAGC,IAAI,KAAKf,IAAI,CAACgB,CAAC,CAAC,GAAGD,IAAI,CAAQ;AAEjD,SAASf,IAAI;AACb,eAAec,KAAK","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionList.d.ts","sourceRoot":"","sources":["../../../../../src/components/Drawer/SessionList.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAOpD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,QAAA,MAAM,WAAW,wDAoChB,CAAC;AAWF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"SessionList.d.ts","sourceRoot":"","sources":["../../../../../src/components/Drawer/SessionList.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAOpD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,QAAA,MAAM,WAAW,wDAsChB,CAAC;AAWF,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSearchSessions.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/session/useSearchSessions.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iBAAiB,GAC5B,UAAS,OAAc,EACvB,aAAa,MAAM,QAiDpB,CAAC"}
1
+ {"version":3,"file":"useSearchSessions.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/session/useSearchSessions.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iBAAiB,GAC5B,UAAS,OAAc,EACvB,aAAa,MAAM,QA+EpB,CAAC"}
@@ -1,4 +1,3 @@
1
- import 'intl-pluralrules';
2
1
  import i18n from 'i18next';
3
2
  declare const trans: (...args: any[]) => any;
4
3
  export { i18n };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/translation/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AACzB,OAAO,IAAI,MAAM,SAAS,CAAC;AAiB3B,QAAA,MAAM,KAAK,GAAI,GAAG,WAAI,KAAwB,GAAG,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/translation/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAkB3B,QAAA,MAAM,KAAK,GAAI,GAAG,WAAI,KAAwB,GAAG,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,eAAe,KAAK,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { StyleProp, ViewStyle } from 'react-native';
1
2
  export interface WithToastProps {
2
3
  open: (payload: KToastBarProps & {
3
4
  contentContainerStyle?: StyleProp<ViewStyle>;
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/types/ui.ts"],"names":[],"mappings":"AAKA,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"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/types/ui.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,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"}
@@ -1,3 +1,4 @@
1
+ import { StyleProp, ViewStyle } from 'react-native';
1
2
  declare class UIUtils {
2
3
  toast: {
3
4
  open: (params: KToastBarProps & {
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/utils/ui.tsx"],"names":[],"mappings":"AAMA,cAAM,OAAO;IACX,KAAK;uBAGO,cAAc,GAAG;YAAE,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;SAAE;;2BAOxD,GAAG;MAWtB;CACH;;AAED,wBAA6B"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/utils/ui.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKpD,cAAM,OAAO;IACX,KAAK;uBAGO,cAAc,GAAG;YAAE,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;SAAE;;2BAOxD,GAAG;MAWtB;CACH;;AAED,wBAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-chatbot-ai",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
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",
@@ -80,10 +80,11 @@
80
80
  "eslint": "^9.35.0",
81
81
  "eslint-config-prettier": "^10.1.8",
82
82
  "eslint-plugin-prettier": "^5.5.4",
83
+ "i18next": "^25.6.1",
83
84
  "jest": "^29.7.0",
84
85
  "lodash": "^4.17.21",
85
86
  "prettier": "^3.6.2",
86
- "react-i18next": "16.0.1",
87
+ "react-i18next": "^16.2.4",
87
88
  "react-native-builder-bob": "^0.40.13",
88
89
  "react-native-file-viewer": "^2.1.5",
89
90
  "react-native-image-crop-picker": "^0.51.1",
@@ -174,7 +175,6 @@
174
175
  "@babel/runtime": "^7.28.4",
175
176
  "axios": "^1.12.2",
176
177
  "dayjs": "^1.11.18",
177
- "intl-pluralrules": "^2.0.1",
178
178
  "lodash": "^4.17.21",
179
179
  "react-native-marked": "^7.0.2",
180
180
  "react-native-skeleton-placeholder": "^5.2.4",
@@ -41,12 +41,14 @@ const SessionList = memo<SessionListProps>(
41
41
  const keyExtractor = useCallback((item: SessionSearchItem) => item.id, []);
42
42
 
43
43
  return (
44
+ /* @ts-expect-error - FlashList type issue */
44
45
  <FlashList
45
46
  data={sessions}
46
47
  renderItem={renderItem}
47
48
  keyExtractor={keyExtractor}
48
49
  contentContainerStyle={styles.listContainer}
49
50
  refreshControl={
51
+ /* @ts-expect-error - React Native RefreshControl type issue */
50
52
  <RefreshControl refreshing={isRefetching} onRefresh={onRefresh} />
51
53
  }
52
54
  onEndReached={onEndReached}
@@ -25,13 +25,43 @@ export const useSearchSessions = (
25
25
  ...(searchTerm?.trim() && { search_term: searchTerm.trim() }),
26
26
  }
27
27
  );
28
- return res?.data as BaseResponse<SearchSessionsResponse>;
28
+
29
+ const response = res?.data;
30
+
31
+ // Validate response structure
32
+ if (!response) {
33
+ throw new Error('No response received from API');
34
+ }
35
+
36
+ // Check for successful response: HTTP status 200 and API statusCode 0
37
+ if (res?.status !== 200 || response?.statusCode !== 0) {
38
+ return {
39
+ ...response,
40
+ data: [],
41
+ } as BaseResponse<SearchSessionsResponse>;
42
+ }
43
+
44
+ // Ensure data is an array
45
+ if (!Array.isArray(response?.data)) {
46
+ // If data is not an array, return empty array to prevent crashes
47
+ return {
48
+ ...response,
49
+ data: [],
50
+ } as BaseResponse<SearchSessionsResponse>;
51
+ }
52
+
53
+ return response as BaseResponse<SearchSessionsResponse>;
29
54
  },
30
55
  getNextPageParam: (
31
56
  lastPage: BaseResponse<SearchSessionsResponse>,
32
57
  allPages: BaseResponse<SearchSessionsResponse>[]
33
58
  ) => {
34
- const currentData = lastPage?.data || [];
59
+ // Validate that data exists and is an array
60
+ if (!lastPage || !Array.isArray(lastPage.data)) {
61
+ return undefined;
62
+ }
63
+
64
+ const currentData = lastPage.data;
35
65
  if (currentData.length < LIMIT) {
36
66
  return undefined;
37
67
  }
@@ -1,19 +1,19 @@
1
- import 'intl-pluralrules'
2
1
  import i18n from 'i18next';
3
2
  import { initReactI18next } from 'react-i18next';
4
3
  import vi from './resources/vi';
5
4
 
6
- i18n.use(initReactI18next).init({
7
- compatibilityJSON: 'v3',
8
- resources: {
9
- vi: { chatbot: vi },
10
- },
11
- lng: 'vi', // default
12
- fallbackLng: 'vi',
13
- interpolation: { escapeValue: false },
14
- ns: ['chatbot'],
15
- defaultNS: 'chatbot',
16
- });
5
+ if (!i18n.isInitialized) {
6
+ i18n.use(initReactI18next).init({
7
+ resources: {
8
+ vi: { chatbot: vi },
9
+ },
10
+ lng: 'vi', // default
11
+ fallbackLng: 'vi',
12
+ interpolation: { escapeValue: false },
13
+ ns: ['chatbot'],
14
+ defaultNS: 'chatbot',
15
+ });
16
+ }
17
17
 
18
18
  //@ts-ignore
19
19
  const trans = (...args) => i18n.t(...args) as any;