react-native-netmera 1.11.3 → 2.0.0-alpha01
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/README.md +109 -120
- package/RNNetmera.podspec +30 -14
- package/android/build.gradle +83 -19
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +0 -5
- package/android/src/main/AndroidManifestNew.xml +5 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmera.kt +24 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.kt +54 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.kt +108 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraEvent.kt +24 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraModule.kt +694 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPackage.kt +17 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushBroadcastReceiver.kt +81 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushHeadlessService.kt +32 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUtil.kt +218 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraWebWidgetCallbacks.kt +25 -0
- package/ios/AnyCodable/AnyCodable.swift +151 -0
- package/ios/AnyCodable/AnyDecodable.swift +192 -0
- package/ios/AnyCodable/AnyEncodable.swift +295 -0
- package/ios/RNNetmera-Bridging-Header.h +3 -0
- package/ios/RNNetmera.mm +143 -0
- package/ios/RNNetmera.swift +759 -0
- package/ios/RNNetmeraCategoryObject.swift +61 -0
- package/ios/RNNetmeraEvent.swift +26 -0
- package/ios/RNNetmeraPushLifecycleDelegate.swift +47 -0
- package/ios/RNNetmeraRCTEventEmitter.mm +8 -0
- package/ios/RNNetmeraRCTEventEmitter.swift +134 -0
- package/ios/RNNetmeraUtils.swift +233 -0
- package/lib/module/Netmera.js +256 -0
- package/lib/module/Netmera.js.map +1 -0
- package/lib/module/events/NetmeraEvent.js +8 -0
- package/lib/module/events/NetmeraEvent.js.map +1 -0
- package/lib/module/events/NetmeraEventBannerOpen.js +13 -0
- package/lib/module/events/NetmeraEventBannerOpen.js.map +1 -0
- package/lib/module/events/NetmeraEventBatteryLevel.js +10 -0
- package/lib/module/events/NetmeraEventBatteryLevel.js.map +1 -0
- package/lib/module/events/NetmeraEventCategoryView.js +13 -0
- package/lib/module/events/NetmeraEventCategoryView.js.map +1 -0
- package/lib/module/events/NetmeraEventInAppPurchase.js +28 -0
- package/lib/module/events/NetmeraEventInAppPurchase.js.map +1 -0
- package/lib/module/events/NetmeraEventLogin.js +10 -0
- package/lib/module/events/NetmeraEventLogin.js.map +1 -0
- package/lib/module/events/NetmeraEventRegister.js +10 -0
- package/lib/module/events/NetmeraEventRegister.js.map +1 -0
- package/lib/module/events/NetmeraEventScreenView.js +22 -0
- package/lib/module/events/NetmeraEventScreenView.js.map +1 -0
- package/lib/module/events/NetmeraEventSearch.js +13 -0
- package/lib/module/events/NetmeraEventSearch.js.map +1 -0
- package/lib/module/events/NetmeraEventShare.js +13 -0
- package/lib/module/events/NetmeraEventShare.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventCartAddProduct.js +13 -0
- package/lib/module/events/commerce/NetmeraEventCartAddProduct.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventCartRemoveProduct.js +10 -0
- package/lib/module/events/commerce/NetmeraEventCartRemoveProduct.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventCartView.js +13 -0
- package/lib/module/events/commerce/NetmeraEventCartView.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventOrderCancel.js +19 -0
- package/lib/module/events/commerce/NetmeraEventOrderCancel.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventProductComment.js +7 -0
- package/lib/module/events/commerce/NetmeraEventProductComment.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventProductRate.js +10 -0
- package/lib/module/events/commerce/NetmeraEventProductRate.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventProductView.js +7 -0
- package/lib/module/events/commerce/NetmeraEventProductView.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventPurchase.js +34 -0
- package/lib/module/events/commerce/NetmeraEventPurchase.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventWishList.js +7 -0
- package/lib/module/events/commerce/NetmeraEventWishList.js.map +1 -0
- package/lib/module/events/commerce/NetmeraLineItem.js +9 -0
- package/lib/module/events/commerce/NetmeraLineItem.js.map +1 -0
- package/lib/module/events/commerce/NetmeraProduct.js +46 -0
- package/lib/module/events/commerce/NetmeraProduct.js.map +1 -0
- package/lib/module/events/media/NetmeraEventContent.js +42 -0
- package/lib/module/events/media/NetmeraEventContent.js.map +1 -0
- package/lib/module/events/media/NetmeraEventContentComment.js +7 -0
- package/lib/module/events/media/NetmeraEventContentComment.js.map +1 -0
- package/lib/module/events/media/NetmeraEventContentRate.js +10 -0
- package/lib/module/events/media/NetmeraEventContentRate.js.map +1 -0
- package/lib/module/events/media/NetmeraEventContentView.js +7 -0
- package/lib/module/events/media/NetmeraEventContentView.js.map +1 -0
- package/lib/module/index.js +43 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/models/NMCategoryPreference.js +8 -0
- package/lib/module/models/NMCategoryPreference.js.map +1 -0
- package/lib/module/models/NMInboxStatus.js +11 -0
- package/lib/module/models/NMInboxStatus.js.map +1 -0
- package/lib/module/models/NMInboxStatusCountFilter.js +12 -0
- package/lib/module/models/NMInboxStatusCountFilter.js.map +1 -0
- package/lib/module/models/NetmeraCategory.js +8 -0
- package/lib/module/models/NetmeraCategory.js.map +1 -0
- package/lib/module/models/NetmeraCategoryFilter.js +8 -0
- package/lib/module/models/NetmeraCategoryFilter.js.map +1 -0
- package/lib/module/models/NetmeraCouponObject.js +8 -0
- package/lib/module/models/NetmeraCouponObject.js.map +1 -0
- package/lib/module/models/NetmeraInbox.js +8 -0
- package/lib/module/models/NetmeraInbox.js.map +1 -0
- package/lib/module/models/NetmeraInboxFilter.js +8 -0
- package/lib/module/models/NetmeraInboxFilter.js.map +1 -0
- package/lib/module/models/NetmeraProfileAttribute.js +75 -0
- package/lib/module/models/NetmeraProfileAttribute.js.map +1 -0
- package/lib/module/models/NetmeraUser.js +89 -0
- package/lib/module/models/NetmeraUser.js.map +1 -0
- package/lib/module/models/NetmeraUserProfile.js +58 -0
- package/lib/module/models/NetmeraUserProfile.js.map +1 -0
- package/lib/module/models/NotificationPermissionStatus.js +10 -0
- package/lib/module/models/NotificationPermissionStatus.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/utils/DeviceUtils.js +10 -0
- package/lib/module/utils/DeviceUtils.js.map +1 -0
- package/lib/module/utils/Optional.js +32 -0
- package/lib/module/utils/Optional.js.map +1 -0
- package/lib/module/utils/RNNetmera.js +16 -0
- package/lib/module/utils/RNNetmera.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/Netmera.d.ts +70 -0
- package/lib/typescript/src/Netmera.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEvent.d.ts +5 -0
- package/lib/typescript/src/events/NetmeraEvent.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventBannerOpen.d.ts +9 -0
- package/lib/typescript/src/events/NetmeraEventBannerOpen.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventBatteryLevel.d.ts +7 -0
- package/lib/typescript/src/events/NetmeraEventBatteryLevel.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventCategoryView.d.ts +9 -0
- package/lib/typescript/src/events/NetmeraEventCategoryView.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventInAppPurchase.d.ts +19 -0
- package/lib/typescript/src/events/NetmeraEventInAppPurchase.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventLogin.d.ts +7 -0
- package/lib/typescript/src/events/NetmeraEventLogin.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventRegister.d.ts +7 -0
- package/lib/typescript/src/events/NetmeraEventRegister.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventScreenView.d.ts +15 -0
- package/lib/typescript/src/events/NetmeraEventScreenView.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventSearch.d.ts +9 -0
- package/lib/typescript/src/events/NetmeraEventSearch.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventShare.d.ts +9 -0
- package/lib/typescript/src/events/NetmeraEventShare.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartAddProduct.d.ts +9 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartAddProduct.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartRemoveProduct.d.ts +7 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartRemoveProduct.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartView.d.ts +9 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartView.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventOrderCancel.d.ts +13 -0
- package/lib/typescript/src/events/commerce/NetmeraEventOrderCancel.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductComment.d.ts +5 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductComment.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductRate.d.ts +7 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductRate.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductView.d.ts +5 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductView.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventPurchase.d.ts +24 -0
- package/lib/typescript/src/events/commerce/NetmeraEventPurchase.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventWishList.d.ts +5 -0
- package/lib/typescript/src/events/commerce/NetmeraEventWishList.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraLineItem.d.ts +6 -0
- package/lib/typescript/src/events/commerce/NetmeraLineItem.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraProduct.d.ts +23 -0
- package/lib/typescript/src/events/commerce/NetmeraProduct.d.ts.map +1 -0
- package/lib/typescript/src/events/media/NetmeraEventContent.d.ts +23 -0
- package/lib/typescript/src/events/media/NetmeraEventContent.d.ts.map +1 -0
- package/lib/typescript/src/events/media/NetmeraEventContentComment.d.ts +5 -0
- package/lib/typescript/src/events/media/NetmeraEventContentComment.d.ts.map +1 -0
- package/lib/typescript/src/events/media/NetmeraEventContentRate.d.ts +7 -0
- package/lib/typescript/src/events/media/NetmeraEventContentRate.d.ts.map +1 -0
- package/lib/typescript/src/events/media/NetmeraEventContentView.d.ts +5 -0
- package/lib/typescript/src/events/media/NetmeraEventContentView.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +39 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/models/NMCategoryPreference.d.ts +6 -0
- package/lib/typescript/src/models/NMCategoryPreference.d.ts.map +1 -0
- package/lib/typescript/src/models/NMInboxStatus.d.ts +8 -0
- package/lib/typescript/src/models/NMInboxStatus.d.ts.map +1 -0
- package/lib/typescript/src/models/NMInboxStatusCountFilter.d.ts +7 -0
- package/lib/typescript/src/models/NMInboxStatusCountFilter.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraCategory.d.ts +10 -0
- package/lib/typescript/src/models/NetmeraCategory.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraCategoryFilter.d.ts +6 -0
- package/lib/typescript/src/models/NetmeraCategoryFilter.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraCouponObject.d.ts +8 -0
- package/lib/typescript/src/models/NetmeraCouponObject.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraInbox.d.ts +22 -0
- package/lib/typescript/src/models/NetmeraInbox.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraInboxFilter.d.ts +7 -0
- package/lib/typescript/src/models/NetmeraInboxFilter.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraProfileAttribute.d.ts +33 -0
- package/lib/typescript/src/models/NetmeraProfileAttribute.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraUser.d.ts +25 -0
- package/lib/typescript/src/models/NetmeraUser.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraUserProfile.d.ts +21 -0
- package/lib/typescript/src/models/NetmeraUserProfile.d.ts.map +1 -0
- package/lib/typescript/src/models/NotificationPermissionStatus.d.ts +7 -0
- package/lib/typescript/src/models/NotificationPermissionStatus.d.ts.map +1 -0
- package/lib/typescript/src/utils/DeviceUtils.d.ts +3 -0
- package/lib/typescript/src/utils/DeviceUtils.d.ts.map +1 -0
- package/lib/typescript/src/utils/Optional.d.ts +15 -0
- package/lib/typescript/src/utils/Optional.d.ts.map +1 -0
- package/lib/typescript/src/utils/RNNetmera.d.ts +5 -0
- package/lib/typescript/src/utils/RNNetmera.d.ts.map +1 -0
- package/package.json +104 -17
- package/src/Netmera.ts +139 -88
- package/src/events/NetmeraEvent.ts +1 -1
- package/src/events/NetmeraEventBannerOpen.ts +4 -4
- package/src/events/NetmeraEventBatteryLevel.ts +3 -3
- package/src/events/NetmeraEventCategoryView.ts +4 -4
- package/src/events/NetmeraEventInAppPurchase.ts +10 -10
- package/src/events/NetmeraEventLogin.ts +3 -3
- package/src/events/NetmeraEventRegister.ts +3 -3
- package/src/events/NetmeraEventScreenView.ts +7 -7
- package/src/events/NetmeraEventSearch.ts +4 -4
- package/src/events/NetmeraEventShare.ts +4 -4
- package/src/events/commerce/NetmeraEventCartAddProduct.ts +4 -4
- package/src/events/commerce/NetmeraEventCartRemoveProduct.ts +3 -3
- package/src/events/commerce/NetmeraEventCartView.ts +4 -4
- package/src/events/commerce/NetmeraEventOrderCancel.ts +6 -6
- package/src/events/commerce/NetmeraEventProductComment.ts +2 -2
- package/src/events/commerce/NetmeraEventProductRate.ts +3 -3
- package/src/events/commerce/NetmeraEventProductView.ts +2 -2
- package/src/events/commerce/NetmeraEventPurchase.ts +13 -13
- package/src/events/commerce/NetmeraEventWishList.ts +2 -2
- package/src/events/commerce/NetmeraLineItem.ts +2 -2
- package/src/events/commerce/NetmeraProduct.ts +10 -10
- package/src/events/media/NetmeraEventContent.ts +8 -8
- package/src/events/media/NetmeraEventContentComment.ts +2 -2
- package/src/events/media/NetmeraEventContentRate.ts +3 -3
- package/src/events/media/NetmeraEventContentView.ts +2 -2
- package/src/index.ts +87 -0
- package/src/models/NMCategoryPreference.ts +1 -1
- package/src/models/NMInboxStatusCountFilter.ts +1 -1
- package/src/models/NetmeraCategory.ts +2 -2
- package/src/models/NetmeraCategoryFilter.ts +1 -1
- package/src/models/NetmeraCouponObject.ts +1 -1
- package/src/models/NetmeraInbox.ts +1 -1
- package/src/models/NetmeraInboxFilter.ts +1 -1
- package/src/models/NetmeraProfileAttribute.ts +81 -0
- package/src/models/NetmeraUser.ts +76 -74
- package/src/models/NetmeraUserProfile.ts +67 -0
- package/src/models/NotificationPermissionStatus.ts +4 -4
- package/src/utils/DeviceUtils.ts +3 -3
- package/src/utils/Optional.ts +31 -0
- package/src/utils/RNNetmera.ts +24 -0
- package/.eslintignore +0 -7
- package/.gitattributes +0 -1
- package/.github/workflows/code_quality_check.yaml +0 -38
- package/.prettierignore +0 -14
- package/.yarnrc.yml +0 -1
- package/android/.project +0 -17
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +0 -6
- package/android/gradlew +0 -172
- package/android/gradlew.bat +0 -84
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmera.java +0 -24
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.java +0 -56
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.java +0 -154
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraEvent.java +0 -36
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraModule.java +0 -631
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPackage.java +0 -35
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushBroadcastReceiver.java +0 -86
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushHeadlessService.java +0 -32
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUser.java +0 -24
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUtil.java +0 -354
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraWebWidgetCallbacks.java +0 -27
- package/index.ts +0 -80
- package/ios/RNNetmera.h +0 -32
- package/ios/RNNetmera.m +0 -507
- package/ios/RNNetmera.xcodeproj/project.pbxproj +0 -316
- package/ios/RNNetmera.xcodeproj/xcshareddata/xcschemes/RNNetmera.xcscheme +0 -67
- package/ios/RNNetmera.xcworkspace/contents.xcworkspacedata +0 -9
- package/ios/RNNetmeraCategoryObject.h +0 -16
- package/ios/RNNetmeraCategoryObject.m +0 -59
- package/ios/RNNetmeraEvent.h +0 -17
- package/ios/RNNetmeraEvent.m +0 -27
- package/ios/RNNetmeraRCTEventEmitter.h +0 -23
- package/ios/RNNetmeraRCTEventEmitter.m +0 -142
- package/ios/RNNetmeraUser.h +0 -15
- package/ios/RNNetmeraUser.m +0 -19
- package/ios/RNNetmeraUtils.h +0 -27
- package/ios/RNNetmeraUtils.m +0 -128
- package/scripts/update-version.js +0 -38
- package/scripts/yarn_rebuild.sh +0 -31
- package/tsconfig.json +0 -3
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
package com.netmera.reactnativesdk
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.ReactPackage
|
|
4
|
+
import com.facebook.react.bridge.NativeModule
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.uimanager.ViewManager
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class RNNetmeraPackage : ReactPackage {
|
|
10
|
+
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
|
|
11
|
+
return listOf(RNNetmeraModule(reactContext))
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
|
15
|
+
return emptyList()
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
package com.netmera.reactnativesdk
|
|
2
|
+
|
|
3
|
+
import android.content.ComponentName
|
|
4
|
+
import android.content.Context
|
|
5
|
+
import android.content.Intent
|
|
6
|
+
import android.os.Bundle
|
|
7
|
+
import android.util.Log
|
|
8
|
+
import com.facebook.react.HeadlessJsTaskService
|
|
9
|
+
import com.facebook.react.bridge.Arguments
|
|
10
|
+
import com.facebook.react.bridge.ReadableMap
|
|
11
|
+
import com.facebook.react.bridge.WritableMap
|
|
12
|
+
import com.netmera.NetmeraCarouselObject
|
|
13
|
+
import com.netmera.NetmeraPushObject
|
|
14
|
+
import com.netmera.callbacks.NMPushActionCallbacks
|
|
15
|
+
import com.netmera.reactnativesdk.RNNetmeraPushHeadlessService.Companion.TASK_KEY
|
|
16
|
+
import com.netmera.reactnativesdk.RNNetmeraPushHeadlessService.Companion.TASK_MESSAGE
|
|
17
|
+
|
|
18
|
+
class RNNetmeraPushBroadcastReceiver : NMPushActionCallbacks {
|
|
19
|
+
|
|
20
|
+
override fun onPushRegister(context: Context, gcmSenderId: String, pushToken: String) {
|
|
21
|
+
val bundle = Bundle().apply {
|
|
22
|
+
putString("gcmSenderId", gcmSenderId)
|
|
23
|
+
putString("pushToken", pushToken)
|
|
24
|
+
}
|
|
25
|
+
sendEvent(context, "onPushRegister", Arguments.fromBundle(bundle))
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
override fun onPushReceive(context: Context, bundle: Bundle?, netmeraPushObject: NetmeraPushObject) {
|
|
29
|
+
sendEvent(context, "onPushReceive", mergeMap(bundle, netmeraPushObject))
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
override fun onPushOpen(context: Context, bundle: Bundle?, netmeraPushObject: NetmeraPushObject) {
|
|
33
|
+
sendEvent(context, "onPushOpen", mergeMap(bundle, netmeraPushObject))
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
override fun onPushDismiss(context: Context, bundle: Bundle?, netmeraPushObject: NetmeraPushObject) {
|
|
37
|
+
sendEvent(context, "onPushDismiss", mergeMap(bundle, netmeraPushObject))
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
override fun onPushButtonClicked(context: Context, bundle: Bundle?, netmeraPushObject: NetmeraPushObject) {
|
|
41
|
+
sendEvent(context, "onPushButtonClicked", mergeMap(bundle, netmeraPushObject))
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
override fun onCarouselObjectSelected(
|
|
45
|
+
context: Context,
|
|
46
|
+
bundle: Bundle?,
|
|
47
|
+
netmeraPushObject: NetmeraPushObject,
|
|
48
|
+
selectedIndex: Int,
|
|
49
|
+
netmeraCarouselObject: NetmeraCarouselObject
|
|
50
|
+
) {
|
|
51
|
+
val newBundle = bundle ?: Bundle()
|
|
52
|
+
newBundle.putInt("selectedIndex", selectedIndex)
|
|
53
|
+
val map = RNNetmeraUtil.mapCarouselObject(netmeraCarouselObject)
|
|
54
|
+
map.merge(mergeMap(newBundle, netmeraPushObject))
|
|
55
|
+
sendEvent(context, "onCarouselObjectSelected", map)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private fun sendEvent(context: Context, eventName: String, map: WritableMap) {
|
|
59
|
+
try {
|
|
60
|
+
val backgroundIntent = Intent(context, RNNetmeraPushHeadlessService::class.java).apply {
|
|
61
|
+
putExtra(TASK_KEY, eventName)
|
|
62
|
+
putExtra(TASK_MESSAGE, Arguments.toBundle(map))
|
|
63
|
+
}
|
|
64
|
+
val ag = Arguments.toBundle(map)
|
|
65
|
+
val name: ComponentName? = context.startService(backgroundIntent)
|
|
66
|
+
if (name != null) {
|
|
67
|
+
HeadlessJsTaskService.acquireWakeLockNow(context)
|
|
68
|
+
}
|
|
69
|
+
} catch (ex: IllegalStateException) {
|
|
70
|
+
Log.d("RNNetmera Background", "RNNetmera Background Event Exception")
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
private fun mergeMap(bundle: Bundle?, netmeraPushObject: NetmeraPushObject): WritableMap {
|
|
75
|
+
val mapPushObject = RNNetmeraUtil.mapPushObject(netmeraPushObject)
|
|
76
|
+
val mapBundle: ReadableMap? = bundle?.let { Arguments.fromBundle(it) }
|
|
77
|
+
mapBundle?.let { mapPushObject.merge(it) }
|
|
78
|
+
return mapPushObject
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
package com.netmera.reactnativesdk
|
|
2
|
+
|
|
3
|
+
import android.content.Intent
|
|
4
|
+
import android.os.Bundle
|
|
5
|
+
import android.util.Log
|
|
6
|
+
import com.facebook.react.HeadlessJsTaskService
|
|
7
|
+
import com.facebook.react.bridge.Arguments
|
|
8
|
+
import com.facebook.react.jstasks.HeadlessJsTaskConfig
|
|
9
|
+
|
|
10
|
+
class RNNetmeraPushHeadlessService : HeadlessJsTaskService() {
|
|
11
|
+
|
|
12
|
+
companion object {
|
|
13
|
+
private const val TIMEOUT_DEFAULT: Long = 5000
|
|
14
|
+
const val TASK_KEY = "TASK_KEY"
|
|
15
|
+
const val TASK_MESSAGE = "TASK_MESSAGE"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
override fun getTaskConfig(intent: Intent?): HeadlessJsTaskConfig? {
|
|
19
|
+
if (intent == null) return null
|
|
20
|
+
val extras = intent.extras
|
|
21
|
+
val remoteMessage: Bundle? = intent.getParcelableExtra(TASK_MESSAGE)
|
|
22
|
+
val taskKey = extras?.getString(TASK_KEY)
|
|
23
|
+
if (extras == null || taskKey == null) return null
|
|
24
|
+
|
|
25
|
+
return HeadlessJsTaskConfig(
|
|
26
|
+
taskKey,
|
|
27
|
+
Arguments.fromBundle(remoteMessage ?: Bundle()),
|
|
28
|
+
TIMEOUT_DEFAULT,
|
|
29
|
+
true
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
package com.netmera.reactnativesdk
|
|
2
|
+
|
|
3
|
+
import android.text.format.DateFormat
|
|
4
|
+
import com.facebook.react.bridge.*
|
|
5
|
+
import com.google.gson.Gson
|
|
6
|
+
import com.netmera.NetmeraCarouselObject
|
|
7
|
+
import com.netmera.NetmeraPushObject
|
|
8
|
+
import com.netmera.NetmeraPushStyle
|
|
9
|
+
import com.netmera.data.NMCategoryPreference
|
|
10
|
+
import com.netmera.data.NMCouponDetail
|
|
11
|
+
import com.netmera.data.NMInboxStatus
|
|
12
|
+
import com.netmera.data.NMInboxStatusCount
|
|
13
|
+
import org.json.JSONArray
|
|
14
|
+
import org.json.JSONObject
|
|
15
|
+
|
|
16
|
+
object RNNetmeraUtil {
|
|
17
|
+
|
|
18
|
+
private fun jsonToWritableMap(jsonObject: JSONObject?): WritableMap? {
|
|
19
|
+
if (jsonObject == null) return null
|
|
20
|
+
|
|
21
|
+
val writableMap: WritableMap = WritableNativeMap()
|
|
22
|
+
val keys = jsonObject.keys()
|
|
23
|
+
if (!keys.hasNext()) return null
|
|
24
|
+
|
|
25
|
+
while (keys.hasNext()) {
|
|
26
|
+
val key = keys.next()
|
|
27
|
+
try {
|
|
28
|
+
val value = jsonObject.get(key)
|
|
29
|
+
when (value) {
|
|
30
|
+
null -> writableMap.putNull(key)
|
|
31
|
+
is Boolean -> writableMap.putBoolean(key, value)
|
|
32
|
+
is Int -> writableMap.putInt(key, value)
|
|
33
|
+
is Double -> writableMap.putDouble(key, value)
|
|
34
|
+
is String -> writableMap.putString(key, value)
|
|
35
|
+
is JSONObject -> writableMap.putMap(key, jsonToWritableMap(value))
|
|
36
|
+
is JSONArray -> writableMap.putArray(key, jsonArrayToWritableArray(value))
|
|
37
|
+
}
|
|
38
|
+
} catch (ignored: Exception) {
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return writableMap
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
fun jsonArrayToWritableArray(jsonArray: JSONArray?): WritableArray? {
|
|
45
|
+
if (jsonArray == null || jsonArray.length() <= 0) return null
|
|
46
|
+
val writableArray: WritableArray = WritableNativeArray()
|
|
47
|
+
for (i in 0 until jsonArray.length()) {
|
|
48
|
+
try {
|
|
49
|
+
val value = jsonArray.get(i)
|
|
50
|
+
when (value) {
|
|
51
|
+
null -> writableArray.pushNull()
|
|
52
|
+
is Boolean -> writableArray.pushBoolean(value)
|
|
53
|
+
is Int -> writableArray.pushInt(value)
|
|
54
|
+
is Double -> writableArray.pushDouble(value)
|
|
55
|
+
is String -> writableArray.pushString(value)
|
|
56
|
+
is JSONObject -> writableArray.pushMap(jsonToWritableMap(value))
|
|
57
|
+
is JSONArray -> writableArray.pushArray(jsonArrayToWritableArray(value))
|
|
58
|
+
}
|
|
59
|
+
} catch (ignored: Exception) {
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return writableArray
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
fun toMap(readableMap: ReadableMap?): Map<String, Any?> {
|
|
66
|
+
val map = mutableMapOf<String, Any?>()
|
|
67
|
+
if (readableMap == null) return map
|
|
68
|
+
|
|
69
|
+
val iterator = readableMap.keySetIterator()
|
|
70
|
+
while (iterator.hasNextKey()) {
|
|
71
|
+
val key = iterator.nextKey()
|
|
72
|
+
when (readableMap.getType(key)) {
|
|
73
|
+
ReadableType.Null -> map[key] = null
|
|
74
|
+
ReadableType.Boolean -> map[key] = readableMap.getBoolean(key)
|
|
75
|
+
ReadableType.Number -> {
|
|
76
|
+
val value = readableMap.getDouble(key)
|
|
77
|
+
map[key] = if (value % 1 == 0.0) value.toLong() else value
|
|
78
|
+
}
|
|
79
|
+
ReadableType.String -> map[key] = readableMap.getString(key)
|
|
80
|
+
ReadableType.Map -> map[key] = toMap(readableMap.getMap(key))
|
|
81
|
+
ReadableType.Array -> map[key] = toList(readableMap.getArray(key))
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return map
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
fun toList(readableArray: ReadableArray?): List<Any?> {
|
|
88
|
+
if (readableArray == null) return emptyList()
|
|
89
|
+
|
|
90
|
+
val list = mutableListOf<Any?>()
|
|
91
|
+
for (i in 0 until readableArray.size()) {
|
|
92
|
+
when (readableArray.getType(i)) {
|
|
93
|
+
ReadableType.Null -> list.add(null)
|
|
94
|
+
ReadableType.Boolean -> list.add(readableArray.getBoolean(i))
|
|
95
|
+
ReadableType.Number -> {
|
|
96
|
+
val value = readableArray.getDouble(i)
|
|
97
|
+
list.add(if (value % 1 == 0.0) value.toLong() else value)
|
|
98
|
+
}
|
|
99
|
+
ReadableType.String -> list.add(readableArray.getString(i))
|
|
100
|
+
ReadableType.Map -> list.add(toMap(readableArray.getMap(i)))
|
|
101
|
+
ReadableType.Array -> list.add(toList(readableArray.getArray(i)))
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return list
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
fun mapCouponObjects(couponObjects: List<NMCouponDetail>): WritableArray {
|
|
108
|
+
val array: WritableArray = Arguments.createArray()
|
|
109
|
+
couponObjects.forEach { array.pushMap(mapCouponObject(it)) }
|
|
110
|
+
return array
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
fun mapCouponObject(couponObject: NMCouponDetail?): WritableMap {
|
|
114
|
+
val map: WritableMap = Arguments.createMap()
|
|
115
|
+
if (couponObject == null) return map
|
|
116
|
+
map.putString("couponId", couponObject.couponId)
|
|
117
|
+
map.putString("name", couponObject.name)
|
|
118
|
+
map.putString("code", couponObject.code)
|
|
119
|
+
couponObject.assignDate?.let { map.putString("assignDate", it.toString()) }
|
|
120
|
+
couponObject.expireDate?.let { map.putString("expireDate", it.toString()) }
|
|
121
|
+
return map
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
fun mapPushObjects(pushObjects: List<NetmeraPushObject>): WritableArray {
|
|
125
|
+
val array: WritableArray = Arguments.createArray()
|
|
126
|
+
pushObjects.forEach { array.pushMap(mapPushObject(it)) }
|
|
127
|
+
return array
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
fun mapPushObject(pushObject: NetmeraPushObject?): WritableMap {
|
|
131
|
+
val map: WritableMap = Arguments.createMap()
|
|
132
|
+
if (pushObject == null) return map
|
|
133
|
+
|
|
134
|
+
map.putInt("pushType", pushObject.pushType)
|
|
135
|
+
map.putString("pushId", pushObject.pushId)
|
|
136
|
+
map.putString("pushInstanceId", pushObject.pushInstanceId)
|
|
137
|
+
map.putInt("inboxStatus", pushObject.inboxStatus)
|
|
138
|
+
map.putString("category", pushObject.category)
|
|
139
|
+
|
|
140
|
+
pushObject.deepLink?.let { map.putString("deepLink", it.toString()) }
|
|
141
|
+
pushObject.externalId?.let { map.putString("externalId", it) }
|
|
142
|
+
pushObject.categories?.let { map.putArray("categories", Arguments.fromList(it)) }
|
|
143
|
+
|
|
144
|
+
if (!pushObject.customJson.isJsonNull && pushObject.customJson.size() > 0) {
|
|
145
|
+
try {
|
|
146
|
+
val json = JSONObject(pushObject.customJson.toString())
|
|
147
|
+
map.putMap("customJson", jsonToWritableMap(json))
|
|
148
|
+
} catch (ignored: Throwable) {
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
pushObject.popupExpirationTime?.let {
|
|
153
|
+
map.putString("expireTime", DateFormat.format("yyyy-MM-dd HH:mm:ss", it).toString())
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
pushObject.interactiveActions?.let {
|
|
157
|
+
if (it.isNotEmpty()) map.putString("interactiveActions", Gson().toJson(it))
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
pushObject.pushStyle?.let { style ->
|
|
161
|
+
style.contentTitle?.let { map.putString("title", it) }
|
|
162
|
+
style.subText?.let { map.putString("subtitle", it) }
|
|
163
|
+
style.contentText?.let { map.putString("body", it) }
|
|
164
|
+
style.bigPicturePath?.let { map.putString("mediaAttachmentURL", it) }
|
|
165
|
+
style.retrieveCarouselObjects()?.let { map.putString("carousel", Gson().toJson(it)) }
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
pushObject.sendDate?.let {
|
|
169
|
+
map.putString(
|
|
170
|
+
"sendDate", DateFormat.format("yyyy-MM-dd HH:mm:ss", it).toString()
|
|
171
|
+
)
|
|
172
|
+
}
|
|
173
|
+
pushObject.pushAction?.let {
|
|
174
|
+
map.putString("pushAction", Gson().toJson(it))
|
|
175
|
+
pushObject.webPageUrl?.let { url -> map.putString("webPage", url) }
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return map
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
fun mapCarouselObject(carouselObject: NetmeraCarouselObject): WritableMap {
|
|
182
|
+
val map: WritableMap = Arguments.createMap()
|
|
183
|
+
map.putString("id", carouselObject.id)
|
|
184
|
+
map.putString("action", Gson().toJson(carouselObject.action))
|
|
185
|
+
map.putString("picturePath", carouselObject.picturePath)
|
|
186
|
+
return map
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
fun getInboxStatus(code: Int): NMInboxStatus {
|
|
190
|
+
return NMInboxStatus.values().find { it.code == code } ?: NMInboxStatus.STATUS_ALL
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
fun parseInboxCountForStatusToMap(nmInboxStatusCount: NMInboxStatusCount): WritableMap {
|
|
194
|
+
val map: WritableMap = Arguments.createMap()
|
|
195
|
+
val allCount = nmInboxStatusCount.getCountForStatus(NMInboxStatus.STATUS_ALL) ?: 0
|
|
196
|
+
val deletedCount = nmInboxStatusCount.getCountForStatus(NMInboxStatus.STATUS_DELETED) ?: 0
|
|
197
|
+
val readCount = nmInboxStatusCount.getCountForStatus(NMInboxStatus.STATUS_READ) ?: 0
|
|
198
|
+
val unreadCount = nmInboxStatusCount.getCountForStatus(NMInboxStatus.STATUS_UNREAD) ?: 0
|
|
199
|
+
map.putInt(NMInboxStatus.STATUS_ALL.code.toString(), allCount)
|
|
200
|
+
map.putInt(NMInboxStatus.STATUS_DELETED.code.toString(), deletedCount)
|
|
201
|
+
map.putInt(NMInboxStatus.STATUS_READ.code.toString(), readCount)
|
|
202
|
+
map.putInt(NMInboxStatus.STATUS_UNREAD.code.toString(), unreadCount)
|
|
203
|
+
return map
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
fun parseUserCategoryPreferenceListToMap(preferences: List<NMCategoryPreference>): WritableArray {
|
|
207
|
+
val array: WritableArray = Arguments.createArray()
|
|
208
|
+
preferences.forEach { pref ->
|
|
209
|
+
val map: WritableMap = Arguments.createMap()
|
|
210
|
+
pref.categoryId?.let { map.putInt("categoryId", it) }
|
|
211
|
+
map.putString("categoryName", pref.categoryName)
|
|
212
|
+
pref.optInStatus?.let { map.putBoolean("optInStatus", it) }
|
|
213
|
+
array.pushMap(map)
|
|
214
|
+
}
|
|
215
|
+
return array
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
package com.netmera.reactnativesdk
|
|
2
|
+
|
|
3
|
+
import com.netmera.callbacks.NMWebWidgetCallbacks
|
|
4
|
+
|
|
5
|
+
class RNNetmeraWebWidgetCallbacks : NMWebWidgetCallbacks {
|
|
6
|
+
companion object {
|
|
7
|
+
private const val ON_WIDGET_URL_TRIGGERED = "onWidgetUrlTriggered"
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
override fun onDeeplinkTriggered(s: String) {
|
|
11
|
+
RNNetmeraModule.emitEvent(ON_WIDGET_URL_TRIGGERED, s)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
override fun onOpenUrlTriggered(s: String) {
|
|
15
|
+
RNNetmeraModule.emitEvent(ON_WIDGET_URL_TRIGGERED, s)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
override fun onWebWidgetShown(s: String) {
|
|
19
|
+
// There is no equivalent for this feature in iOS
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override fun onWebWidgetDismiss(s: String) {
|
|
23
|
+
// There is no equivalent for this feature in iOS
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
//
|
|
2
|
+
// AnyCodable.swift
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import Foundation
|
|
6
|
+
/**
|
|
7
|
+
A type-erased `Codable` value.
|
|
8
|
+
|
|
9
|
+
The `AnyCodable` type forwards encoding and decoding responsibilities
|
|
10
|
+
to an underlying value, hiding its specific underlying type.
|
|
11
|
+
|
|
12
|
+
You can encode or decode mixed-type values in dictionaries
|
|
13
|
+
and other collections that require `Encodable` or `Decodable` conformance
|
|
14
|
+
by declaring their contained type to be `AnyCodable`.
|
|
15
|
+
|
|
16
|
+
- SeeAlso: `AnyEncodable`
|
|
17
|
+
- SeeAlso: `AnyDecodable`
|
|
18
|
+
*/
|
|
19
|
+
@frozen public struct AnyCodable: Codable {
|
|
20
|
+
public let value: Any
|
|
21
|
+
|
|
22
|
+
public init<T>(_ value: T?) {
|
|
23
|
+
self.value = value ?? ()
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
extension AnyCodable: _AnyEncodable, _AnyDecodable {}
|
|
28
|
+
|
|
29
|
+
extension AnyCodable: Equatable {
|
|
30
|
+
public static func == (lhs: AnyCodable, rhs: AnyCodable) -> Bool {
|
|
31
|
+
switch (lhs.value, rhs.value) {
|
|
32
|
+
case is (Void, Void):
|
|
33
|
+
return true
|
|
34
|
+
case let (lhs as Bool, rhs as Bool):
|
|
35
|
+
return lhs == rhs
|
|
36
|
+
case let (lhs as Int, rhs as Int):
|
|
37
|
+
return lhs == rhs
|
|
38
|
+
case let (lhs as Int8, rhs as Int8):
|
|
39
|
+
return lhs == rhs
|
|
40
|
+
case let (lhs as Int16, rhs as Int16):
|
|
41
|
+
return lhs == rhs
|
|
42
|
+
case let (lhs as Int32, rhs as Int32):
|
|
43
|
+
return lhs == rhs
|
|
44
|
+
case let (lhs as Int64, rhs as Int64):
|
|
45
|
+
return lhs == rhs
|
|
46
|
+
case let (lhs as UInt, rhs as UInt):
|
|
47
|
+
return lhs == rhs
|
|
48
|
+
case let (lhs as UInt8, rhs as UInt8):
|
|
49
|
+
return lhs == rhs
|
|
50
|
+
case let (lhs as UInt16, rhs as UInt16):
|
|
51
|
+
return lhs == rhs
|
|
52
|
+
case let (lhs as UInt32, rhs as UInt32):
|
|
53
|
+
return lhs == rhs
|
|
54
|
+
case let (lhs as UInt64, rhs as UInt64):
|
|
55
|
+
return lhs == rhs
|
|
56
|
+
case let (lhs as Float, rhs as Float):
|
|
57
|
+
return lhs == rhs
|
|
58
|
+
case let (lhs as Double, rhs as Double):
|
|
59
|
+
return lhs == rhs
|
|
60
|
+
case let (lhs as String, rhs as String):
|
|
61
|
+
return lhs == rhs
|
|
62
|
+
case let (lhs as [String: AnyCodable], rhs as [String: AnyCodable]):
|
|
63
|
+
return lhs == rhs
|
|
64
|
+
case let (lhs as [AnyCodable], rhs as [AnyCodable]):
|
|
65
|
+
return lhs == rhs
|
|
66
|
+
case let (lhs as [String: Any], rhs as [String: Any]):
|
|
67
|
+
return NSDictionary(dictionary: lhs) == NSDictionary(dictionary: rhs)
|
|
68
|
+
case let (lhs as [Any], rhs as [Any]):
|
|
69
|
+
return NSArray(array: lhs) == NSArray(array: rhs)
|
|
70
|
+
case is (NSNull, NSNull):
|
|
71
|
+
return true
|
|
72
|
+
default:
|
|
73
|
+
return false
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
extension AnyCodable: CustomStringConvertible {
|
|
79
|
+
public var description: String {
|
|
80
|
+
switch value {
|
|
81
|
+
case is Void:
|
|
82
|
+
return String(describing: nil as Any?)
|
|
83
|
+
case let value as CustomStringConvertible:
|
|
84
|
+
return value.description
|
|
85
|
+
default:
|
|
86
|
+
return String(describing: value)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
extension AnyCodable: CustomDebugStringConvertible {
|
|
92
|
+
public var debugDescription: String {
|
|
93
|
+
switch value {
|
|
94
|
+
case let value as CustomDebugStringConvertible:
|
|
95
|
+
return "AnyCodable(\(value.debugDescription))"
|
|
96
|
+
default:
|
|
97
|
+
return "AnyCodable(\(description))"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
extension AnyCodable: ExpressibleByNilLiteral {}
|
|
103
|
+
extension AnyCodable: ExpressibleByBooleanLiteral {}
|
|
104
|
+
extension AnyCodable: ExpressibleByIntegerLiteral {}
|
|
105
|
+
extension AnyCodable: ExpressibleByFloatLiteral {}
|
|
106
|
+
extension AnyCodable: ExpressibleByStringLiteral {}
|
|
107
|
+
extension AnyCodable: ExpressibleByStringInterpolation {}
|
|
108
|
+
extension AnyCodable: ExpressibleByArrayLiteral {}
|
|
109
|
+
extension AnyCodable: ExpressibleByDictionaryLiteral {}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
extension AnyCodable: Hashable {
|
|
113
|
+
public func hash(into hasher: inout Hasher) {
|
|
114
|
+
switch value {
|
|
115
|
+
case let value as Bool:
|
|
116
|
+
hasher.combine(value)
|
|
117
|
+
case let value as Int:
|
|
118
|
+
hasher.combine(value)
|
|
119
|
+
case let value as Int8:
|
|
120
|
+
hasher.combine(value)
|
|
121
|
+
case let value as Int16:
|
|
122
|
+
hasher.combine(value)
|
|
123
|
+
case let value as Int32:
|
|
124
|
+
hasher.combine(value)
|
|
125
|
+
case let value as Int64:
|
|
126
|
+
hasher.combine(value)
|
|
127
|
+
case let value as UInt:
|
|
128
|
+
hasher.combine(value)
|
|
129
|
+
case let value as UInt8:
|
|
130
|
+
hasher.combine(value)
|
|
131
|
+
case let value as UInt16:
|
|
132
|
+
hasher.combine(value)
|
|
133
|
+
case let value as UInt32:
|
|
134
|
+
hasher.combine(value)
|
|
135
|
+
case let value as UInt64:
|
|
136
|
+
hasher.combine(value)
|
|
137
|
+
case let value as Float:
|
|
138
|
+
hasher.combine(value)
|
|
139
|
+
case let value as Double:
|
|
140
|
+
hasher.combine(value)
|
|
141
|
+
case let value as String:
|
|
142
|
+
hasher.combine(value)
|
|
143
|
+
case let value as [String: AnyCodable]:
|
|
144
|
+
hasher.combine(value)
|
|
145
|
+
case let value as [AnyCodable]:
|
|
146
|
+
hasher.combine(value)
|
|
147
|
+
default:
|
|
148
|
+
break
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|