be-components 0.9.3 → 0.9.5
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/lib/commonjs/AdServer/components/CompanyAdCard.js +15 -3
- package/lib/commonjs/AdServer/components/CompanyAdCard.js.map +1 -1
- package/lib/commonjs/AdServer/index.js +17 -19
- package/lib/commonjs/AdServer/index.js.map +1 -1
- package/lib/commonjs/Components/ViewportObserver.js +28 -0
- package/lib/commonjs/Components/ViewportObserver.js.map +1 -0
- package/lib/module/AdServer/components/CompanyAdCard.js +13 -2
- package/lib/module/AdServer/components/CompanyAdCard.js.map +1 -1
- package/lib/module/AdServer/index.js +17 -19
- package/lib/module/AdServer/index.js.map +1 -1
- package/lib/module/Components/ViewportObserver.js +21 -0
- package/lib/module/Components/ViewportObserver.js.map +1 -0
- package/lib/typescript/src/AdServer/components/CompanyAdCard.d.ts +2 -1
- package/lib/typescript/src/AdServer/components/CompanyAdCard.d.ts.map +1 -1
- package/lib/typescript/src/AdServer/index.d.ts +2 -2
- package/lib/typescript/src/AdServer/index.d.ts.map +1 -1
- package/lib/typescript/src/Components/ViewportObserver.d.ts +2 -0
- package/lib/typescript/src/Components/ViewportObserver.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/AdServer/components/CompanyAdCard.tsx +15 -4
- package/src/AdServer/index.tsx +20 -21
- package/src/Components/ViewportObserver.tsx +27 -0
|
@@ -4,15 +4,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
|
-
|
|
9
|
+
var _ViewportObserver = require("../../Components/ViewportObserver");
|
|
10
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
10
12
|
const CompanyAdCard = ({
|
|
11
13
|
company_ad,
|
|
12
14
|
ad_type,
|
|
13
|
-
onClickAd
|
|
15
|
+
onClickAd,
|
|
16
|
+
onViewAd
|
|
14
17
|
}) => {
|
|
18
|
+
const ref = (0, _react.useRef)(null);
|
|
19
|
+
const isInViewport = (0, _ViewportObserver.useIsInViewport)(ref);
|
|
20
|
+
(0, _react.useEffect)(() => {
|
|
21
|
+
if (!isInViewport) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
onViewAd(company_ad);
|
|
25
|
+
}, [isInViewport]);
|
|
15
26
|
return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
27
|
+
ref: ref,
|
|
16
28
|
onPress: () => onClickAd(company_ad)
|
|
17
29
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.Image, {
|
|
18
30
|
source: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_ViewportObserver","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","CompanyAdCard","company_ad","ad_type","onClickAd","onViewAd","ref","useRef","isInViewport","useIsInViewport","useEffect","createElement","TouchableOpacity","onPress","Image","source","uri","ad_creative","url","style","width","height","resizeMode","_default","exports"],"sourceRoot":"../../../../src","sources":["AdServer/components/CompanyAdCard.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAF,OAAA;AAAoE,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAL,wBAAAK,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AASpE,MAAMW,aAAa,GAAGA,CAAC;EAAEC,UAAU;EAAEC,OAAO;EAAEC,SAAS;EAAEC;AAA4B,CAAC,KAAK;EAEvF,MAAMC,GAAG,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EACxB,MAAMC,YAAY,GAAG,IAAAC,iCAAe,EAACH,GAAG,CAAC;EAEzC,IAAAI,gBAAS,EAAC,MAAM;IACZ,IAAG,CAACF,YAAY,EAAC;MAAE;IAAO;IAC1BH,QAAQ,CAACH,UAAU,CAAC;EACxB,CAAC,EAAC,CAACM,YAAY,CAAC,CAAC;EAEjB,oBACIhC,MAAA,CAAAW,OAAA,CAAAwB,aAAA,CAAChC,YAAA,CAAAiC,gBAAgB;IAACN,GAAG,EAAEA,GAAI;IAACO,OAAO,EAAEA,CAAA,KAAMT,SAAS,CAACF,UAAU;EAAE,gBAC7D1B,MAAA,CAAAW,OAAA,CAAAwB,aAAA,CAAChC,YAAA,CAAAmC,KAAK;IACFC,MAAM,EAAE;MAAEC,GAAG,EAAEd,UAAU,CAACe,WAAW,CAACC;IAAI,CAAE;IAC5CC,KAAK,EAAE;MAAEC,KAAK,EAAEjB,OAAO,CAACiB,KAAK;MAAEC,MAAM,EAAElB,OAAO,CAACkB;IAAO,CAAE;IACxDC,UAAU,EAAC;EAAO,CACrB,CACa,CAAC;AAE3B,CAAC;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAArC,OAAA,GAGcc,aAAa","ignoreList":[]}
|
|
@@ -51,14 +51,15 @@ const AdProvider = ({
|
|
|
51
51
|
};
|
|
52
52
|
exports.AdProvider = AdProvider;
|
|
53
53
|
const AdServer = ({
|
|
54
|
-
|
|
54
|
+
placement,
|
|
55
55
|
ad_type,
|
|
56
56
|
onViewAd,
|
|
57
57
|
onClickAd
|
|
58
58
|
}) => {
|
|
59
59
|
const data = (0, _react.useContext)(AdContext);
|
|
60
60
|
const active_type = data.ad_types.find(t => t.ad_type == ad_type);
|
|
61
|
-
const active_placement = data.ad_placements.find(p => p.
|
|
61
|
+
const active_placement = data.ad_placements.find(p => p.placement == placement);
|
|
62
|
+
console.log(data.ad_placements);
|
|
62
63
|
if (!active_placement?.ad_buys) {
|
|
63
64
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
64
65
|
}
|
|
@@ -73,34 +74,31 @@ const AdServer = ({
|
|
|
73
74
|
const active_ad = selectedable_ads[Math.floor(Math.random() * selectedable_ads.length)];
|
|
74
75
|
//const active_ad = data.company_ads[0]
|
|
75
76
|
|
|
76
|
-
(0, _react.useEffect)(() => {
|
|
77
|
-
if (!active_ad) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
onViewAd({
|
|
81
|
-
event_name: 'ad_view',
|
|
82
|
-
level: 2,
|
|
83
|
-
event_data: {
|
|
84
|
-
ad_placement_id,
|
|
85
|
-
company_id: active_ad.company_id,
|
|
86
|
-
company_ad_buy_id: active_ad_buy.company_ad_buy_id,
|
|
87
|
-
ad_campaigns: active_ad.ad_campaigns,
|
|
88
|
-
company_ad_id: active_ad.company_ad_id
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
}, [active_ad]);
|
|
92
77
|
if (!active_ad || !active_type) {
|
|
93
78
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
94
79
|
}
|
|
95
80
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, null, /*#__PURE__*/_react.default.createElement(_CompanyAdCard.default, {
|
|
96
81
|
company_ad: active_ad,
|
|
97
82
|
ad_type: active_type,
|
|
83
|
+
onViewAd: ad => {
|
|
84
|
+
onViewAd({
|
|
85
|
+
event_name: 'ad_view',
|
|
86
|
+
level: 2,
|
|
87
|
+
event_data: {
|
|
88
|
+
ad_placement_id: active_placement.ad_placement_id,
|
|
89
|
+
company_ad_buy_id: ad.company_ad_buy_id,
|
|
90
|
+
company_ad_id: ad.company_ad_id,
|
|
91
|
+
company_id: ad.company_id,
|
|
92
|
+
ad_campaigns: ad.ad_campaigns
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
},
|
|
98
96
|
onClickAd: ad => {
|
|
99
97
|
onClickAd({
|
|
100
98
|
event_name: 'ad_click',
|
|
101
99
|
level: 1,
|
|
102
100
|
event_data: {
|
|
103
|
-
ad_placement_id,
|
|
101
|
+
ad_placement_id: active_placement.ad_placement_id,
|
|
104
102
|
company_ad_buy_id: ad.company_ad_buy_id,
|
|
105
103
|
company_ad_id: ad.company_ad_id,
|
|
106
104
|
company_id: ad.company_id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_api","_CompanyAdCard","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AdContext","createContext","loading","ad_types","ad_placements","distinct_id","undefined","session_id","AdProvider","children","ads_data","setData","useState","useEffect","AdServerApi","setEnvironment","getAds","ad_plcm","findAds","typs","getAdTypes","createElement","Provider","value","exports","AdServer","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_api","_CompanyAdCard","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AdContext","createContext","loading","ad_types","ad_placements","distinct_id","undefined","session_id","AdProvider","children","ads_data","setData","useState","useEffect","AdServerApi","setEnvironment","getAds","ad_plcm","findAds","typs","getAdTypes","createElement","Provider","value","exports","AdServer","placement","ad_type","onViewAd","onClickAd","data","useContext","active_type","find","active_placement","p","console","log","ad_buys","Fragment","active_ad_buy","Math","floor","random","length","selectedable_ads","company_ads","active_ad","View","company_ad","ad","event_name","level","event_data","ad_placement_id","company_ad_buy_id","company_ad_id","company_id","ad_campaigns","new_url","AdServerHelpers","generateUrl","landing_url","Linking","openURL","_default"],"sourceRoot":"../../../src","sources":["AdServer/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useIsInViewport = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
const useIsInViewport = ref => {
|
|
9
|
+
const [isIntersecting, setIsIntersecting] = (0, _react.useState)(false);
|
|
10
|
+
const observer = (0, _react.useMemo)(() => new IntersectionObserver(([entry]) => {
|
|
11
|
+
if (!entry) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
setIsIntersecting(entry.isIntersecting);
|
|
15
|
+
}), []);
|
|
16
|
+
(0, _react.useEffect)(() => {
|
|
17
|
+
if (!ref?.current) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
observer.observe(ref.current);
|
|
21
|
+
return () => {
|
|
22
|
+
observer.disconnect();
|
|
23
|
+
};
|
|
24
|
+
}, [ref, observer]);
|
|
25
|
+
return isIntersecting;
|
|
26
|
+
};
|
|
27
|
+
exports.useIsInViewport = useIsInViewport;
|
|
28
|
+
//# sourceMappingURL=ViewportObserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","useIsInViewport","ref","isIntersecting","setIsIntersecting","useState","observer","useMemo","IntersectionObserver","entry","useEffect","current","observe","disconnect","exports"],"sourceRoot":"../../../src","sources":["Components/ViewportObserver.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,eAAe,GAAIC,GAAO,IAAK;EACxC,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAE3D,MAAMC,QAAQ,GAAG,IAAAC,cAAO,EACtB,MACE,IAAIC,oBAAoB,CAAC,CAAC,CAACC,KAAK,CAAC,KAAK;IAClC,IAAG,CAACA,KAAK,EAAC;MAAE;IAAO;IACnBL,iBAAiB,CAACK,KAAK,CAACN,cAAc,CAAC;EAC3C,CACA,CAAC,EACH,EACF,CAAC;EAED,IAAAO,gBAAS,EAAC,MAAM;IACZ,IAAG,CAACR,GAAG,EAAES,OAAO,EAAC;MAAE;IAAO;IAC5BL,QAAQ,CAACM,OAAO,CAACV,GAAG,CAACS,OAAO,CAAC;IAE7B,OAAO,MAAM;MACXL,QAAQ,CAACO,UAAU,CAAC,CAAC;IACvB,CAAC;EAEH,CAAC,EAAE,CAACX,GAAG,EAAEI,QAAQ,CAAC,CAAC;EAEnB,OAAOH,cAAc;AACvB,CAAC;AAAAW,OAAA,CAAAb,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -1,11 +1,22 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
2
|
import { Image, TouchableOpacity } from "react-native";
|
|
3
|
+
import { useIsInViewport } from '../../Components/ViewportObserver';
|
|
3
4
|
const CompanyAdCard = ({
|
|
4
5
|
company_ad,
|
|
5
6
|
ad_type,
|
|
6
|
-
onClickAd
|
|
7
|
+
onClickAd,
|
|
8
|
+
onViewAd
|
|
7
9
|
}) => {
|
|
10
|
+
const ref = useRef(null);
|
|
11
|
+
const isInViewport = useIsInViewport(ref);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (!isInViewport) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
onViewAd(company_ad);
|
|
17
|
+
}, [isInViewport]);
|
|
8
18
|
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
19
|
+
ref: ref,
|
|
9
20
|
onPress: () => onClickAd(company_ad)
|
|
10
21
|
}, /*#__PURE__*/React.createElement(Image, {
|
|
11
22
|
source: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Image","TouchableOpacity","CompanyAdCard","company_ad","ad_type","onClickAd","createElement","onPress","source","uri","ad_creative","url","style","width","height","resizeMode"],"sourceRoot":"../../../../src","sources":["AdServer/components/CompanyAdCard.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","Image","TouchableOpacity","useIsInViewport","CompanyAdCard","company_ad","ad_type","onClickAd","onViewAd","ref","isInViewport","createElement","onPress","source","uri","ad_creative","url","style","width","height","resizeMode"],"sourceRoot":"../../../../src","sources":["AdServer/components/CompanyAdCard.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SAASC,KAAK,EAAEC,gBAAgB,QAAQ,cAAc;AAEtD,SAASC,eAAe,QAAQ,mCAAmC;AASnE,MAAMC,aAAa,GAAGA,CAAC;EAAEC,UAAU;EAAEC,OAAO;EAAEC,SAAS;EAAEC;AAA4B,CAAC,KAAK;EAEvF,MAAMC,GAAG,GAAGT,MAAM,CAAC,IAAI,CAAC;EACxB,MAAMU,YAAY,GAAGP,eAAe,CAACM,GAAG,CAAC;EAEzCV,SAAS,CAAC,MAAM;IACZ,IAAG,CAACW,YAAY,EAAC;MAAE;IAAO;IAC1BF,QAAQ,CAACH,UAAU,CAAC;EACxB,CAAC,EAAC,CAACK,YAAY,CAAC,CAAC;EAEjB,oBACIZ,KAAA,CAAAa,aAAA,CAACT,gBAAgB;IAACO,GAAG,EAAEA,GAAI;IAACG,OAAO,EAAEA,CAAA,KAAML,SAAS,CAACF,UAAU;EAAE,gBAC7DP,KAAA,CAAAa,aAAA,CAACV,KAAK;IACFY,MAAM,EAAE;MAAEC,GAAG,EAAET,UAAU,CAACU,WAAW,CAACC;IAAI,CAAE;IAC5CC,KAAK,EAAE;MAAEC,KAAK,EAAEZ,OAAO,CAACY,KAAK;MAAEC,MAAM,EAAEb,OAAO,CAACa;IAAO,CAAE;IACxDC,UAAU,EAAC;EAAO,CACrB,CACa,CAAC;AAE3B,CAAC;AAGD,eAAehB,aAAa","ignoreList":[]}
|
|
@@ -41,14 +41,15 @@ export const AdProvider = ({
|
|
|
41
41
|
}, children);
|
|
42
42
|
};
|
|
43
43
|
const AdServer = ({
|
|
44
|
-
|
|
44
|
+
placement,
|
|
45
45
|
ad_type,
|
|
46
46
|
onViewAd,
|
|
47
47
|
onClickAd
|
|
48
48
|
}) => {
|
|
49
49
|
const data = useContext(AdContext);
|
|
50
50
|
const active_type = data.ad_types.find(t => t.ad_type == ad_type);
|
|
51
|
-
const active_placement = data.ad_placements.find(p => p.
|
|
51
|
+
const active_placement = data.ad_placements.find(p => p.placement == placement);
|
|
52
|
+
console.log(data.ad_placements);
|
|
52
53
|
if (!active_placement?.ad_buys) {
|
|
53
54
|
return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
54
55
|
}
|
|
@@ -63,34 +64,31 @@ const AdServer = ({
|
|
|
63
64
|
const active_ad = selectedable_ads[Math.floor(Math.random() * selectedable_ads.length)];
|
|
64
65
|
//const active_ad = data.company_ads[0]
|
|
65
66
|
|
|
66
|
-
useEffect(() => {
|
|
67
|
-
if (!active_ad) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
onViewAd({
|
|
71
|
-
event_name: 'ad_view',
|
|
72
|
-
level: 2,
|
|
73
|
-
event_data: {
|
|
74
|
-
ad_placement_id,
|
|
75
|
-
company_id: active_ad.company_id,
|
|
76
|
-
company_ad_buy_id: active_ad_buy.company_ad_buy_id,
|
|
77
|
-
ad_campaigns: active_ad.ad_campaigns,
|
|
78
|
-
company_ad_id: active_ad.company_ad_id
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}, [active_ad]);
|
|
82
67
|
if (!active_ad || !active_type) {
|
|
83
68
|
return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
84
69
|
}
|
|
85
70
|
return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(CompanyAdCard, {
|
|
86
71
|
company_ad: active_ad,
|
|
87
72
|
ad_type: active_type,
|
|
73
|
+
onViewAd: ad => {
|
|
74
|
+
onViewAd({
|
|
75
|
+
event_name: 'ad_view',
|
|
76
|
+
level: 2,
|
|
77
|
+
event_data: {
|
|
78
|
+
ad_placement_id: active_placement.ad_placement_id,
|
|
79
|
+
company_ad_buy_id: ad.company_ad_buy_id,
|
|
80
|
+
company_ad_id: ad.company_ad_id,
|
|
81
|
+
company_id: ad.company_id,
|
|
82
|
+
ad_campaigns: ad.ad_campaigns
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
},
|
|
88
86
|
onClickAd: ad => {
|
|
89
87
|
onClickAd({
|
|
90
88
|
event_name: 'ad_click',
|
|
91
89
|
level: 1,
|
|
92
90
|
event_data: {
|
|
93
|
-
ad_placement_id,
|
|
91
|
+
ad_placement_id: active_placement.ad_placement_id,
|
|
94
92
|
company_ad_buy_id: ad.company_ad_buy_id,
|
|
95
93
|
company_ad_id: ad.company_ad_id,
|
|
96
94
|
company_id: ad.company_id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useContext","useEffect","useState","View","Linking","AdServerApi","AdServerHelpers","CompanyAdCard","AdContext","loading","ad_types","ad_placements","distinct_id","undefined","session_id","AdProvider","children","ads_data","setData","setEnvironment","getAds","ad_plcm","findAds","typs","getAdTypes","createElement","Provider","value","AdServer","
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useEffect","useState","View","Linking","AdServerApi","AdServerHelpers","CompanyAdCard","AdContext","loading","ad_types","ad_placements","distinct_id","undefined","session_id","AdProvider","children","ads_data","setData","setEnvironment","getAds","ad_plcm","findAds","typs","getAdTypes","createElement","Provider","value","AdServer","placement","ad_type","onViewAd","onClickAd","data","active_type","find","t","active_placement","p","console","log","ad_buys","Fragment","active_ad_buy","Math","floor","random","length","selectedable_ads","company_ads","active_ad","company_ad","ad","event_name","level","event_data","ad_placement_id","company_ad_buy_id","company_ad_id","company_id","ad_campaigns","new_url","generateUrl","landing_url","openURL"],"sourceRoot":"../../../src","sources":["AdServer/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useState, useMemo, useEffect } from "react";
|
|
2
|
+
export const useIsInViewport = ref => {
|
|
3
|
+
const [isIntersecting, setIsIntersecting] = useState(false);
|
|
4
|
+
const observer = useMemo(() => new IntersectionObserver(([entry]) => {
|
|
5
|
+
if (!entry) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
setIsIntersecting(entry.isIntersecting);
|
|
9
|
+
}), []);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (!ref?.current) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
observer.observe(ref.current);
|
|
15
|
+
return () => {
|
|
16
|
+
observer.disconnect();
|
|
17
|
+
};
|
|
18
|
+
}, [ref, observer]);
|
|
19
|
+
return isIntersecting;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=ViewportObserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","useMemo","useEffect","useIsInViewport","ref","isIntersecting","setIsIntersecting","observer","IntersectionObserver","entry","current","observe","disconnect"],"sourceRoot":"../../../src","sources":["Components/ViewportObserver.tsx"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,OAAO,EAAEC,SAAS,QAAQ,OAAO;AAEpD,OAAO,MAAMC,eAAe,GAAIC,GAAO,IAAK;EACxC,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGN,QAAQ,CAAC,KAAK,CAAC;EAE3D,MAAMO,QAAQ,GAAGN,OAAO,CACtB,MACE,IAAIO,oBAAoB,CAAC,CAAC,CAACC,KAAK,CAAC,KAAK;IAClC,IAAG,CAACA,KAAK,EAAC;MAAE;IAAO;IACnBH,iBAAiB,CAACG,KAAK,CAACJ,cAAc,CAAC;EAC3C,CACA,CAAC,EACH,EACF,CAAC;EAEDH,SAAS,CAAC,MAAM;IACZ,IAAG,CAACE,GAAG,EAAEM,OAAO,EAAC;MAAE;IAAO;IAC5BH,QAAQ,CAACI,OAAO,CAACP,GAAG,CAACM,OAAO,CAAC;IAE7B,OAAO,MAAM;MACXH,QAAQ,CAACK,UAAU,CAAC,CAAC;IACvB,CAAC;EAEH,CAAC,EAAE,CAACR,GAAG,EAAEG,QAAQ,CAAC,CAAC;EAEnB,OAAOF,cAAc;AACvB,CAAC","ignoreList":[]}
|
|
@@ -4,7 +4,8 @@ type CompanyAdCardProps = {
|
|
|
4
4
|
company_ad: CompanyAdvertisementProps;
|
|
5
5
|
ad_type: AdTypeProps;
|
|
6
6
|
onClickAd: (ad: CompanyAdvertisementProps) => void;
|
|
7
|
+
onViewAd: (ad: CompanyAdvertisementProps) => void;
|
|
7
8
|
};
|
|
8
|
-
declare const CompanyAdCard: ({ company_ad, ad_type, onClickAd }: CompanyAdCardProps) => React.JSX.Element;
|
|
9
|
+
declare const CompanyAdCard: ({ company_ad, ad_type, onClickAd, onViewAd }: CompanyAdCardProps) => React.JSX.Element;
|
|
9
10
|
export default CompanyAdCard;
|
|
10
11
|
//# sourceMappingURL=CompanyAdCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyAdCard.d.ts","sourceRoot":"","sources":["../../../../../src/AdServer/components/CompanyAdCard.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"CompanyAdCard.d.ts","sourceRoot":"","sources":["../../../../../src/AdServer/components/CompanyAdCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAI1E,KAAK,kBAAkB,GAAG;IACtB,UAAU,EAAE,yBAAyB,CAAA;IACrC,OAAO,EAAC,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,EAAE,EAAC,yBAAyB,KAAK,IAAI,CAAC;IAClD,QAAQ,EAAE,CAAC,EAAE,EAAC,yBAAyB,KAAK,IAAI,CAAA;CACnD,CAAA;AACD,QAAA,MAAM,aAAa,iDAAiD,kBAAkB,sBAmBrF,CAAA;AAGD,eAAe,aAAa,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { BEEventProps } from '../Observer/api/types';
|
|
3
3
|
type AdServerProps = {
|
|
4
|
-
|
|
4
|
+
placement: string;
|
|
5
5
|
ad_type: string;
|
|
6
6
|
onViewAd: (be_event: BEEventProps) => void;
|
|
7
7
|
onClickAd: (be_event: BEEventProps) => void;
|
|
@@ -12,6 +12,6 @@ type AdProviderProps = {
|
|
|
12
12
|
session_id?: string;
|
|
13
13
|
};
|
|
14
14
|
export declare const AdProvider: ({ children, distinct_id, session_id }: AdProviderProps) => React.JSX.Element;
|
|
15
|
-
declare const AdServer: ({
|
|
15
|
+
declare const AdServer: ({ placement, ad_type, onViewAd, onClickAd }: AdServerProps) => React.JSX.Element;
|
|
16
16
|
export default AdServer;
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/AdServer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAK9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,KAAK,aAAa,GAAG;IACjB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/AdServer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAK9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,KAAK,aAAa,GAAG;IACjB,SAAS,EAAC,MAAM,CAAC;IACjB,OAAO,EAAC,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,QAAQ,EAAC,YAAY,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,QAAQ,EAAC,YAAY,KAAK,IAAI,CAAC;CAC9C,CAAA;AAUD,KAAK,eAAe,GAAG;IACnB,QAAQ,EAAC,GAAG,CAAC;IACb,WAAW,CAAC,EAAC,MAAM,CAAC;IACpB,UAAU,CAAC,EAAC,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,UAAU,0CAA0C,eAAe,sBAiC/E,CAAA;AAED,QAAA,MAAM,QAAQ,gDAAgD,aAAa,sBAsD1E,CAAA;AAED,eAAe,QAAQ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewportObserver.d.ts","sourceRoot":"","sources":["../../../../src/Components/ViewportObserver.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,QAAQ,GAAG,YAwBpC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,27 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
2
|
import { Image, TouchableOpacity } from "react-native"
|
|
3
3
|
import type { AdTypeProps, CompanyAdvertisementProps } from '../../types';
|
|
4
|
+
import { useIsInViewport } from '../../Components/ViewportObserver';
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
type CompanyAdCardProps = {
|
|
7
8
|
company_ad: CompanyAdvertisementProps
|
|
8
9
|
ad_type:AdTypeProps,
|
|
9
|
-
onClickAd: (ad:CompanyAdvertisementProps) => void
|
|
10
|
+
onClickAd: (ad:CompanyAdvertisementProps) => void,
|
|
11
|
+
onViewAd: (ad:CompanyAdvertisementProps) => void
|
|
10
12
|
}
|
|
11
|
-
const CompanyAdCard = ({ company_ad, ad_type, onClickAd }:CompanyAdCardProps) => {
|
|
13
|
+
const CompanyAdCard = ({ company_ad, ad_type, onClickAd, onViewAd }:CompanyAdCardProps) => {
|
|
14
|
+
|
|
15
|
+
const ref = useRef(null)
|
|
16
|
+
const isInViewport = useIsInViewport(ref)
|
|
17
|
+
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if(!isInViewport){ return }
|
|
20
|
+
onViewAd(company_ad)
|
|
21
|
+
},[isInViewport])
|
|
22
|
+
|
|
12
23
|
return (
|
|
13
|
-
<TouchableOpacity onPress={() => onClickAd(company_ad)}>
|
|
24
|
+
<TouchableOpacity ref={ref} onPress={() => onClickAd(company_ad)}>
|
|
14
25
|
<Image
|
|
15
26
|
source={{ uri: company_ad.ad_creative.url }}
|
|
16
27
|
style={{ width: ad_type.width, height: ad_type.height }}
|
package/src/AdServer/index.tsx
CHANGED
|
@@ -7,7 +7,7 @@ import type { BEEventProps } from '../Observer/api/types';
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
type AdServerProps = {
|
|
10
|
-
|
|
10
|
+
placement:string,
|
|
11
11
|
ad_type:string,
|
|
12
12
|
onViewAd: (be_event:BEEventProps) => void,
|
|
13
13
|
onClickAd: (be_event:BEEventProps) => void,
|
|
@@ -62,13 +62,13 @@ export const AdProvider = ({ children, distinct_id, session_id }:AdProviderProps
|
|
|
62
62
|
)
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
const AdServer = ({
|
|
65
|
+
const AdServer = ({ placement, ad_type, onViewAd, onClickAd }:AdServerProps) => {
|
|
66
66
|
|
|
67
67
|
|
|
68
68
|
const data = useContext(AdContext);
|
|
69
|
-
|
|
70
69
|
const active_type = data.ad_types.find(t => t.ad_type == ad_type)
|
|
71
|
-
const active_placement = data.ad_placements.find(p => p.
|
|
70
|
+
const active_placement = data.ad_placements.find(p => p.placement == placement)
|
|
71
|
+
console.log(data.ad_placements)
|
|
72
72
|
if(!active_placement?.ad_buys){ return <></> }
|
|
73
73
|
const active_ad_buy = active_placement.ad_buys[Math.floor(Math.random()*active_placement.ad_buys.length)]
|
|
74
74
|
if(!active_ad_buy){ return <></> }
|
|
@@ -77,33 +77,32 @@ const AdServer = ({ ad_placement_id, ad_type, onViewAd, onClickAd }:AdServerProp
|
|
|
77
77
|
const active_ad = selectedable_ads[Math.floor(Math.random()*selectedable_ads.length)]
|
|
78
78
|
//const active_ad = data.company_ads[0]
|
|
79
79
|
|
|
80
|
-
useEffect(() => {
|
|
81
|
-
if(!active_ad){ return }
|
|
82
|
-
onViewAd({
|
|
83
|
-
event_name:'ad_view',
|
|
84
|
-
level:2,
|
|
85
|
-
event_data: {
|
|
86
|
-
ad_placement_id,
|
|
87
|
-
company_id: active_ad.company_id,
|
|
88
|
-
company_ad_buy_id: active_ad_buy.company_ad_buy_id,
|
|
89
|
-
ad_campaigns: active_ad.ad_campaigns,
|
|
90
|
-
company_ad_id: active_ad.company_ad_id
|
|
91
|
-
}
|
|
92
|
-
})
|
|
93
|
-
},[active_ad])
|
|
94
|
-
|
|
95
80
|
if(!active_ad || !active_type){ return <></> }
|
|
96
|
-
|
|
81
|
+
return (
|
|
97
82
|
<View>
|
|
98
83
|
<CompanyAdCard
|
|
99
84
|
company_ad={active_ad}
|
|
100
85
|
ad_type={active_type}
|
|
86
|
+
onViewAd={(ad) => {
|
|
87
|
+
onViewAd({
|
|
88
|
+
event_name:'ad_view',
|
|
89
|
+
level:2,
|
|
90
|
+
event_data: {
|
|
91
|
+
ad_placement_id:active_placement.ad_placement_id,
|
|
92
|
+
company_ad_buy_id: ad.company_ad_buy_id,
|
|
93
|
+
company_ad_id: ad.company_ad_id,
|
|
94
|
+
company_id: ad.company_id,
|
|
95
|
+
ad_campaigns: ad.ad_campaigns
|
|
96
|
+
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
}}
|
|
101
100
|
onClickAd={(ad) => {
|
|
102
101
|
onClickAd({
|
|
103
102
|
event_name:'ad_click',
|
|
104
103
|
level:1,
|
|
105
104
|
event_data: {
|
|
106
|
-
ad_placement_id,
|
|
105
|
+
ad_placement_id:active_placement.ad_placement_id,
|
|
107
106
|
company_ad_buy_id: ad.company_ad_buy_id,
|
|
108
107
|
company_ad_id: ad.company_ad_id,
|
|
109
108
|
company_id: ad.company_id,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useState, useMemo, useEffect } from "react";
|
|
2
|
+
|
|
3
|
+
export const useIsInViewport = (ref:any) => {
|
|
4
|
+
const [isIntersecting, setIsIntersecting] = useState(false);
|
|
5
|
+
|
|
6
|
+
const observer = useMemo(
|
|
7
|
+
() =>
|
|
8
|
+
new IntersectionObserver(([entry]) => {
|
|
9
|
+
if(!entry){ return }
|
|
10
|
+
setIsIntersecting(entry.isIntersecting)
|
|
11
|
+
}
|
|
12
|
+
),
|
|
13
|
+
[],
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if(!ref?.current){ return }
|
|
18
|
+
observer.observe(ref.current);
|
|
19
|
+
|
|
20
|
+
return () => {
|
|
21
|
+
observer.disconnect();
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
}, [ref, observer]);
|
|
25
|
+
|
|
26
|
+
return isIntersecting;
|
|
27
|
+
}
|