vdb-ai-chat 1.0.13 → 1.0.15

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 (41) hide show
  1. package/dist/chat-widget.js +1 -1
  2. package/lib/commonjs/api.js +47 -1
  3. package/lib/commonjs/api.js.map +1 -1
  4. package/lib/commonjs/components/BetaNotice.js +1 -1
  5. package/lib/commonjs/components/BetaNotice.js.map +1 -1
  6. package/lib/commonjs/components/ChatInput.js +1 -1
  7. package/lib/commonjs/components/ChatInput.js.map +1 -1
  8. package/lib/commonjs/components/ChatWidget.js +142 -36
  9. package/lib/commonjs/components/ChatWidget.js.map +1 -1
  10. package/lib/commonjs/components/ProductsListView.js +26 -20
  11. package/lib/commonjs/components/ProductsListView.js.map +1 -1
  12. package/lib/commonjs/components/utils.js +37 -1
  13. package/lib/commonjs/components/utils.js.map +1 -1
  14. package/lib/module/api.js +46 -1
  15. package/lib/module/api.js.map +1 -1
  16. package/lib/module/components/BetaNotice.js +1 -1
  17. package/lib/module/components/BetaNotice.js.map +1 -1
  18. package/lib/module/components/ChatInput.js +1 -1
  19. package/lib/module/components/ChatInput.js.map +1 -1
  20. package/lib/module/components/ChatWidget.js +144 -38
  21. package/lib/module/components/ChatWidget.js.map +1 -1
  22. package/lib/module/components/ProductsListView.js +27 -21
  23. package/lib/module/components/ProductsListView.js.map +1 -1
  24. package/lib/module/components/utils.js +33 -0
  25. package/lib/module/components/utils.js.map +1 -1
  26. package/lib/typescript/api.d.ts +12 -0
  27. package/lib/typescript/api.d.ts.map +1 -1
  28. package/lib/typescript/components/ChatWidget.d.ts.map +1 -1
  29. package/lib/typescript/components/ProductsListView.d.ts.map +1 -1
  30. package/lib/typescript/components/utils.d.ts +3 -0
  31. package/lib/typescript/components/utils.d.ts.map +1 -1
  32. package/lib/typescript/types.d.ts +2 -0
  33. package/lib/typescript/types.d.ts.map +1 -1
  34. package/package.json +1 -1
  35. package/src/api.ts +71 -3
  36. package/src/components/BetaNotice.tsx +1 -1
  37. package/src/components/ChatInput.tsx +1 -1
  38. package/src/components/ChatWidget.tsx +196 -33
  39. package/src/components/ProductsListView.tsx +39 -32
  40. package/src/components/utils.ts +36 -0
  41. package/src/types.ts +2 -0
@@ -49,6 +49,39 @@ export const getUserCurrencySymbol = async () => {
49
49
  const userData = userInfo?.user;
50
50
  return userData.currency_symbol || "$";
51
51
  };
