tapjoy-react-native-sdk 13.2.1 → 13.3.0

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 (46) hide show
  1. package/CODEOWNERS +1 -0
  2. package/android/build.gradle +1 -2
  3. package/android/src/main/java/com/tapjoyreactnativesdk/TJOfferwallDiscoverNativeView.kt +90 -0
  4. package/android/src/main/java/com/tapjoyreactnativesdk/TJOfferwallDiscoverNativeViewManager.kt +50 -0
  5. package/android/src/main/java/com/tapjoyreactnativesdk/TapjoyReactNativeSdkModule.kt +1 -0
  6. package/android/src/main/java/com/tapjoyreactnativesdk/TapjoyReactNativeSdkPackage.kt +1 -3
  7. package/example/android/app/build.gradle +1 -1
  8. package/example/android/app/src/main/AndroidManifest.xml +2 -2
  9. package/example/android/app/src/main/res/xml/network_security_config.xml +2 -0
  10. package/example/package.json +1 -1
  11. package/example/src/App.tsx +2 -0
  12. package/example/src/MainScreen.tsx +1 -1
  13. package/example/src/OfferwallDiscoverScreen.tsx +193 -0
  14. package/example/src/OfferwallScreen.tsx +1 -1
  15. package/example/src/Styles.ts +15 -1
  16. package/ios/TJOfferwallDiscoverNativeViewManager.m +10 -0
  17. package/ios/TJOfferwallDiscoverNativeViewManager.swift +81 -0
  18. package/ios/TapjoyOfferwallDiscoverNativeView.swift +23 -0
  19. package/ios/TapjoyReactNativeSdk-Bridging-Header.h +1 -0
  20. package/ios/TapjoyReactNativeSdk.xcodeproj/project.pbxproj +10 -4
  21. package/lib/commonjs/TJOfferwallDiscoverView.js +37 -0
  22. package/lib/commonjs/TJOfferwallDiscoverView.js.map +1 -0
  23. package/lib/commonjs/TJUtil.js +21 -0
  24. package/lib/commonjs/TJUtil.js.map +1 -0
  25. package/lib/commonjs/TJVersion.js +1 -1
  26. package/lib/commonjs/index.js +7 -0
  27. package/lib/commonjs/index.js.map +1 -1
  28. package/lib/module/TJOfferwallDiscoverView.js +29 -0
  29. package/lib/module/TJOfferwallDiscoverView.js.map +1 -0
  30. package/lib/module/TJUtil.js +14 -0
  31. package/lib/module/TJUtil.js.map +1 -0
  32. package/lib/module/TJVersion.js +1 -1
  33. package/lib/module/index.js +2 -1
  34. package/lib/module/index.js.map +1 -1
  35. package/lib/typescript/TJOfferwallDiscoverView.d.ts +18 -0
  36. package/lib/typescript/TJOfferwallDiscoverView.d.ts.map +1 -0
  37. package/lib/typescript/TJUtil.d.ts +5 -0
  38. package/lib/typescript/TJUtil.d.ts.map +1 -0
  39. package/lib/typescript/index.d.ts +2 -1
  40. package/lib/typescript/index.d.ts.map +1 -1
  41. package/package.json +3 -2
  42. package/src/TJOfferwallDiscoverView.tsx +57 -0
  43. package/src/TJUtil.ts +14 -0
  44. package/src/TJVersion.ts +1 -1
  45. package/src/index.ts +2 -1
  46. package/tapjoy-react-native-sdk.podspec +1 -1
