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.
- package/dist/chat-widget.js +1 -1
- package/lib/commonjs/api.js +47 -1
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/components/BetaNotice.js +1 -1
- package/lib/commonjs/components/BetaNotice.js.map +1 -1
- package/lib/commonjs/components/ChatInput.js +1 -1
- package/lib/commonjs/components/ChatInput.js.map +1 -1
- package/lib/commonjs/components/ChatWidget.js +142 -36
- package/lib/commonjs/components/ChatWidget.js.map +1 -1
- package/lib/commonjs/components/ProductsListView.js +26 -20
- package/lib/commonjs/components/ProductsListView.js.map +1 -1
- package/lib/commonjs/components/utils.js +37 -1
- package/lib/commonjs/components/utils.js.map +1 -1
- package/lib/module/api.js +46 -1
- package/lib/module/api.js.map +1 -1
- package/lib/module/components/BetaNotice.js +1 -1
- package/lib/module/components/BetaNotice.js.map +1 -1
- package/lib/module/components/ChatInput.js +1 -1
- package/lib/module/components/ChatInput.js.map +1 -1
- package/lib/module/components/ChatWidget.js +144 -38
- package/lib/module/components/ChatWidget.js.map +1 -1
- package/lib/module/components/ProductsListView.js +27 -21
- package/lib/module/components/ProductsListView.js.map +1 -1
- package/lib/module/components/utils.js +33 -0
- package/lib/module/components/utils.js.map +1 -1
- package/lib/typescript/api.d.ts +12 -0
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/components/ChatWidget.d.ts.map +1 -1
- package/lib/typescript/components/ProductsListView.d.ts.map +1 -1
- package/lib/typescript/components/utils.d.ts +3 -0
- package/lib/typescript/components/utils.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +2 -0
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api.ts +71 -3
- package/src/components/BetaNotice.tsx +1 -1
- package/src/components/ChatInput.tsx +1 -1
- package/src/components/ChatWidget.tsx +196 -33
- package/src/components/ProductsListView.tsx +39 -32
- package/src/components/utils.ts +36 -0
- 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":"AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,OAAO,MAAMC,WAAW,GAAGH,UAAU,CAACI,GAAG,CAAC,QAAQ,CAAC;AAEnD,OAAO,SAASC,YAAYA,CAACC,SAAiB,EAAU;EACtD,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,SAAS,CAAC;EAEhC,IAAIG,KAAK,GAAGF,IAAI,CAACG,QAAQ,CAAC,CAAC;EAC3B,MAAMC,OAAO,GAAGJ,IAAI,CAACK,UAAU,CAAC,CAAC;EACjC,MAAMC,IAAI,GAAGJ,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;EAEtCA,KAAK,GAAGA,KAAK,GAAG,EAAE;EAClBA,KAAK,GAAGA,KAAK,GAAGA,KAAK,GAAG,EAAE,CAAC,CAAC;;EAE5B,MAAMK,IAAI,GAAGH,OAAO,GAAG,EAAE,GAAG,IAAIA,OAAO,EAAE,GAAGA,OAAO;EAEnD,OAAO,GAAGF,KAAK,IAAIK,IAAI,IAAID,IAAI,EAAE;AACnC;AAEA,WAAYE,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;;AAM1B;;AAMA,eAAeC,YAAYA,CAAA,EAAoB;EAC7C,MAAMC,QAAQ,GAAG,MAAMhB,OAAO,CAACiB,OAAO,CAAc,kBAAkB,EAAE,CAAC,CAAC,CAAC;EAC3E,MAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAAEJ,QAAQ,EAAUK,IAAI,IAAI,IAAI,CAAC;EAC5D,OAAOH,QAAQ,EAAEI,KAAK,IAAI,EAAE;AAC9B;AAEA,OAAO,MAAMC,mBAAmB,GAAG,MACjCC,UAAkB,IACS;EAC3B,MAAMC,YAAY,GAAG,MAAMV,YAAY,CAAC,CAAC;EACzC,MAAMW,MAAM,GAAG,MAAM1B,OAAO,CAACiB,OAAO,CAClC,uBAAuB,EACvB,IACF,CAAC;;EAED;EACA,IAAI,CAACS,MAAM,IAAIA,MAAM,CAACJ,KAAK,KAAKG,YAAY,EAAE;IAC5C,OAAO,IAAI;EACb;EAEA,MAAME,aAAa,GAAGD,MAAM,CAACC,aAAa,IAAI,CAAC,CAAC;EAEhD,IAAIC,SAAS,GAAGJ,UAAU;EAC1B,IAAII,SAAS,KAAKC,SAAS,EAAE;IAC3B,MAAMb,QAAQ,GAAG,MAAMhB,OAAO,CAACiB,OAAO,CAAc,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAMC,QAAQ,GAAGF,QAAQ,EAAEK,IAAmB;IAC9CO,SAAS,GAAGE,MAAM,CAACZ,QAAQ,EAAEa,UAAU,CAAC,IAAI,EAAE;EAChD;EACA,OAAOD,MAAM,CAACH,aAAa,CAACC,SAAS,CAAC,EAAEI,eAAe,CAAC,IAAI,IAAI;AAClE,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAG,MAAAA,CAAA,KAAoC;EACvE,MAAMjB,QAAQ,GAAG,MAAMhB,OAAO,CAACiB,OAAO,CAAc,kBAAkB,EAAE,CAAC,CAAC,CAAC;EAC3E,MAAMC,QAAQ,GAAGF,QAAQ,EAAEK,IAAmB;EAC9C,OAAOH,QAAQ,CAACgB,eAAe,IAAI,GAAG;AACxC,CAAC;
|
|
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":[]}
|
package/lib/typescript/api.d.ts
CHANGED
|
@@ -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,
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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
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 =
|
|
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
|
|
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 || "
|
|
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}
|