52
+ export const roundUpPrices = async () => {
53
+ const userInfo = await Storage.getJSON("persist:userInfo", {});
54
+ const userData = userInfo?.user;
55
+ // @ts-ignore
56
+ return true; // org 1
57
+ // return !!userData?.feature_settings?.round_up_prices;
58
+ };
59
+
60
+ // Helper to add commas to a number
61
+ export function formatWithCommas(value) {
62
+ const num = typeof value === 'string' ? parseFloat(value) : value;
63
+ if (isNaN(num)) return String(value);
64
+ return num.toLocaleString();
65
+ }
66
+
67
+ // Format price values according to requirements
68
+ export function formatPriceValue(key, value, shouldRound) {
69
+ console.log("formatPriceValue", key, value);
70
+ if (key === 'price_per_carat') {
71
+ // Remove decimals, round, add commas
72
+ const num = Math.round(Number(value));
73
+ return formatWithCommas(num);
74
+ }
75
+ if (key === 'total_sales_price') {
76
+ let num = Number(value);
77
+ if (shouldRound) {
78
+ num = Math.round(num);
79
+ }
80
+ return formatWithCommas(num);
81
+ }
82
+ // fallback: just add commas if number
83
+ return formatWithCommas(value);
84
+ }
52
85
  export const getUserDetails = async () => {
53
86
  try {
54
87
  const stored = await Storage.getJSON("persist:userInfo", {});
@@ -1 +1 @@
1
- {"version":3,"names":["Dimensions","Storage","useMediaQuery","DEVICE_SIZE","get","formatToTime","timestamp","date","Date","hours","getHours","minutes","getMinutes","ampm","mins","FeedbackAction","getUserToken","userInfo","getJSON","userData","JSON","parse","user","token","fetchConversationId","_priceMode","currentToken","stored","conversations","priceMode","undefined","String","price_mode","conversation_id","getUserCurrencySymbol","currency_symbol","getUserDetails","DeviceType","getDeviceType","platform","WEB","IOS","ANDROID","AnalyticsEventNames","isIpad","userAgent","navigator","vendor","window","opera","test","maxTouchPoints","useDeviceType","width","isMobile","maxWidth","isTablet","minWidth","isDesktop","isLargeScreen"],"sourceRoot":"../../../src","sources":["components/utils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Dimensions","Storage","useMediaQuery","DEVICE_SIZE","get","formatToTime","timestamp","date","Date","hours","getHours","minutes","getMinutes","ampm","mins","FeedbackAction","getUserToken","userInfo","getJSON","userData","JSON","parse","user","token","fetchConversationId","_priceMode","currentToken","stored","conversations","priceMode","undefined","String","price_mode","conversation_id","getUserCurrencySymbol","currency_symbol","roundUpPrices","formatWithCommas","value","num","parseFloat","isNaN","toLocaleString","formatPriceValue","key","shouldRound","console","log","Math","round","Number","getUserDetails","DeviceType","getDeviceType","platform","WEB","IOS","ANDROID","AnalyticsEventNames","isIpad","userAgent","navigator","vendor","window","opera","test","maxTouchPoints","useDeviceType","width","isMobile","maxWidth","isTablet","minWidth","isDesktop","isLargeScreen"],"sourceRoot":"../../../src","sources":["components/utils.ts"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,19 @@ import { FeedbackAction } from "./components/utils";
2
2
  import type { ChatMessage } from "./types";
3
3
  export type ChatApiParams = Record<string, any>;
4
4
  export declare function normaliseMessages(raw: any): ChatMessage[];
5
+ export interface PaginatedMessagesResponse {
6
+ messages: any[];
7
+ conversation_id?: string | number;
8
+ has_more?: boolean;
9
+ next_cursor?: string | number;
10
+ total_count?: number;
11
+ }
5
12
  export declare function fetchInitialMessages(apiUrl: string, _params?: ChatApiParams, priceMode?: string | null): Promise<any>;
13
+ /**
14
+ * Fetches older messages for pagination when user scrolls to top.
15
+ * Uses cursor-based pagination if available, falls back to page number.
16
+ */
17
+ export declare function fetchOlderMessages(apiUrl: string, priceMode: string | null, cursor?: string | number, pageNumber?: number): Promise<PaginatedMessagesResponse>;
6
18
  export declare function sendUserMessage(apiUrl: string, userMessage: string, _params: ChatApiParams, _history: ChatMessage[], priceMode: any): Promise<any>;
7
19
  export declare function clearChatHistory(apiUrl: string, priceMode: any): Promise<void>;
8
20
  export declare function getProducts(params: ChatApiParams, priceMode: string | null): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAqEhD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,EAAE,CAkBzD;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,GAAG,CAAC,CAmCd;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,GAAG,CAAC,CAuCd;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,GAAG,CAAC,CA6Fd;AAED,eAAO,MAAM,uBAAuB,GAClC,QAAQ,cAAc,EACtB,iBAAiB,MAAM,EACvB,YAAY,MAAM,sBAanB,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAqEhD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,EAAE,CAkBzD;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,GAAG,CAAC,CAmCd;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,CAAC,CA0CpC;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,GAAG,CAAC,CAyCd;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,GAAG,CAAC,CAkGd;AAED,eAAO,MAAM,uBAAuB,GAClC,QAAQ,cAAc,EACtB,iBAAiB,MAAM,EACvB,YAAY,MAAM,sBAanB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/ChatWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAef,OAAO,KAAK,EAAe,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA2B5E,eAAO,MAAM,UAAU,uFA+xBtB,CAAC"}
1
+ {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/ChatWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAgBf,OAAO,KAAK,EAAe,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA4B5E,eAAO,MAAM,UAAU,uFAk7BtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsListView.d.ts","sourceRoot":"","sources":["../../../src/components/ProductsListView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAsHzD,UAAU,qBAAqB;IAC7B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,GAAG,CAAC;CACX;AAmPD,QAAA,MAAM,gBAAgB,mDAAkC,CAAC;AACzD,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"ProductsListView.d.ts","sourceRoot":"","sources":["../../../src/components/ProductsListView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAsHzD,UAAU,qBAAqB;IAC7B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,GAAG,CAAC;CACX;AA0PD,QAAA,MAAM,gBAAgB,mDAAkC,CAAC;AACzD,eAAe,gBAAgB,CAAC"}
@@ -7,6 +7,9 @@ export declare enum FeedbackAction {
7
7
  }
8
8
  export declare const fetchConversationId: (_priceMode: string) => Promise<string | null>;
9
9
  export declare const getUserCurrencySymbol: () => Promise<string | null>;
10
+ export declare const roundUpPrices: () => Promise<boolean>;
11
+ export declare function formatWithCommas(value: number | string): string;
12
+ export declare function formatPriceValue(key: string, value: any, shouldRound: boolean): string;
10
13
  export interface UserDetails {
11
14
  id?: string | number;
12
15
  email?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/utils.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,mCAA2B,CAAC;AAEpD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAatD;AAED,oBAAY,cAAc;IACxB,IAAI,MAAM;IACV,OAAO,MAAM;IACb,KAAK,MAAM;CACZ;AAcD,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,KACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAqBvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAa,OAAO,CAAC,MAAM,GAAG,IAAI,CAInE,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CAqBjE,CAAC;AAEF,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,cAW9C,CAAC;AAEF,oBAAY,mBAAmB;IAC7B,aAAa,0BAA0B;IACvC,aAAa,0BAA0B;IACvC,YAAY,oBAAoB;CACjC;AAED,eAAO,MAAM,MAAM,eAclB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;CAUzB,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/utils.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,mCAA2B,CAAC;AAEpD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAatD;AAED,oBAAY,cAAc;IACxB,IAAI,MAAM;IACV,OAAO,MAAM;IACb,KAAK,MAAM;CACZ;AAcD,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,KACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAqBvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAa,OAAO,CAAC,MAAM,GAAG,IAAI,CAInE,CAAC;AAGF,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,OAAO,CAMrD,CAAC;AAGF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAI/D;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,UAiB7E;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CAqBjE,CAAC;AAEF,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,cAW9C,CAAC;AAEF,oBAAY,mBAAmB;IAC7B,aAAa,0BAA0B;IACvC,aAAa,0BAA0B;IACvC,YAAY,oBAAoB;CACjC;AAED,eAAO,MAAM,MAAM,eAclB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;CAUzB,CAAC"}
@@ -8,6 +8,7 @@ export interface ChatMessage {
8
8
  suggestions?: string[];
9
9
  reaction?: string;
10
10
  search_payload?: Record<string, any>;
11
+ external_context?: string | null;
11
12
  }
12
13
  export interface ChatTheme {
13
14
  primaryColor: string;
@@ -42,6 +43,7 @@ export interface ChatWidgetProps {
42
43
  onItemPress?: (deepLinkUrl: string, item: any) => void;
43
44
  /** When true, shows beta labels and disclaimer. */
44
45
  isBetaMode?: boolean;
46
+ activeProductType?: string;
45
47
  }
46
48
  export interface ChatWidgetRef {
47
49
  clearChat: () => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,uFAAuF;IACvF,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACvD,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACxD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,uFAAuF;IACvF,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACvD,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACxD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vdb-ai-chat",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "Cross-platform AI chat widget for React Native and Web",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
package/src/api.ts CHANGED
@@ -92,6 +92,14 @@ export function normaliseMessages(raw: any): ChatMessage[] {
92
92
  }));
93
93
  }
94
94
 
95
+ export interface PaginatedMessagesResponse {
96
+ messages: any[];
97
+ conversation_id?: string | number;
98
+ has_more?: boolean;
99
+ next_cursor?: string | number;
100
+ total_count?: number;
101
+ }
102
+
95
103
  export async function fetchInitialMessages(
96
104
  apiUrl: string,
97
105
  _params?: ChatApiParams,
@@ -133,6 +141,59 @@ export async function fetchInitialMessages(
133
141
  return data;
134
142
  }
135
143
 
144
+ /**
145
+ * Fetches older messages for pagination when user scrolls to top.
146
+ * Uses cursor-based pagination if available, falls back to page number.
147
+ */
148
+ export async function fetchOlderMessages(
149
+ apiUrl: string,
150
+ priceMode: string | null,
151
+ cursor?: string | number,
152
+ pageNumber?: number
153
+ ): Promise<PaginatedMessagesResponse> {
154
+ const conversations = await getValidConversations();
155
+ const storedId = conversations?.[priceMode ?? ""]?.conversation_id ?? null;
156
+
157
+ if (!storedId) {
158
+ return { messages: [], has_more: false };
159
+ }
160
+
161
+ const body: any = {
162
+ conversation_id: Number.isNaN(Number(storedId))
163
+ ? storedId
164
+ : Number(storedId),
165
+ fetch_history: true,
166
+ };
167
+
168
+ // Support both cursor-based and page-based pagination
169
+ if (cursor !== undefined) {
170
+ body.cursor = cursor;
171
+ }
172
+ if (pageNumber !== undefined) {
173
+ body.page = pageNumber;
174
+ }
175
+
176
+ const res = await fetch(apiUrl, {
177
+ method: "POST",
178
+ headers: await buildHeaders(),
179
+ body: JSON.stringify(body),
180
+ });
181
+
182
+ if (!res.ok) {
183
+ throw new Error(`POST ${apiUrl} failed with ${res.status}`);
184
+ }
185
+
186
+ const data = await res.json();
187
+
188
+ return {
189
+ messages: data.messages || [],
190
+ conversation_id: data.conversation_id,
191
+ has_more: data.has_more ?? false,
192
+ next_cursor: data.next_cursor,
193
+ total_count: data.total_count,
194
+ };
195
+ }
196
+
136
197
  export async function sendUserMessage(
137
198
  apiUrl: string,
138
199
  userMessage: string,
@@ -148,8 +209,10 @@ export async function sendUserMessage(
148
209
  return null;
149
210
  }
150
211
 
212
+ const external_context = await Storage.getJSON<string>("external_context");
151
213
  const body: any = {
152
214
  query: userMessage,
215
+ external_context: external_context || null,
153
216
  };
154
217
  if (storedId) {
155
218
  body.conversation_id = Number.isNaN(Number(storedId))
@@ -211,7 +274,12 @@ export async function getProducts(
211
274
  params: ChatApiParams,
212
275
  priceMode: string | null
213
276
  ): Promise<any> {
214
- const isLabgrown = (typeof params.lab_grown === "string" ? params.lab_grown === "true" : typeof params.lab_grown === "boolean" ? params.lab_grown : false);
277
+ const isLabgrown =
278
+ typeof params.lab_grown === "string"
279
+ ? params.lab_grown === "true"
280
+ : typeof params.lab_grown === "boolean"
281
+ ? params.lab_grown
282
+ : false;
215
283
  const userInfo = await Storage.getJSON<UserDetails>("persist:userInfo", {});
216
284
  const activeProduct = isLabgrown ? "lab_grown_diamond" : "diamond";
217
285
  const searchResultViewTypeMap = JSON.parse(
@@ -236,11 +304,11 @@ export async function getProducts(
236
304
  vdbSetting = true;
237
305
  mGroupIds = mGroupIds.filter((groupId: number) => groupId !== 0);
238
306
  }
239
- } else if(!mGroupIds || mGroupIds.length === 0) {
307
+ } else if (!mGroupIds || mGroupIds.length === 0) {
240
308
  vdbSetting = true;
241
309
  }
242
310
 
243
- if(params.three_x) {
311
+ if (params.three_x) {
244
312
  delete params.three_x;
245
313
  }
246
314
 
@@ -7,7 +7,7 @@ export const BetaNotice = ({ active }: { active?: boolean }) => {
7
7
  if (!active) return null;
8
8
  return (
9
9
  <View style={styles.container}>
10
- <TextView>This AI feature is in beta and may make mistakes.</TextView>
10
+ <TextView>This beta feature uses AI-generated results that should be verified.</TextView>
11
11
  </View>
12
12
  );
13
13
  };
@@ -75,7 +75,7 @@ export const ChatInput: React.FC<Props> = ({
75
75
  // @ts-ignore - supported on web via react-native-web
76
76
  id="chat-input"
77
77
  style={[styles.inputWeb]}
78
- placeholder={placeholder || "What are you looking for?"}
78
+ placeholder={placeholder || "Describe the diamond you’re looking for..."}
79
79
  placeholderTextColor={theme["core-06"] || "#999"}
80
80
  value={value}
81
81
  onChangeText={onChangeText}