package/CODEOWNERS ADDED
@@ -0,0 +1 @@
1
+ * @Tapjoy/sdk
@@ -22,7 +22,6 @@ def isNewArchitectureEnabled() {
22
22
  apply plugin: "com.android.library"
23
23
  apply plugin: "kotlin-android"
24
24
 
25
-
26
25
  def appProject = rootProject.allprojects.find { it.plugins.hasPlugin('com.android.application') }
27
26
 
28
27
  if (isNewArchitectureEnabled()) {
@@ -82,7 +81,7 @@ dependencies {
82
81
  //noinspection GradleDynamicVersion
83
82
  implementation 'com.facebook.react:react-native:0.71.4'
84
83
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
85
- implementation 'com.tapjoy:tapjoy-android-sdk:13.2.1'
84
+ implementation 'com.tapjoy:tapjoy-android-sdk:13.3.0'
86
85
  implementation "com.google.android.gms:play-services-ads-identifier:18.0.1"
87
86
  }
88
87
 
@@ -0,0 +1,90 @@
1
+ package com.tapjoyreactnativesdk
2
+
3
+ import android.content.Context
4
+ import android.util.AttributeSet
5
+ import com.facebook.react.bridge.Arguments
6
+ import com.facebook.react.bridge.ReactContext
7
+ import com.facebook.react.bridge.WritableMap
8
+ import com.facebook.react.uimanager.UIManagerHelper
9
+ import com.tapjoy.TJError
10
+ import com.tapjoy.TJOfferwallDiscoverListener
11
+ import com.tapjoy.TJOfferwallDiscoverView
12
+ import com.facebook.react.uimanager.events.Event
13
+
14
+ class TJOfferwallDiscoverNativeView : TJOfferwallDiscoverView, TJOfferwallDiscoverListener {
15
+
16
+ constructor(context: Context) : super(context)
17
+
18
+ constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
19
+
20
+ constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
21
+
22
+ /**
23
+ * Request OfferwallDiscover content.
24
+ *
25
+ * @Param placement: Placement name.
26
+ */
27
+ fun requestContent(placement: String) {
28
+ super.setListener(this)
29
+ super.requestContent(context, placement)
30
+ }
31
+
32
+ // TJOfferwallDiscoverListener implementation.
33
+ private fun sendEvent(event: Event<*>) {
34
+ val reactContext = context as ReactContext
35
+ UIManagerHelper
36
+ .getEventDispatcherForReactTag(reactContext, id)
37
+ ?.dispatchEvent(event)
38
+ }
39
+
40
+ override fun requestSuccess() {
41
+ val data = Arguments.createMap().apply {
42
+ putString("result", "requestSuccess")
43
+ }
44
+ sendEvent(OfferwallDiscoverEvent(UIManagerHelper.getSurfaceId(this), id, "onRequestSuccess", data))
45
+ }
46
+
47
+ override fun requestFailure(error: TJError) {
48
+ val data = Arguments.createMap().apply {
49
+ putInt("errorCode", error.code)
50
+ putString("errorMessage", error.message)
51
+ }
52
+ sendEvent(OfferwallDiscoverEvent(UIManagerHelper.getSurfaceId(this), id, "onRequestFailure", data))
53
+ }
54
+
55
+ override fun contentReady() {
56
+ val data = Arguments.createMap().apply {
57
+ putString("result", "contentReady")
58
+ }
59
+ sendEvent(OfferwallDiscoverEvent(UIManagerHelper.getSurfaceId(this), id, "onContentReady", data))
60
+ }
61
+
62
+ override fun contentError(error: TJError) {
63
+ val data = Arguments.createMap().apply {
64
+ putInt("errorCode", error.code)
65
+ putString("errorMessage", error.message)
66
+ }
67
+ sendEvent(OfferwallDiscoverEvent(UIManagerHelper.getSurfaceId(this), id, "onContentError", data))
68
+ }
69
+
70
+ override fun requestLayout() {
71
+ super.requestLayout()
72
+ post(measureAndLayout)
73
+ }
74
+
75
+ private val measureAndLayout = Runnable {
76
+ measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
77
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY))
78
+ layout(left, top, right, bottom)
79
+ }
80
+ }
81
+
82
+ class OfferwallDiscoverEvent(surfaceId: Int, viewId: Int, private val eventName: String, private val data: WritableMap) : Event<OfferwallDiscoverEvent>(surfaceId, viewId) {
83
+ override fun getEventName() = eventName
84
+
85
+ // All events for a given view can be coalesced.
86
+ override fun getCoalescingKey(): Short = 0
87
+
88
+ override fun getEventData(): WritableMap? = data
89
+
90
+ }
@@ -0,0 +1,50 @@
1
+ package com.tapjoyreactnativesdk
2
+
3
+ import com.facebook.react.bridge.ReactApplicationContext
4
+ import com.facebook.react.bridge.ReadableArray
5
+ import com.facebook.react.common.MapBuilder
6
+ import com.facebook.react.uimanager.SimpleViewManager
7
+ import com.facebook.react.uimanager.ThemedReactContext
8
+
9
+ enum class Command(private val value:String) {
10
+ REQUEST_CONTENT("requestContent"),
11
+ CLEAR_CONTENT("clearContent");
12
+
13
+ fun getValue(): String {
14
+ return value
15
+ }
16
+ }
17
+
18
+ class TJOfferwallDiscoverNativeViewManager(
19
+ private val callerContext: ReactApplicationContext
20
+ ) : SimpleViewManager<TJOfferwallDiscoverNativeView>() {
21
+
22
+ var view: TJOfferwallDiscoverNativeView? = null;
23
+ override fun getName() = REACT_CLASS
24
+
25
+ companion object {
26
+ const val REACT_CLASS = "TJOfferwallDiscoverNativeView"
27
+ }
28
+
29
+ override fun createViewInstance(context: ThemedReactContext): TJOfferwallDiscoverNativeView {
30
+ return TJOfferwallDiscoverNativeView(context)
31
+ }
32
+
33
+ override fun receiveCommand(view: TJOfferwallDiscoverNativeView, commandId: String, args: ReadableArray?) {
34
+ super.receiveCommand(view, commandId, args)
35
+ if (commandId == Command.REQUEST_CONTENT.getValue()) {
36
+ view.requestContent(args!!.getString(0))
37
+ } else if (commandId == Command.CLEAR_CONTENT.getValue()) {
38
+ view.clearContent()
39
+ }
40
+ }
41
+
42
+ override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any?>? {
43
+ return MapBuilder.of<String, Any?>(
44
+ "onRequestSuccess", MapBuilder.of("registrationName", "onRequestSuccess"),
45
+ "onRequestFailure", MapBuilder.of("registrationName", "onRequestFailure"),
46
+ "onContentReady", MapBuilder.of("registrationName", "onContentReady"),
47
+ "onContentError", MapBuilder.of("registrationName", "onContentError")
48
+ )
49
+ }
50
+ }
@@ -260,6 +260,7 @@ class TapjoyReactNativeSdkModule(reactContext: ReactApplicationContext) :
260
260
 
261
261
  }
262
262
  }
263
+ Tapjoy.setActivity(this.currentActivity)
263
264
  val placement = Tapjoy.getPlacement(placementName, listener)
264
265
  placements[placementName] = placement
265
266
  }
@@ -10,7 +10,5 @@ class TapjoyReactNativeSdkPackage : ReactPackage {
10
10
  return listOf(TapjoyReactNativeSdkModule(reactContext))
11
11
  }
12
12
 
13
- override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
14
- return emptyList()
15
- }
13
+ override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> = listOf(TJOfferwallDiscoverNativeViewManager(reactContext))
16
14
  }
@@ -167,7 +167,7 @@ dependencies {
167
167
  }
168
168
 
169
169
  implementation 'com.google.android.gms:play-services-appset:16.0.2'
170
- implementation 'com.tapjoy:tapjoy-android-sdk:13.2.1'
170
+ implementation 'com.tapjoy:tapjoy-android-sdk:13.3.0'
171
171
  implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
172
172
  }
173
173
 
@@ -7,8 +7,8 @@
7
7
  android:label="@string/app_name"
8
8
  android:icon="@mipmap/ic_launcher"
9
9
  android:allowBackup="false"
10
- android:theme="@style/AppTheme"
11
- android:networkSecurityConfig="@xml/network_security_config">
10
+ android:networkSecurityConfig="@xml/network_security_config"
11
+ android:theme="@style/AppTheme">
12
12
  <activity
13
13
  android:name=".MainActivity"
14
14
  android:label="@string/app_name"
@@ -8,5 +8,7 @@
8
8
  <domain-config cleartextTrafficPermitted="true">
9
9
  <domain includeSubdomains="true">127.0.0.1</domain>
10
10
  <domain includeSubdomains="true">localhost</domain>
11
+ <domain includeSubdomains="true">10.0.2.2</domain>
12
+ <domain includeSubdomains="true">10.0.3.2</domain>
11
13
  </domain-config>
12
14
  </network-security-config>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "TapjoyReactNativeSdkExample",
3
- "version": "13.2.1",
3
+ "version": "13.3.0",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "android": "react-native run-android",
@@ -3,6 +3,7 @@ import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
3
3
  import { NavigationContainer } from '@react-navigation/native';
4
4
  import MainScreen from './MainScreen';
5
5
  import OfferwallScreen from './OfferwallScreen';
6
+ import OfferwallDiscoverScreen from './OfferwallDiscoverScreen';
6
7
  import UserProperties from './UserProperties';
7
8
  import styles from './Styles';
8
9
 
