airbridge-react-native-sdk-restricted 2.8.8 → 2.8.9

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/changelog.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 2.8.9
2
+
3
+ **FIXED**
4
+ * Solve issue that setAttributionListener is not working if airbridge.json is not exist.
5
+
1
6
  ## 2.8.8
2
7
 
3
8
  **FIXED**
@@ -8,7 +8,6 @@
8
8
 
9
9
  #import "ARNConfigReader.h"
10
10
 
11
- #import "AirbridgeAttribution.h"
12
11
  #import "ARNGet.h"
13
12
 
14
13
  #import <AirBridge/AirBridge.h>
@@ -58,20 +57,24 @@
58
57
  }
59
58
 
60
59
  NSString* logLevel = [ARNGet type:NSString.class dictionary:dictionary key:@"logLevel"] ?: @"";
61
- [AirBridge setLogLevel:(
62
- [@{
63
- @"debug": @(AB_LOG_DEBUG),
64
- @"info": @(AB_LOG_INFO),
65
- @"warning": @(AB_LOG_WARNING),
66
- @"error": @(AB_LOG_CRITICAL),
67
- @"fault": @(AB_LOG_CRASH)
68
- } objectForKey: [logLevel lowercaseString]
69
- ] ?: @(AB_LOG_WARNING)
70
- )];
71
-
72
- [AirBridge.state setSDKDevelopmentPlatform:@"react_native"];
73
-
74
- [AirbridgeAttribution setInitialAttributionCallback];
60
+ if ([logLevel isEqualToString:@"debug"]) {
61
+ [AirBridge setLogLevel:AB_LOG_DEBUG];
62
+ }
63
+ else if ([logLevel isEqualToString:@"info"]) {
64
+ [AirBridge setLogLevel:AB_LOG_INFO];
65
+ }
66
+ else if ([logLevel isEqualToString:@"warning"]) {
67
+ [AirBridge setLogLevel:AB_LOG_WARNING];
68
+ }
69
+ else if ([logLevel isEqualToString:@"error"]) {
70
+ [AirBridge setLogLevel:AB_LOG_CRITICAL];
71
+ }
72
+ else if ([logLevel isEqualToString:@"fault"]) {
73
+ [AirBridge setLogLevel:AB_LOG_CRASH];
74
+ }
75
+ else {
76
+ [AirBridge setLogLevel:AB_LOG_WARNING];
77
+ }
75
78
  }
76
79
 
77
80
  @end
@@ -8,6 +8,7 @@
8
8
 
9
9
  #import "AirbridgeRN.h"
10
10
 
11
+ #import "AirbridgeAttribution.h"
11
12
  #import "AirbridgeDeeplink.h"
12
13
 
13
14
  // Airbridge
@@ -50,6 +51,8 @@ static AirbridgeRN* instance;
50
51
  withLaunchOptions:(nullable NSDictionary*)launchOptions
51
52
  {
52
53
  [ARNConfigReader apply:airbridgeJSON];
54
+ [AirBridge.state setSDKDevelopmentPlatform:@"react_native"];
55
+ [AirbridgeAttribution setInitialAttributionCallback];
53
56
 
54
57
  [AirBridge getInstance:appToken appName:appName withLaunchOptions:launchOptions];
55
58
  [AirbridgeDeeplink setInitialDeeplinkCallback];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "airbridge-react-native-sdk-restricted",
3
- "version": "2.8.8",
3
+ "version": "2.8.9",
4
4
  "description": "Airbridge SDK for React Native",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -216,6 +216,7 @@
216
216
  00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
217
217
  E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
218
218
  E69B344EB307D0B30A1489D0 /* [CP-User] [RNFB] Core Configuration */,
219
+ F3CA2F01D012BA2728957B14 /* [Airbridge] Copy airbridge.json */,
219
220
  );
220
221
  buildRules = (
221
222
  );
@@ -408,6 +409,24 @@
408
409
  shellPath = /bin/sh;
409
410
  shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##########################################################################\n##########################################################################\n#\n# NOTE THAT IF YOU CHANGE THIS FILE YOU MUST RUN pod install AFTERWARDS\n#\n# This file is installed as an Xcode build script in the project file\n# by cocoapods, and you will not see your changes until you pod install\n#\n##########################################################################\n##########################################################################\n\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_analytics_storage\n _ANALYTICS_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_analytics_storage\")\n if [[ $_ANALYTICS_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_storage\n _ANALYTICS_AD_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_storage\")\n if [[ $_ANALYTICS_AD_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_user_data\n _ANALYTICS_AD_USER_DATA=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_user_data\")\n if [[ $_ANALYTICS_AD_USER_DATA ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_USER_DATA\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.analytics_registration_with_ad_network_enabled\n _ANALYTICS_REGISTRATION_WITH_AD_NETWORK=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_registration_with_ad_network_enabled\")\n if [[ $_ANALYTICS_REGISTRATION_WITH_AD_NETWORK ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_REGISTRATION_WITH_AD_NETWORK\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n";
