@kontextso/sdk-react-native 0.0.5-rc.8 → 0.0.6
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/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +27 -18
- package/dist/index.mjs +27 -18
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -33,7 +33,9 @@ interface Ad {
|
|
|
33
33
|
isStreaming?: boolean;
|
|
34
34
|
isError?: boolean;
|
|
35
35
|
viewed?: boolean;
|
|
36
|
+
clicked?: boolean;
|
|
36
37
|
messageId?: string;
|
|
38
|
+
rewardContent?: string;
|
|
37
39
|
product?: {
|
|
38
40
|
id: string;
|
|
39
41
|
title: string;
|
|
@@ -140,7 +142,6 @@ interface AdsProviderProps {
|
|
|
140
142
|
logLevel?: any;
|
|
141
143
|
conversationId?: string;
|
|
142
144
|
styles?: AdStyles;
|
|
143
|
-
throwError?: boolean;
|
|
144
145
|
}
|
|
145
146
|
declare const VISITOR_ID_KEY = "brain-visitor-id";
|
|
146
147
|
declare const AdsProvider: ({ children, messages, publisherToken, isLoading, adserverUrl, isDisabled, character, conversationId, userId, logLevel, onAdView, onAdClick, ...props }: AdsProviderProps) => react_jsx_runtime.JSX.Element;
|
package/dist/index.d.ts
CHANGED
|
@@ -33,7 +33,9 @@ interface Ad {
|
|
|
33
33
|
isStreaming?: boolean;
|
|
34
34
|
isError?: boolean;
|
|
35
35
|
viewed?: boolean;
|
|
36
|
+
clicked?: boolean;
|
|
36
37
|
messageId?: string;
|
|
38
|
+
rewardContent?: string;
|
|
37
39
|
product?: {
|
|
38
40
|
id: string;
|
|
39
41
|
title: string;
|
|
@@ -140,7 +142,6 @@ interface AdsProviderProps {
|
|
|
140
142
|
logLevel?: any;
|
|
141
143
|
conversationId?: string;
|
|
142
144
|
styles?: AdStyles;
|
|
143
|
-
throwError?: boolean;
|
|
144
145
|
}
|
|
145
146
|
declare const VISITOR_ID_KEY = "brain-visitor-id";
|
|
146
147
|
declare const AdsProvider: ({ children, messages, publisherToken, isLoading, adserverUrl, isDisabled, character, conversationId, userId, logLevel, onAdView, onAdClick, ...props }: AdsProviderProps) => react_jsx_runtime.JSX.Element;
|
package/dist/index.js
CHANGED
|
@@ -97,7 +97,7 @@ var fetchRetry = async (input, init, maxRetries = 3, retryPeriod = 500) => {
|
|
|
97
97
|
};
|
|
98
98
|
var fixUrl = (adserverUrl, ad) => {
|
|
99
99
|
if (ad.content) {
|
|
100
|
-
ad.content = ad.content.replace("/
|
|
100
|
+
ad.content = ad.content.replace("/impression/", `${adserverUrl}/impression/`);
|
|
101
101
|
}
|
|
102
102
|
return { ...ad, url: `${adserverUrl}${ad.url}` };
|
|
103
103
|
};
|
|
@@ -105,7 +105,8 @@ var mergeAds = ({
|
|
|
105
105
|
initAds,
|
|
106
106
|
preloadAds,
|
|
107
107
|
streamAds,
|
|
108
|
-
viewedAds
|
|
108
|
+
viewedAds,
|
|
109
|
+
clickedAds
|
|
109
110
|
}) => {
|
|
110
111
|
const ads = [...initAds];
|
|
111
112
|
if (Array.isArray(preloadAds)) {
|
|
@@ -132,6 +133,7 @@ var mergeAds = ({
|
|
|
132
133
|
}
|
|
133
134
|
for (const ad of ads) {
|
|
134
135
|
ad.viewed = viewedAds.includes(ad?.id || "placeholder");
|
|
136
|
+
ad.clicked = clickedAds.includes(ad?.id || "placeholder");
|
|
135
137
|
}
|
|
136
138
|
return ads;
|
|
137
139
|
};
|
|
@@ -201,9 +203,11 @@ var parseMessageText = (text) => {
|
|
|
201
203
|
var import_loglevel = __toESM(require("loglevel"));
|
|
202
204
|
|
|
203
205
|
// package.json
|
|
204
|
-
var version = "0.0.5-rc.
|
|
206
|
+
var version = "0.0.5-rc.8";
|
|
205
207
|
|
|
206
208
|
// src/hooks/useInitializeAds.tsx
|
|
209
|
+
var SINGLE_INIT_TIMEOUT_BUDGET_MS = 3e3;
|
|
210
|
+
var SINGLE_INIT_RETRIES = 3;
|
|
207
211
|
async function initialize(adServerUrl, publisherToken, userId, conversationId, legacyVisitorId, character) {
|
|
208
212
|
import_loglevel.default.log("[BRAIN] init ads started");
|
|
209
213
|
const response = await fetchRetry(
|
|
@@ -221,8 +225,8 @@ async function initialize(adServerUrl, publisherToken, userId, conversationId, l
|
|
|
221
225
|
character
|
|
222
226
|
})
|
|
223
227
|
},
|
|
224
|
-
|
|
225
|
-
|
|
228
|
+
SINGLE_INIT_TIMEOUT_BUDGET_MS,
|
|
229
|
+
SINGLE_INIT_RETRIES
|
|
226
230
|
);
|
|
227
231
|
const {
|
|
228
232
|
sessionId,
|
|
@@ -715,8 +719,8 @@ function useStreamAds({
|
|
|
715
719
|
isLoading: false,
|
|
716
720
|
isStreaming: true,
|
|
717
721
|
content: content.replace(
|
|
718
|
-
new RegExp(`/
|
|
719
|
-
`/
|
|
722
|
+
new RegExp(`/impression/${adData.product.id}/redirect`, "g"),
|
|
723
|
+
`/impression/${adData.id}/redirect`
|
|
720
724
|
)
|
|
721
725
|
});
|
|
722
726
|
return newAd;
|
|
@@ -813,6 +817,7 @@ var AdsProviderWithoutBoundary = ({
|
|
|
813
817
|
...props
|
|
814
818
|
}) => {
|
|
815
819
|
const [viewedAds, setViewedAds] = (0, import_react5.useState)([]);
|
|
820
|
+
const [clickedAds, setClickedAds] = (0, import_react5.useState)([]);
|
|
816
821
|
const adServerUrlOrDefault = adserverUrl || "https://server.megabrain.co";
|
|
817
822
|
import_loglevel5.default.setLevel(logLevel || "ERROR");
|
|
818
823
|
const {
|
|
@@ -857,13 +862,7 @@ var AdsProviderWithoutBoundary = ({
|
|
|
857
862
|
enabledPlacements,
|
|
858
863
|
publisherToken
|
|
859
864
|
});
|
|
860
|
-
const ads = mergeAds({ initAds, preloadAds, streamAds, viewedAds });
|
|
861
|
-
if (props.throwError && Math.random() < 0.1) {
|
|
862
|
-
throw new Error("Test error");
|
|
863
|
-
}
|
|
864
|
-
if (props.throwError && Math.random() < 0.1) {
|
|
865
|
-
Promise.reject(new Error("Test async error"));
|
|
866
|
-
}
|
|
865
|
+
const ads = mergeAds({ initAds, preloadAds, streamAds, viewedAds, clickedAds });
|
|
867
866
|
const markAdAsViewed = (ad) => {
|
|
868
867
|
import_loglevel5.default.debug("[Brain] Calling onAdView");
|
|
869
868
|
onAdView && onAdView({
|
|
@@ -884,6 +883,13 @@ var AdsProviderWithoutBoundary = ({
|
|
|
884
883
|
messageId: ad.messageId,
|
|
885
884
|
content: ad.content
|
|
886
885
|
});
|
|
886
|
+
if (!ad.id) {
|
|
887
|
+
return;
|
|
888
|
+
}
|
|
889
|
+
if (clickedAds.includes(ad.id)) {
|
|
890
|
+
return;
|
|
891
|
+
}
|
|
892
|
+
setClickedAds((old) => [...old, ad.id]);
|
|
887
893
|
};
|
|
888
894
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
889
895
|
AdsContext.Provider,
|
|
@@ -954,8 +960,7 @@ var AdsProvider = ({
|
|
|
954
960
|
userId,
|
|
955
961
|
logLevel,
|
|
956
962
|
onAdView,
|
|
957
|
-
onAdClick
|
|
958
|
-
throwError: props.throwError
|
|
963
|
+
onAdClick
|
|
959
964
|
}
|
|
960
965
|
)
|
|
961
966
|
}
|
|
@@ -978,7 +983,7 @@ function useAdViewed(ad) {
|
|
|
978
983
|
serverUrl = context.streamAdServerUrl;
|
|
979
984
|
}
|
|
980
985
|
try {
|
|
981
|
-
const response = await fetch(`${serverUrl}/
|
|
986
|
+
const response = await fetch(`${serverUrl}/impression/${ad.id}/view`, {
|
|
982
987
|
method: "POST"
|
|
983
988
|
});
|
|
984
989
|
if (!response.ok) {
|
|
@@ -1263,6 +1268,10 @@ var InlineAd = ({ code, messageId, wrapper }) => {
|
|
|
1263
1268
|
}
|
|
1264
1269
|
}
|
|
1265
1270
|
};
|
|
1271
|
+
let adContent = ad.content;
|
|
1272
|
+
if (ad.clicked && ad.rewardContent) {
|
|
1273
|
+
adContent = ad.rewardContent;
|
|
1274
|
+
}
|
|
1266
1275
|
const content = /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_react_native5.View, { style: styles?.container, children: [
|
|
1267
1276
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_native5.View, { style: styles?.adBadgeContainer, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_native5.Text, { style: styles?.adBadgeText, children: "Ad" }) }),
|
|
1268
1277
|
ad.imageUrl && ad.mediaPlacement === "top" && !ad.isStreaming && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
@@ -1292,7 +1301,7 @@ var InlineAd = ({ code, messageId, wrapper }) => {
|
|
|
1292
1301
|
MarkdownText,
|
|
1293
1302
|
{
|
|
1294
1303
|
onLinkClick: () => context?.onAdClickInternal(ad),
|
|
1295
|
-
content:
|
|
1304
|
+
content: adContent
|
|
1296
1305
|
}
|
|
1297
1306
|
) }),
|
|
1298
1307
|
ad.imageUrl && ad.mediaPlacement === "bottom" && !ad.isStreaming && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
package/dist/index.mjs
CHANGED
|
@@ -71,7 +71,7 @@ var fetchRetry = async (input, init, maxRetries = 3, retryPeriod = 500) => {
|
|
|
71
71
|
};
|
|
72
72
|
var fixUrl = (adserverUrl, ad) => {
|
|
73
73
|
if (ad.content) {
|
|
74
|
-
ad.content = ad.content.replace("/
|
|
74
|
+
ad.content = ad.content.replace("/impression/", `${adserverUrl}/impression/`);
|
|
75
75
|
}
|
|
76
76
|
return { ...ad, url: `${adserverUrl}${ad.url}` };
|
|
77
77
|
};
|
|
@@ -79,7 +79,8 @@ var mergeAds = ({
|
|
|
79
79
|
initAds,
|
|
80
80
|
preloadAds,
|
|
81
81
|
streamAds,
|
|
82
|
-
viewedAds
|
|
82
|
+
viewedAds,
|
|
83
|
+
clickedAds
|
|
83
84
|
}) => {
|
|
84
85
|
const ads = [...initAds];
|
|
85
86
|
if (Array.isArray(preloadAds)) {
|
|
@@ -106,6 +107,7 @@ var mergeAds = ({
|
|
|
106
107
|
}
|
|
107
108
|
for (const ad of ads) {
|
|
108
109
|
ad.viewed = viewedAds.includes(ad?.id || "placeholder");
|
|
110
|
+
ad.clicked = clickedAds.includes(ad?.id || "placeholder");
|
|
109
111
|
}
|
|
110
112
|
return ads;
|
|
111
113
|
};
|
|
@@ -175,9 +177,11 @@ var parseMessageText = (text) => {
|
|
|
175
177
|
import log from "loglevel";
|
|
176
178
|
|
|
177
179
|
// package.json
|
|
178
|
-
var version = "0.0.5-rc.
|
|
180
|
+
var version = "0.0.5-rc.8";
|
|
179
181
|
|
|
180
182
|
// src/hooks/useInitializeAds.tsx
|
|
183
|
+
var SINGLE_INIT_TIMEOUT_BUDGET_MS = 3e3;
|
|
184
|
+
var SINGLE_INIT_RETRIES = 3;
|
|
181
185
|
async function initialize(adServerUrl, publisherToken, userId, conversationId, legacyVisitorId, character) {
|
|
182
186
|
log.log("[BRAIN] init ads started");
|
|
183
187
|
const response = await fetchRetry(
|
|
@@ -195,8 +199,8 @@ async function initialize(adServerUrl, publisherToken, userId, conversationId, l
|
|
|
195
199
|
character
|
|
196
200
|
})
|
|
197
201
|
},
|
|
198
|
-
|
|
199
|
-
|
|
202
|
+
SINGLE_INIT_TIMEOUT_BUDGET_MS,
|
|
203
|
+
SINGLE_INIT_RETRIES
|
|
200
204
|
);
|
|
201
205
|
const {
|
|
202
206
|
sessionId,
|
|
@@ -689,8 +693,8 @@ function useStreamAds({
|
|
|
689
693
|
isLoading: false,
|
|
690
694
|
isStreaming: true,
|
|
691
695
|
content: content.replace(
|
|
692
|
-
new RegExp(`/
|
|
693
|
-
`/
|
|
696
|
+
new RegExp(`/impression/${adData.product.id}/redirect`, "g"),
|
|
697
|
+
`/impression/${adData.id}/redirect`
|
|
694
698
|
)
|
|
695
699
|
});
|
|
696
700
|
return newAd;
|
|
@@ -787,6 +791,7 @@ var AdsProviderWithoutBoundary = ({
|
|
|
787
791
|
...props
|
|
788
792
|
}) => {
|
|
789
793
|
const [viewedAds, setViewedAds] = useState4([]);
|
|
794
|
+
const [clickedAds, setClickedAds] = useState4([]);
|
|
790
795
|
const adServerUrlOrDefault = adserverUrl || "https://server.megabrain.co";
|
|
791
796
|
log5.setLevel(logLevel || "ERROR");
|
|
792
797
|
const {
|
|
@@ -831,13 +836,7 @@ var AdsProviderWithoutBoundary = ({
|
|
|
831
836
|
enabledPlacements,
|
|
832
837
|
publisherToken
|
|
833
838
|
});
|
|
834
|
-
const ads = mergeAds({ initAds, preloadAds, streamAds, viewedAds });
|
|
835
|
-
if (props.throwError && Math.random() < 0.1) {
|
|
836
|
-
throw new Error("Test error");
|
|
837
|
-
}
|
|
838
|
-
if (props.throwError && Math.random() < 0.1) {
|
|
839
|
-
Promise.reject(new Error("Test async error"));
|
|
840
|
-
}
|
|
839
|
+
const ads = mergeAds({ initAds, preloadAds, streamAds, viewedAds, clickedAds });
|
|
841
840
|
const markAdAsViewed = (ad) => {
|
|
842
841
|
log5.debug("[Brain] Calling onAdView");
|
|
843
842
|
onAdView && onAdView({
|
|
@@ -858,6 +857,13 @@ var AdsProviderWithoutBoundary = ({
|
|
|
858
857
|
messageId: ad.messageId,
|
|
859
858
|
content: ad.content
|
|
860
859
|
});
|
|
860
|
+
if (!ad.id) {
|
|
861
|
+
return;
|
|
862
|
+
}
|
|
863
|
+
if (clickedAds.includes(ad.id)) {
|
|
864
|
+
return;
|
|
865
|
+
}
|
|
866
|
+
setClickedAds((old) => [...old, ad.id]);
|
|
861
867
|
};
|
|
862
868
|
return /* @__PURE__ */ jsx(
|
|
863
869
|
AdsContext.Provider,
|
|
@@ -928,8 +934,7 @@ var AdsProvider = ({
|
|
|
928
934
|
userId,
|
|
929
935
|
logLevel,
|
|
930
936
|
onAdView,
|
|
931
|
-
onAdClick
|
|
932
|
-
throwError: props.throwError
|
|
937
|
+
onAdClick
|
|
933
938
|
}
|
|
934
939
|
)
|
|
935
940
|
}
|
|
@@ -952,7 +957,7 @@ function useAdViewed(ad) {
|
|
|
952
957
|
serverUrl = context.streamAdServerUrl;
|
|
953
958
|
}
|
|
954
959
|
try {
|
|
955
|
-
const response = await fetch(`${serverUrl}/
|
|
960
|
+
const response = await fetch(`${serverUrl}/impression/${ad.id}/view`, {
|
|
956
961
|
method: "POST"
|
|
957
962
|
});
|
|
958
963
|
if (!response.ok) {
|
|
@@ -1240,6 +1245,10 @@ var InlineAd = ({ code, messageId, wrapper }) => {
|
|
|
1240
1245
|
}
|
|
1241
1246
|
}
|
|
1242
1247
|
};
|
|
1248
|
+
let adContent = ad.content;
|
|
1249
|
+
if (ad.clicked && ad.rewardContent) {
|
|
1250
|
+
adContent = ad.rewardContent;
|
|
1251
|
+
}
|
|
1243
1252
|
const content = /* @__PURE__ */ jsxs2(View3, { style: styles?.container, children: [
|
|
1244
1253
|
/* @__PURE__ */ jsx5(View3, { style: styles?.adBadgeContainer, children: /* @__PURE__ */ jsx5(Text3, { style: styles?.adBadgeText, children: "Ad" }) }),
|
|
1245
1254
|
ad.imageUrl && ad.mediaPlacement === "top" && !ad.isStreaming && /* @__PURE__ */ jsx5(
|
|
@@ -1269,7 +1278,7 @@ var InlineAd = ({ code, messageId, wrapper }) => {
|
|
|
1269
1278
|
MarkdownText,
|
|
1270
1279
|
{
|
|
1271
1280
|
onLinkClick: () => context?.onAdClickInternal(ad),
|
|
1272
|
-
content:
|
|
1281
|
+
content: adContent
|
|
1273
1282
|
}
|
|
1274
1283
|
) }),
|
|
1275
1284
|
ad.imageUrl && ad.mediaPlacement === "bottom" && !ad.isStreaming && /* @__PURE__ */ jsx5(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kontextso/sdk-react-native",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"dev": "npm-run-all dev:js",
|
|
11
11
|
"build:js": "tsup",
|
|
12
12
|
"build": "npm run build:js && cross-env NODE_ENV=development npm run test:run",
|
|
13
|
-
"test": "",
|
|
14
|
-
"test:run": "",
|
|
13
|
+
"test": "vitest --run",
|
|
14
|
+
"test:run": "vitest --run",
|
|
15
15
|
"_test": "vitest",
|
|
16
16
|
"_test:run": "vitest --run",
|
|
17
17
|
"_test:watch": "vitest --watch",
|