@@ -20,6 +21,7 @@ export default function App() {
20
21
  >
21
22
  <Tab.Screen name="Main" component={MainScreen} />
22
23
  <Tab.Screen name="Offerwall" component={OfferwallScreen} />
24
+ <Tab.Screen name="Discover" component={OfferwallDiscoverScreen} />
23
25
  <Tab.Screen name="User Properties" component={UserProperties} />
24
26
  </Tab.Navigator>
25
27
  </NavigationContainer>
@@ -125,7 +125,7 @@ const MainScreen: React.FC = () => {
125
125
  />
126
126
  <Button
127
127
  title="Connect"
128
- style={styles.zeroFlex}
128
+ style={[styles.zeroFlex, styles.leftSpacing]}
129
129
  onPress={handleConnect}
130
130
  disabled={isConnecting || Tapjoy.isConnected()}
131
131
  />
@@ -0,0 +1,193 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { useFocusEffect } from '@react-navigation/native';
3
+ import {
4
+ FlatList,
5
+ SafeAreaView,
6
+ ScrollView,
7
+ Text,
8
+ TextInput,
9
+ View,
10
+ Dimensions,
11
+ } from 'react-native';
12
+ import Tapjoy, { TJOfferwallDiscoverView } from 'tapjoy-react-native-sdk';
13
+ import AsyncStorage from '@react-native-async-storage/async-storage';
14
+ import dayjs from 'dayjs';
15
+ import Button from './Button';
16
+ import styles from './Styles';
17
+
18
+ const OfferwallDiscoverScreen: React.FC = () => {
19
+ const widthChangedManually = useRef(false);
20
+ const [width, setWidth] = useState<string>(
21
+ Math.floor(Dimensions.get('window').width) + ''
22
+ );
23
+ const [height, setHeight] = useState<string>('262');
24
+
25
+ const [offerwallPlacementName, _setOfferwallPlacementName] =
26
+ useState<string>('offerwall_discover');
27
+ const [isSdkConnected, setIsSdkConnected] = useState<boolean>(false);
28
+
29
+ const [logData, setLogData] = useState<Array<string>>([]);
30
+ const owdRef: React.MutableRefObject<TJOfferwallDiscoverView | null> =
31
+ useRef<TJOfferwallDiscoverView | null>(null);
32
+
33
+ useFocusEffect(
34
+ React.useCallback(() => {
35
+ setIsSdkConnected(Tapjoy.isConnected());
36
+ }, [])
37
+ );
38
+
39
+ useEffect(() => {
40
+ AsyncStorage.getItem('owdPlacementName').then((value) => {
41
+ if (value !== null) {
42
+ setOfferwallPlacementName(value).then();
43
+ }
44
+ });
45
+ }, []);
46
+
47
+ useEffect(() => {
48
+ Dimensions.addEventListener('change', () => {
49
+ if (!widthChangedManually.current) {
50
+ setWidth(Math.floor(Dimensions.get('window').width) + '');
51
+ }
52
+ });
53
+ }, []);
54
+
55
+ const handleClearInput = async () => {
56
+ await setOfferwallPlacementName('');
57
+ };
58
+
59
+ const loadContent = async () => {
60
+ try {
61
+ owdRef.current!.requestContent(offerwallPlacementName);
62
+ } catch (error: any) {
63
+ addLogItem(error);
64
+ }
65
+ };
66
+
67
+ const clearContent = () => {
68
+ addLogItem('cleared');
69
+ owdRef.current!.clearContent();
70
+ };
71
+
72
+ const setOfferwallPlacementName = async (placementName: string) => {
73
+ _setOfferwallPlacementName(placementName);
74
+ await AsyncStorage.setItem('owdPlacementName', placementName);
75
+ };
76
+
77
+ const addLogItem = (item: string) => {
78
+ setLogData([dayjs(new Date()).format('HH:mm:ss') + ' ' + item, ...logData]);
79
+ };
80
+
81
+ const stripNonNumericValue = (value: string) => {
82
+ value = value.replace(/\D/g, '');
83
+ if (value === '') value = '0';
84
+ let intValue = parseInt(value, 10);
85
+ return intValue + '';
86
+ };
87
+
88
+ const getViewStyle = () => {
89
+ return {
90
+ width: width ? parseInt(width, 10) : 0,
91
+ height: height ? parseInt(height, 10) : 0,
92
+ backgroundColor: '#999999',
93
+ };
94
+ };
95
+
96
+ return (
97
+ <View style={styles.mainContainer}>
98
+ <ScrollView style={styles.offerwallScrollContainer}>
99
+ <SafeAreaView style={styles.container}>
100
+ <View style={styles.inputContainer}>
101
+ <Text style={styles.textInputLabel}>Width</Text>
102
+ <TextInput
103
+ keyboardType="numeric"
104
+ style={styles.textInput}
105
+ onChangeText={(value) => {
106
+ value = stripNonNumericValue(value);
107
+ setWidth(value);
108
+ widthChangedManually.current = true;
109
+ }}
110
+ value={width}
111
+ autoCorrect={false}
112
+ placeholderTextColor="#888"
113
+ autoCapitalize="none"
114
+ />
115
+ <Text style={[styles.textInputLabel, styles.leftSpacing]}>
116
+ Height
117
+ </Text>
118
+ <TextInput
119
+ keyboardType="numeric"
120
+ style={styles.textInput}
121
+ onChangeText={(value) => {
122
+ value = stripNonNumericValue(value);
123
+ setHeight(value);
124
+ }}
125
+ value={height.replace(/\D/g, '')}
126
+ autoCorrect={false}
127
+ placeholderTextColor="#888"
128
+ autoCapitalize="none"
129
+ />
130
+ </View>
131
+ <View style={styles.inputContainer}>
132
+ <TextInput
133
+ style={styles.textInput}
134
+ value={offerwallPlacementName}
135
+ onChangeText={setOfferwallPlacementName}
136
+ autoCorrect={false}
137
+ placeholder="Enter Placement Name"
138
+ placeholderTextColor="#888"
139
+ autoCapitalize="none"
140
+ />
141
+ <Button
142
+ style={styles.clearButton}
143
+ onPress={handleClearInput}
144
+ title={'\u2573'}
145
+ />
146
+ </View>
147
+ <View style={styles.buttonContainer}>
148
+ <Button
149
+ onPress={loadContent}
150
+ disabled={!isSdkConnected}
151
+ title={'Request'}
152
+ />
153
+ <View style={styles.buttonGap} />
154
+ <Button onPress={clearContent} title={'Clear'} />
155
+ </View>
156
+ <TJOfferwallDiscoverView
157
+ ref={owdRef}
158
+ style={getViewStyle()}
159
+ onRequestSuccess={(event: any) => {
160
+ addLogItem(event.nativeEvent.result);
161
+ }}
162
+ onRequestFailure={(event: any) =>
163
+ addLogItem(
164
+ `requestFailure: code:${event.nativeEvent.errorCode}, message:${event.nativeEvent.errorMessage}`
165
+ )
166
+ }
167
+ onContentReady={(event: any) =>
168
+ addLogItem(event.nativeEvent.result)
169
+ }
170
+ onContentError={(event: any) =>
171
+ addLogItem(
172
+ `contentError: code:${event.nativeEvent.errorCode}, message:${event.nativeEvent.errorMessage}`
173
+ )
174
+ }
175
+ />
176
+ </SafeAreaView>
177
+ </ScrollView>
178
+ <View style={styles.owLogContainer}>
179
+ <FlatList
180
+ data={logData}
181
+ renderItem={({ item }) => (
182
+ <View>
183
+ <Text style={styles.logText}>{item}</Text>
184
+ </View>
185
+ )}
186
+ keyExtractor={(_item, index) => index.toString()}
187
+ />
188
+ </View>
189
+ </View>
190
+ );
191
+ };
192
+
193
+ export default OfferwallDiscoverScreen;
@@ -269,7 +269,7 @@ const OfferwallScreen: React.FC = () => {
269
269
  autoCapitalize="none"
270
270
  />
271
271
  <Button
272
- style={styles.clearButton}
272
+ style={[styles.clearButton, styles.leftSpacing]}
273
273
  onPress={handleClearInput}
274
274
  title={'\u2573'}
275
275
  />
@@ -15,6 +15,13 @@ const styles = StyleSheet.create({
15
15
  alignItems: 'center',
16
16
  marginBottom: 20,
17
17
  },
18
+ switchContainer: {
19
+ display: 'flex',
20
+ flexDirection: 'row',
21
+ alignItems: 'center',
22
+ marginBottom: 20,
23
+ justifyContent: 'flex-end',
24
+ },
18
25
  clearButton: {
19
26
  flex: 0,
20
27
  width: 50,
@@ -22,6 +29,7 @@ const styles = StyleSheet.create({
22
29
  borderRadius: 5,
23
30
  padding: 10,
24
31
  height: 40,
32
+ marginLeft: 10,
25
33
  },
26
34
  buttonContainer: {
27
35
  flexDirection: 'row',
@@ -57,9 +65,14 @@ const styles = StyleSheet.create({
57
65
  borderRadius: 10,
58
66
  paddingLeft: 10,
59
67
  paddingRight: 10,
60
- marginRight: 10,
61
68
  color: 'black',
62
69
  },
70
+ textInputLabel: {
71
+ width: 50,
72
+ },
73
+ leftSpacing: {
74
+ marginLeft: 10,
75
+ },
63
76
  statusText: {
64
77
  color: 'black',
65
78
  textAlign: 'center',
@@ -165,6 +178,7 @@ const styles = StyleSheet.create({
165
178
  owLogContainer: {
166
179
  height: '30%',
167
180
  padding: 10,
181
+ backgroundColor: '#DDDDDD',
168
182
  },
169
183
  });
170
184
 
@@ -0,0 +1,10 @@
1
+ #import <React/RCTViewManager.h>
2
+
3
+ @interface RCT_EXTERN_MODULE(TJOfferwallDiscoverNativeViewManager, RCTViewManager)
4
+ RCT_EXTERN_METHOD(requestContent: (nonnull NSNumber *)tag : NSString)
5
+ RCT_EXTERN_METHOD(clearContent: (nonnull NSNumber *)tag)
6
+ RCT_EXPORT_VIEW_PROPERTY(onRequestSuccess, RCTBubblingEventBlock)
7
+ RCT_EXPORT_VIEW_PROPERTY(onRequestFailure, RCTBubblingEventBlock)
8
+ RCT_EXPORT_VIEW_PROPERTY(onContentReady, RCTBubblingEventBlock)
9
+ RCT_EXPORT_VIEW_PROPERTY(onContentError, RCTBubblingEventBlock)
10
+ @end
@@ -0,0 +1,81 @@
1
+ @objc (TJOfferwallDiscoverNativeViewManager)
2
+ class TJOfferwallDiscoverNativeViewManager: RCTViewManager, TJOfferwallDiscoverDelegate {
3
+
4
+ var owdView:TapjoyOfferwallDiscoverNativeView!
5
+ @objc var onRequestSuccess: RCTBubblingEventBlock?
6
+ @objc var onRequestFailure: RCTBubblingEventBlock?
7
+ @objc var onContentReady: RCTBubblingEventBlock?
8
+ @objc var onContentError: RCTBubblingEventBlock?
9
+
10
+ override static func requiresMainQueueSetup() -> Bool {
11
+ return true
12
+ }
13
+
14
+ override func view() -> UIView! {
15
+ owdView = TapjoyOfferwallDiscoverNativeView()
16
+ owdView.delegate = self
17
+ return owdView
18
+ }
19
+
20
+ /**
21
+ Show the OfferwallDiscover content.
22
+ */
23
+ @objc func requestContent(_ tag: NSNumber, _ placement: String) {
24
+ DispatchQueue.main.async {
25
+ self.owdView.requestContent(placement)
26
+ }
27
+ }
28
+
29
+ /**
30
+ Show current content.
31
+ */
32
+ @objc func clearContent(_ tag: NSNumber) {
33
+ DispatchQueue.main.async {
34
+ self.owdView.clearContent()
35
+ }
36
+ }
37
+
38
+ // MARK: - TJOfferwallDiscoverDelegate : The delegates method will call javascript event handlers.
39
+ func requestDidSucceed(for view: TJOfferwallDiscoverView) {
40
+ NSLog("requestDidSucceed")
41
+
42
+ guard let onRequestSuccess = self.owdView.onRequestSuccess else { return }
43
+ DispatchQueue.main.async {
44
+ let params: [String : Any] = ["result":"requestSuccess"]
45
+ onRequestSuccess(params)
46
+ }
47
+ }
48
+
49
+ func requestDidFail(for view: TJOfferwallDiscoverView, error: Error?) {
50
+ guard let error = error else { return }
51
+ NSLog("requestDidFail - \(error.localizedDescription) ")
52
+
53
+ guard let onRequestFailure = self.owdView.onRequestFailure else { return }
54
+ DispatchQueue.main.async {
55
+ let errorCode = (error as NSError).code
56
+ let params: [String : Any] = ["errorCode": errorCode, "errorMessage": error.localizedDescription]
57
+ onRequestFailure(params)
58
+ }
59
+ }
60
+
61
+ func contentIsReady(for view: TJOfferwallDiscoverView) {
62
+ NSLog("contentIsReady")
63
+ guard let onContentReady = self.owdView.onContentReady else { return }
64
+ DispatchQueue.main.async {
65
+ let params: [String : Any] = ["result":"contentReady"]
66
+ onContentReady(params)
67
+ }
68
+ }
69
+
70
+ func contentError(for view: TJOfferwallDiscoverView, error: Error?) {
71
+ guard let error = error else { return }
72
+ NSLog("contentError \(error.localizedDescription)")
73
+
74
+ guard let onContentError = self.owdView.onContentError else { return }
75
+ DispatchQueue.main.async {
76
+ let errorCode = (error as NSError).code
77
+ let params: [String : Any] = ["errorCode": errorCode, "errorMessage": error.localizedDescription]
78
+ onContentError(params)
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,23 @@
1
+ class TapjoyOfferwallDiscoverNativeView: TJOfferwallDiscoverView {
2
+
3
+ // Event handlers
4
+ @objc var onRequestSuccess: RCTBubblingEventBlock?
5
+ @objc var onRequestFailure: RCTBubblingEventBlock?
6
+ @objc var onContentReady: RCTBubblingEventBlock?
7
+ @objc var onContentError: RCTBubblingEventBlock?
8
+
9
+ /**
10
+ Request content of placement.
11
+ - Parameter placement: Placement name.
12
+ */
13
+ func requestContent(_ placement: String) {
14
+ request(placement)
15
+ }
16
+
17
+ /**
18
+ Clear displayed content.
19
+ */
20
+ func clearContent() {
21
+ clear()
22
+ }
23
+ }
@@ -3,4 +3,5 @@
3
3
  //
4
4
  #import <React/RCTBridgeModule.h>
5
5
  #import <React/RCTEventEmitter.h>
6
+ #import <React/RCTViewManager.h>
6
7
  #import <Tapjoy/Tapjoy.h>
@@ -20,8 +20,11 @@
20
20
 
21
21
  /* Begin PBXFileReference section */
22
22
  134814201AA4EA6300B7C361 /* libTapjoyReactNativeSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTapjoyReactNativeSdk.a; sourceTree = BUILT_PRODUCTS_DIR; };
23
- 2BDE3C8F29D5AE0E009EB4F1 /* TapjoyPlacement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TapjoyPlacement.m; sourceTree = "<group>"; };
24
- 2BDE3C9029D5AE54009EB4F1 /* TapjoyPlacement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TapjoyPlacement.swift; sourceTree = "<group>"; };
23
+ A1ABFAC92B023B9F00CA9B85 /* TapjoyPluginAPIModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TapjoyPluginAPIModule.m; sourceTree = "<group>"; };
24
+ A1ABFACA2B023C3400CA9B85 /* TapjoyPluginAPIModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TapjoyPluginAPIModule.swift; sourceTree = "<group>"; };
25
+ A1ABFAD12B032C0400CA9B85 /* TJOfferwallDiscoverNativeViewManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TJOfferwallDiscoverNativeViewManager.swift; sourceTree = "<group>"; };
26
+ A1ABFAD22B032C0400CA9B85 /* TapjoyOfferwallDiscoverNativeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TapjoyOfferwallDiscoverNativeView.swift; sourceTree = "<group>"; };
27
+ A1ABFAD32B032C0400CA9B85 /* TJOfferwallDiscoverNativeViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TJOfferwallDiscoverNativeViewManager.m; sourceTree = "<group>"; };
25
28
  B3E7B5891CC2AC0600A0062D /* TapjoyReactNativeSdk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TapjoyReactNativeSdk.m; sourceTree = "<group>"; };
26
29
  F4FF95D5245B92E700C19C63 /* TapjoyReactNativeSdk-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TapjoyReactNativeSdk-Bridging-Header.h"; sourceTree = "<group>"; };
27
30
  F4FF95D6245B92E800C19C63 /* TapjoyReactNativeSdk.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TapjoyReactNativeSdk.swift; sourceTree = "<group>"; };
@@ -49,10 +52,13 @@
49
52
  58B511D21A9E6C8500147676 = {
50
53
  isa = PBXGroup;
51
54
  children = (
52
- 2BDE3C9029D5AE54009EB4F1 /* TapjoyPlacement.swift */,
53
- 2BDE3C8F29D5AE0E009EB4F1 /* TapjoyPlacement.m */,
55
+ A1ABFAD22B032C0400CA9B85 /* TapjoyOfferwallDiscoverNativeView.swift */,
56
+ A1ABFAD32B032C0400CA9B85 /* TJOfferwallDiscoverNativeViewManager.m */,
57
+ A1ABFAD12B032C0400CA9B85 /* TJOfferwallDiscoverNativeViewManager.swift */,
58
+ A1ABFACA2B023C3400CA9B85 /* TapjoyPluginAPIModule.swift */,
54
59
  F4FF95D6245B92E800C19C63 /* TapjoyReactNativeSdk.swift */,
55
60
  B3E7B5891CC2AC0600A0062D /* TapjoyReactNativeSdk.m */,
61
+ A1ABFAC92B023B9F00CA9B85 /* TapjoyPluginAPIModule.m */,
56
62
  F4FF95D5245B92E700C19C63 /* TapjoyReactNativeSdk-Bridging-Header.h */,
57
63
  134814211AA4EA7D00B7C361 /* Products */,
58
64
  );
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
11
+ var Command = /*#__PURE__*/function (Command) {
12
+ Command["REQUEST_CONTENT"] = "requestContent";
13
+ Command["CLEAR_CONTENT"] = "clearContent";
14
+ return Command;
15
+ }(Command || {});
16
+ const TJOfferwallDiscoverNativeView = (0, _reactNative.requireNativeComponent)('TJOfferwallDiscoverNativeView');
17
+ class TJOfferwallDiscoverView extends _react.default.Component {
18
+ nativeCompHandle = null;
19
+ constructor(props) {
20
+ super(props);
21
+ }
22
+ render() {
23
+ return /*#__PURE__*/_react.default.createElement(TJOfferwallDiscoverNativeView, _extends({}, this.props, {
24
+ ref: ref => {
25
+ this.nativeCompHandle = (0, _reactNative.findNodeHandle)(ref);
26
+ }
27
+ }));
28
+ }
29
+ requestContent(placement) {
30
+ _reactNative.UIManager.dispatchViewManagerCommand(this.nativeCompHandle, Command.REQUEST_CONTENT, [placement]);
31
+ }
32
+ clearContent() {
33
+ _reactNative.UIManager.dispatchViewManagerCommand(this.nativeCompHandle, Command.CLEAR_CONTENT);
34
+ }
35
+ }
36
+ exports.default = TJOfferwallDiscoverView;
37
+ //# sourceMappingURL=TJOfferwallDiscoverView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_react","_interopRequireDefault","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","Command","TJOfferwallDiscoverNativeView","requireNativeComponent","TJOfferwallDiscoverView","React","Component","nativeCompHandle","constructor","props","render","createElement","ref","findNodeHandle","requestContent","placement","UIManager","dispatchViewManagerCommand","REQUEST_CONTENT","clearContent","CLEAR_CONTENT","exports"],"sourceRoot":"../../src","sources":["TJOfferwallDiscoverView.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0B,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAAA,IAErBQ,OAAO,0BAAPA,OAAO;EAAPA,OAAO;EAAPA,OAAO;EAAA,OAAPA,OAAO;AAAA,EAAPA,OAAO;AAKZ,MAAMC,6BAA6B,GAAG,IAAAC,mCAAsB,EAC1D,+BAA+B,CAChC;AAUc,MAAMC,uBAAuB,SAASC,cAAK,CAACC,SAAS,CAA+B;EACjGC,gBAAgB,GAAkB,IAAI;EACtCC,WAAWA,CAACC,KAAmC,EAAE;IAC/C,KAAK,CAACA,KAAK,CAAC;EACd;EAEAC,MAAMA,CAAA,EAAG;IACP,oBACE5B,MAAA,CAAAI,OAAA,CAAAyB,aAAA,CAACT,6BAA6B,EAAAf,QAAA,KACxB,IAAI,CAACsB,KAAK;MACdG,GAAG,EAAGA,GAAG,IAAK;QACZ,IAAI,CAACL,gBAAgB,GAAG,IAAAM,2BAAc,EAACD,GAAG,CAAC;MAC7C;IAAE,GACF;EAEN;EAEAE,cAAcA,CAACC,SAAiB,EAAE;IAChCC,sBAAS,CAACC,0BAA0B,CAClC,IAAI,CAACV,gBAAgB,EACrBN,OAAO,CAACiB,eAAe,EACvB,CAACH,SAAS,CAAC,CACZ;EACH;EAEAI,YAAYA,CAAA,EAAG;IACbH,sBAAS,CAACC,0BAA0B,CAClC,IAAI,CAACV,gBAAgB,EACrBN,OAAO,CAACmB,aAAa,CACtB;EACH;AACF;AAACC,OAAA,CAAAnC,OAAA,GAAAkB,uBAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ class TJUtil {
8
+ static isValidDimensionValue(value) {
9
+ if (typeof value !== 'number' && /[0-9]+%|auto/.test(value)) {
10
+ return true;
11
+ } else if (typeof value === 'number' && !isNaN(value)) {
12
+ return true;
13
+ }
14
+ return false;
15
+ }
16
+ static isValidNumber(value) {
17
+ return typeof value === 'number' && !isNaN(value);
18
+ }
19
+ }
20
+ exports.default = TJUtil;
21
+ //# sourceMappingURL=TJUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TJUtil","isValidDimensionValue","value","test","isNaN","isValidNumber","exports","default"],"sourceRoot":"../../src","sources":["TJUtil.ts"],"mappings":";;;;;;AAAe,MAAMA,MAAM,CAAC;EAC1B,OAAOC,qBAAqBA,CAACC,KAAU,EAAW;IAChD,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,cAAc,CAACC,IAAI,CAACD,KAAK,CAAC,EAAE;MAC3D,OAAO,IAAI;IACb,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACE,KAAK,CAACF,KAAK,CAAC,EAAE;MACrD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEA,OAAOG,aAAaA,CAACH,KAAU,EAAW;IACxC,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACE,KAAK,CAACF,KAAK,CAAC;EACnD;AACF;AAACI,OAAA,CAAAC,OAAA,GAAAP,MAAA"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.TJVersion = void 0;
7
- const REACT_LIBRARY_VERSION = '13.2.1';
7
+ const REACT_LIBRARY_VERSION = '13.3.0';
8
8
  const REACT_LIBRARY_VERSION_SUFFIX = '';
9
9
  class TJVersion {
10
10
  // Returns the version of the plugin - eg: 1.0.0-alpha-rc1
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "TJOfferwallDiscoverView", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _TJOfferwallDiscoverView.default;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "TJPlacement", {
7
13
  enumerable: true,
8
14
  get: function () {
@@ -40,6 +46,7 @@ var _TJPrivacyPolicy = _interopRequireDefault(require("./TJPrivacyPolicy"));
40
46
  var _TJVersion = _interopRequireDefault(require("./TJVersion"));
41
47
  var _TJStatus = _interopRequireDefault(require("./TJStatus"));
42
48
  var _TJSegment = _interopRequireDefault(require("./TJSegment"));
49
+ var _TJOfferwallDiscoverView = _interopRequireDefault(require("./TJOfferwallDiscoverView"));
43
50
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
44
51
  const LINKING_ERROR = `The package 'tapjoy-react-native-sdk' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
45
52
  ios: "- You have run 'pod install'\n",
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_TJPlacement","_interopRequireDefault","_TJPrivacyPolicy","_TJVersion","_TJStatus","_TJSegment","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","Tapjoy","NativeModules","TapjoyReactNativeSdk","Proxy","get","Error","exports","_default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,UAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,SAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,UAAA,GAAAJ,sBAAA,CAAAF,OAAA;AAAoC,SAAAE,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEpC,MAAMG,aAAa,GAChB,kFAAiF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEJ,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMK,MAAM,GAAGC,0BAAa,CAACC,oBAAoB,GAC7CD,0BAAa,CAACC,oBAAoB,GAClC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAACU,OAAA,CAAAN,MAAA,GAAAA,MAAA;AAAA,IAAAO,QAAA,GAGSP,MAAM;AAAAM,OAAA,CAAAX,OAAA,GAAAY,QAAA"}
1
+ {"version":3,"names":["_reactNative","require","_TJPlacement","_interopRequireDefault","_TJPrivacyPolicy","_TJVersion","_TJStatus","_TJSegment","_TJOfferwallDiscoverView","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","Tapjoy","NativeModules","TapjoyReactNativeSdk","Proxy","get","Error","exports","_default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,UAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,SAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,UAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,wBAAA,GAAAL,sBAAA,CAAAF,OAAA;AAAgE,SAAAE,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEhE,MAAMG,aAAa,GAChB,kFAAiF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEJ,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMK,MAAM,GAAGC,0BAAa,CAACC,oBAAoB,GAC7CD,0BAAa,CAACC,oBAAoB,GAClC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAACU,OAAA,CAAAN,MAAA,GAAAA,MAAA;AAAA,IAAAO,QAAA,GAGSP,MAAM;AAAAM,OAAA,CAAAX,OAAA,GAAAY,QAAA"}
@@ -0,0 +1,29 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import { findNodeHandle, requireNativeComponent, UIManager } from 'react-native';
3
+ import React from 'react';
4
+ var Command = /*#__PURE__*/function (Command) {
5
+ Command["REQUEST_CONTENT"] = "requestContent";
6
+ Command["CLEAR_CONTENT"] = "clearContent";
7
+ return Command;
8
+ }(Command || {});
9
+ const TJOfferwallDiscoverNativeView = requireNativeComponent('TJOfferwallDiscoverNativeView');
10
+ export default class TJOfferwallDiscoverView extends React.Component {
11
+ nativeCompHandle = null;
12
+ constructor(props) {
13
+ super(props);
14
+ }
15
+ render() {
16
+ return /*#__PURE__*/React.createElement(TJOfferwallDiscoverNativeView, _extends({}, this.props, {
17
+ ref: ref => {
18
+ this.nativeCompHandle = findNodeHandle(ref);
19
+ }
20
+ }));
21
+ }
22
+ requestContent(placement) {
23
+ UIManager.dispatchViewManagerCommand(this.nativeCompHandle, Command.REQUEST_CONTENT, [placement]);
24
+ }
25
+ clearContent() {
26
+ UIManager.dispatchViewManagerCommand(this.nativeCompHandle, Command.CLEAR_CONTENT);
27
+ }
28
+ }
29
+ //# sourceMappingURL=TJOfferwallDiscoverView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["findNodeHandle","requireNativeComponent","UIManager","React","Command","TJOfferwallDiscoverNativeView","TJOfferwallDiscoverView","Component","nativeCompHandle","constructor","props","render","createElement","_extends","ref","requestContent","placement","dispatchViewManagerCommand","REQUEST_CONTENT","clearContent","CLEAR_CONTENT"],"sourceRoot":"../../src","sources":["TJOfferwallDiscoverView.tsx"],"mappings":";AAAA,SACEA,cAAc,EACdC,sBAAsB,EACtBC,SAAS,QAEJ,cAAc;AACrB,OAAOC,KAAK,MAAM,OAAO;AAAC,IAErBC,OAAO,0BAAPA,OAAO;EAAPA,OAAO;EAAPA,OAAO;EAAA,OAAPA,OAAO;AAAA,EAAPA,OAAO;AAKZ,MAAMC,6BAA6B,GAAGJ,sBAAsB,CAC1D,+BAA+B,CAChC;AAUD,eAAe,MAAMK,uBAAuB,SAASH,KAAK,CAACI,SAAS,CAA+B;EACjGC,gBAAgB,GAAkB,IAAI;EACtCC,WAAWA,CAACC,KAAmC,EAAE;IAC/C,KAAK,CAACA,KAAK,CAAC;EACd;EAEAC,MAAMA,CAAA,EAAG;IACP,oBACER,KAAA,CAAAS,aAAA,CAACP,6BAA6B,EAAAQ,QAAA,KACxB,IAAI,CAACH,KAAK;MACdI,GAAG,EAAGA,GAAG,IAAK;QACZ,IAAI,CAACN,gBAAgB,GAAGR,cAAc,CAACc,GAAG,CAAC;MAC7C;IAAE,GACF;EAEN;EAEAC,cAAcA,CAACC,SAAiB,EAAE;IAChCd,SAAS,CAACe,0BAA0B,CAClC,IAAI,CAACT,gBAAgB,EACrBJ,OAAO,CAACc,eAAe,EACvB,CAACF,SAAS,CAAC,CACZ;EACH;EAEAG,YAAYA,CAAA,EAAG;IACbjB,SAAS,CAACe,0BAA0B,CAClC,IAAI,CAACT,gBAAgB,EACrBJ,OAAO,CAACgB,aAAa,CACtB;EACH;AACF"}
@@ -0,0 +1,14 @@
1
+ export default class TJUtil {
2
+ static isValidDimensionValue(value) {
3
+ if (typeof value !== 'number' && /[0-9]+%|auto/.test(value)) {
4
+ return true;
5
+ } else if (typeof value === 'number' && !isNaN(value)) {
6
+ return true;
7
+ }
8
+ return false;
9
+ }
10
+ static isValidNumber(value) {
11
+ return typeof value === 'number' && !isNaN(value);
12
+ }
13
+ }
14
+ //# sourceMappingURL=TJUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TJUtil","isValidDimensionValue","value","test","isNaN","isValidNumber"],"sourceRoot":"../../src","sources":["TJUtil.ts"],"mappings":"AAAA,eAAe,MAAMA,MAAM,CAAC;EAC1B,OAAOC,qBAAqBA,CAACC,KAAU,EAAW;IAChD,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,cAAc,CAACC,IAAI,CAACD,KAAK,CAAC,EAAE;MAC3D,OAAO,IAAI;IACb,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACE,KAAK,CAACF,KAAK,CAAC,EAAE;MACrD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEA,OAAOG,aAAaA,CAACH,KAAU,EAAW;IACxC,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACE,KAAK,CAACF,KAAK,CAAC;EACnD;AACF"}
@@ -1,4 +1,4 @@
1
- const REACT_LIBRARY_VERSION = '13.2.1';
1
+ const REACT_LIBRARY_VERSION = '13.3.0';
2
2
  const REACT_LIBRARY_VERSION_SUFFIX = '';
3
3
  export class TJVersion {
4
4
  // Returns the version of the plugin - eg: 1.0.0-alpha-rc1
@@ -4,6 +4,7 @@ import TJPrivacyPolicy from './TJPrivacyPolicy';
4
4
  import TJVersion from './TJVersion';
5
5
  import TJStatus from './TJStatus';
6
6
  import TJSegment from './TJSegment';
7
+ import TJOfferwallDiscoverView from './TJOfferwallDiscoverView';
7
8
  const LINKING_ERROR = `The package 'tapjoy-react-native-sdk' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
8
9
  ios: "- You have run 'pod install'\n",
9
10
  default: ''
@@ -13,6 +14,6 @@ const Tapjoy = NativeModules.TapjoyReactNativeSdk ? NativeModules.TapjoyReactNat
13
14
  throw new Error(LINKING_ERROR);
14
15
  }
15
16
  });
16
- export { Tapjoy, TJPlacement, TJPrivacyPolicy, TJVersion, TJStatus, TJSegment };
17
+ export { Tapjoy, TJPlacement, TJPrivacyPolicy, TJVersion, TJStatus, TJSegment, TJOfferwallDiscoverView };
17
18
  export default Tapjoy;
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","TJPlacement","TJPrivacyPolicy","TJVersion","TJStatus","TJSegment","LINKING_ERROR","select","ios","default","Tapjoy","TapjoyReactNativeSdk","Proxy","get","Error"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,OAAOC,WAAW,MAAM,eAAe;AACvC,OAAOC,eAAe,MAAM,mBAAmB;AAC/C,OAAOC,SAAS,MAAM,aAAa;AACnC,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,SAAS,MAAM,aAAa;AAEnC,MAAMC,aAAa,GAChB,kFAAiF,GAClFN,QAAQ,CAACO,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,MAAM,GAAGX,aAAa,CAACY,oBAAoB,GAC7CZ,aAAa,CAACY,oBAAoB,GAClC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACR,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,SAASI,MAAM,EAAET,WAAW,EAAEC,eAAe,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,SAAS;AAC7E,eAAeK,MAAM"}
1
+ {"version":3,"names":["NativeModules","Platform","TJPlacement","TJPrivacyPolicy","TJVersion","TJStatus","TJSegment","TJOfferwallDiscoverView","LINKING_ERROR","select","ios","default","Tapjoy","TapjoyReactNativeSdk","Proxy","get","Error"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,OAAOC,WAAW,MAAM,eAAe;AACvC,OAAOC,eAAe,MAAM,mBAAmB;AAC/C,OAAOC,SAAS,MAAM,aAAa;AACnC,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,SAAS,MAAM,aAAa;AACnC,OAAOC,uBAAuB,MAAM,2BAA2B;AAE/D,MAAMC,aAAa,GAChB,kFAAiF,GAClFP,QAAQ,CAACQ,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,MAAM,GAAGZ,aAAa,CAACa,oBAAoB,GAC7Cb,aAAa,CAACa,oBAAoB,GAClC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACR,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,SAASI,MAAM,EAAEV,WAAW,EAAEC,eAAe,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,uBAAuB;AACtG,eAAeK,MAAM"}
@@ -0,0 +1,18 @@
1
+ import { ViewStyle } from 'react-native';
2
+ import React from 'react';
3
+ interface TJOfferwallDiscoverViewProps {
4
+ style?: ViewStyle;
5
+ onRequestSuccess?: Function;
6
+ onRequestFailure?: Function;
7
+ onContentReady?: Function;
8
+ onContentError?: Function;
9
+ }
10
+ export default class TJOfferwallDiscoverView extends React.Component<TJOfferwallDiscoverViewProps> {
11
+ nativeCompHandle: number | null;
12
+ constructor(props: TJOfferwallDiscoverViewProps);
13
+ render(): JSX.Element;
14
+ requestContent(placement: string): void;
15
+ clearContent(): void;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=TJOfferwallDiscoverView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TJOfferwallDiscoverView.d.ts","sourceRoot":"","sources":["../../src/TJOfferwallDiscoverView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,UAAU,4BAA4B;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gBAAgB,CAAC,EAAE,QAAQ,CAAC;IAC5B,gBAAgB,CAAC,EAAE,QAAQ,CAAC;IAC5B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,KAAK,CAAC,SAAS,CAAC,4BAA4B,CAAC;IAChG,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAC3B,KAAK,EAAE,4BAA4B;IAI/C,MAAM;IAWN,cAAc,CAAC,SAAS,EAAE,MAAM;IAQhC,YAAY;CAMb"}
@@ -0,0 +1,5 @@
1
+ export default class TJUtil {
2
+ static isValidDimensionValue(value: any): boolean;
3
+ static isValidNumber(value: any): boolean;
4
+ }
5
+ //# sourceMappingURL=TJUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TJUtil.d.ts","sourceRoot":"","sources":["../../src/TJUtil.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IASjD,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;CAG1C"}
@@ -3,7 +3,8 @@ import TJPrivacyPolicy from './TJPrivacyPolicy';
3
3
  import TJVersion from './TJVersion';
4
4
  import TJStatus from './TJStatus';
5
5
  import TJSegment from './TJSegment';
6
+ import TJOfferwallDiscoverView from './TJOfferwallDiscoverView';
6
7
  declare const Tapjoy: any;
7
- export { Tapjoy, TJPlacement, TJPrivacyPolicy, TJVersion, TJStatus, TJSegment };
8
+ export { Tapjoy, TJPlacement, TJPrivacyPolicy, TJVersion, TJStatus, TJSegment, TJOfferwallDiscoverView };
8
9
  export default Tapjoy;
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,aAAa,CAAC;AAQpC,QAAA,MAAM,MAAM,KASP,CAAC;AAEN,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAChF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAQhE,QAAA,MAAM,MAAM,KASP,CAAC;AAEN,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;AACzG,eAAe,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tapjoy-react-native-sdk",
3
- "version": "13.2.1",
3
+ "version": "13.3.0",
4
4
  "description": "ReactNative Plugin for Tapjoy SDK",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -37,7 +37,8 @@
37
37
  "!**/__tests__",
38
38
  "!**/__fixtures__",
39
39
  "!**/__mocks__",
40
- "!**/.*"
40
+ "!**/.*",
41
+ "CODEOWNERS"
41
42
  ],
42
43
  "scripts": {
43
44
  "test": "jest",
@@ -0,0 +1,57 @@
1
+ import {
2
+ findNodeHandle,
3
+ requireNativeComponent,
4
+ UIManager,
5
+ ViewStyle,
6
+ } from 'react-native';
7
+ import React from 'react';
8
+
9
+ enum Command {
10
+ REQUEST_CONTENT = 'requestContent',
11
+ CLEAR_CONTENT = 'clearContent',
12
+ }
13
+
14
+ const TJOfferwallDiscoverNativeView = requireNativeComponent(
15
+ 'TJOfferwallDiscoverNativeView'
16
+ );
17
+
18
+ interface TJOfferwallDiscoverViewProps {
19
+ style?: ViewStyle;
20
+ onRequestSuccess?: Function;
21
+ onRequestFailure?: Function;
22
+ onContentReady?: Function;
23
+ onContentError?: Function;
24
+ }
25
+
26
+ export default class TJOfferwallDiscoverView extends React.Component<TJOfferwallDiscoverViewProps> {
27
+ nativeCompHandle: number | null = null;
28
+ constructor(props: TJOfferwallDiscoverViewProps) {
29
+ super(props);
30
+ }
31
+
32
+ render() {
33
+ return (
34
+ <TJOfferwallDiscoverNativeView
35
+ {...this.props}
36
+ ref={(ref) => {
37
+ this.nativeCompHandle = findNodeHandle(ref);
38
+ }}
39
+ />
40
+ );
41
+ }
42
+
43
+ requestContent(placement: string) {
44
+ UIManager.dispatchViewManagerCommand(
45
+ this.nativeCompHandle!!,
46
+ Command.REQUEST_CONTENT,
47
+ [placement]
48
+ );
49
+ }
50
+
51
+ clearContent() {
52
+ UIManager.dispatchViewManagerCommand(
53
+ this.nativeCompHandle!!,
54
+ Command.CLEAR_CONTENT
55
+ );
56
+ }
57
+ }
package/src/TJUtil.ts ADDED
@@ -0,0 +1,14 @@
1
+ export default class TJUtil {
2
+ static isValidDimensionValue(value: any): boolean {
3
+ if (typeof value !== 'number' && /[0-9]+%|auto/.test(value)) {
4
+ return true;
5
+ } else if (typeof value === 'number' && !isNaN(value)) {
6
+ return true;
7
+ }
8
+ return false;
9
+ }
10
+
11
+ static isValidNumber(value: any): boolean {
12
+ return typeof value === 'number' && !isNaN(value);
13
+ }
14
+ }
package/src/TJVersion.ts CHANGED
@@ -1,4 +1,4 @@
1
- const REACT_LIBRARY_VERSION = '13.2.1';
1
+ const REACT_LIBRARY_VERSION = '13.3.0';
2
2
  const REACT_LIBRARY_VERSION_SUFFIX = '';
3
3
 
4
4
  export class TJVersion {
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ import TJPrivacyPolicy from './TJPrivacyPolicy';
4
4
  import TJVersion from './TJVersion';
5
5
  import TJStatus from './TJStatus';
6
6
  import TJSegment from './TJSegment';
7
+ import TJOfferwallDiscoverView from './TJOfferwallDiscoverView';
7
8
 
8
9
  const LINKING_ERROR =
9
10
  `The package 'tapjoy-react-native-sdk' doesn't seem to be linked. Make sure: \n\n` +
@@ -22,5 +23,5 @@ const Tapjoy = NativeModules.TapjoyReactNativeSdk
22
23
  }
23
24
  );
24
25
 
25
- export { Tapjoy, TJPlacement, TJPrivacyPolicy, TJVersion, TJStatus, TJSegment };
26
+ export { Tapjoy, TJPlacement, TJPrivacyPolicy, TJVersion, TJStatus, TJSegment, TJOfferwallDiscoverView };
26
27
  export default Tapjoy;
@@ -17,7 +17,7 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  s.dependency "React-Core"
20
- s.dependency "TapjoySDK", "13.2.1"
20
+ s.dependency "TapjoySDK", "13.3.0"
21
21
 
22
22
  # Don't install the dependencies when we run `pod install` in the old architecture.
23
23
  if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then