410
411
  };
412
+ F3CA2F01D012BA2728957B14 /* [Airbridge] Copy airbridge.json */ = {
413
+ isa = PBXShellScriptBuildPhase;
414
+ buildActionMask = 2147483647;
415
+ files = (
416
+ );
417
+ inputFileListPaths = (
418
+ );
419
+ inputPaths = (
420
+ );
421
+ name = "[Airbridge] Copy airbridge.json";
422
+ outputFileListPaths = (
423
+ );
424
+ outputPaths = (
425
+ );
426
+ runOnlyForDeploymentPostprocessing = 0;
427
+ shellPath = /bin/sh;
428
+ shellScript = "if [ -r ${SRCROOT}/../airbridge.json ]; then\n cp ${SRCROOT}/../airbridge.json ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/airbridge.json\nfi\n";
429
+ };
411
430
  F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
412
431
  isa = PBXShellScriptBuildPhase;
413
432
  buildActionMask = 2147483647;
@@ -1,7 +1,7 @@
1
1
  PODS:
2
2
  - AirBridge (1.37.3)
3
3
  - airbridge-ios-sdk-qa-library (1.37.0)
4
- - airbridge-react-native-sdk (2.8.6):
4
+ - airbridge-react-native-sdk (2.8.9):
5
5
  - AirBridge (= 1.37.3)
6
6
  - React
7
7
  - boost (1.83.0)
@@ -1553,7 +1553,7 @@ EXTERNAL SOURCES:
1553
1553
  SPEC CHECKSUMS:
1554
1554
  AirBridge: ba285f4e0bee8d2b1967b212689830f30e51b2da
1555
1555
  airbridge-ios-sdk-qa-library: bb492ce8a91c879f6448b3109fc58ef14521d638
1556
- airbridge-react-native-sdk: 05bbb3316787ac375cc40b50685282bd2fd29d0f
1556
+ airbridge-react-native-sdk: 5daf473962e21fdcb30ff59282c3713fbdcbf5e4
1557
1557
  boost: d3f49c53809116a5d38da093a8aa78bf551aed09
1558
1558
  DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5
1559
1559
  FBLazyVector: 4bc164e5b5e6cfc288d2b5ff28643ea15fa1a589
@@ -44,7 +44,7 @@
44
44
  }
45
45
  },
46
46
  "..": {
47
- "version": "2.8.6",
47
+ "version": "2.8.9",
48
48
  "license": "MIT",
49
49
  "dependencies": {
50
50
  "lodash.isfunction": "^3.0.9",
@@ -0,0 +1,60 @@
1
+ import { NativeModules, NativeEventEmitter } from 'react-native'
2
+
3
+ import { createInteractor } from '../architecture/Interactor'
4
+ import { check } from '../utility/check'
5
+ import { log } from '../utility/log'
6
+
7
+ export const createDependency = () => {}
8
+
9
+ type AttributionInteractor = {
10
+ listen(): void
11
+ }
12
+
13
+ createDependency.AttributionModule = () => ({
14
+ emitter: new NativeEventEmitter(NativeModules.AttributionInteractor),
15
+ interactor: createInteractor<AttributionInteractor>(NativeModules.AttributionInteractor),
16
+ })
17
+
18
+ export type AttributionModule = ReturnType<typeof createAttributionModule>
19
+
20
+ export const createAttributionModule= () => {
21
+ // create dependency
22
+ const { emitter, interactor } = createDependency.AttributionModule()
23
+
24
+ let cache: Record<string, any> | undefined
25
+ let listener: (result: Record<string, any>) => void = (result) => {
26
+ cache = result
27
+ }
28
+
29
+ // initialize
30
+ emitter.addListener('airbridge.attribution', (result) => {
31
+ listener(result)
32
+ })
33
+ interactor.listen()
34
+
35
+ // define method
36
+ /**
37
+ * Sets a listener for receiving attribution of install event.
38
+ * @param onReceived Map of attribution is delivered.
39
+ */
40
+ const setOnAttributionReceived = (
41
+ onReceived: (attribution: Record<string, any>) => void,
42
+ ) => {
43
+ if (!check.function(onReceived)) {
44
+ log.unmatchedType('onReceived', 'function')
45
+ return
46
+ }
47
+
48
+ if (cache !== undefined) {
49
+ onReceived(cache)
50
+ cache = undefined
51
+ }
52
+
53
+ listener = onReceived
54
+ }
55
+
56
+ // create object
57
+ return {
58
+ setOnAttributionReceived,
59
+ }
60
+ }
@@ -26,7 +26,7 @@ class WebInterface {
26
26
 
27
27
  const getScript = function (webToken, postCommand) {
28
28
  const jsonSchemaVersion = 4;
29
- const sdkVersion = '2.8.8';
29
+ const sdkVersion = '2.8.9';
30
30
 
31
31
  return `
32
32
  AirbridgeNative = {};