react-native-okhi 1.2.31 → 1.2.32-beta.2

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 (151) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +34 -4
  3. package/ReactNativeOkhi.podspec +21 -0
  4. package/android/build.gradle +38 -99
  5. package/android/gradle.properties +3 -3
  6. package/android/src/main/AndroidManifest.xml +1 -3
  7. package/android/src/main/java/com/okhi/OkhiModule.kt +336 -0
  8. package/android/src/main/java/com/okhi/OkhiPackage.kt +33 -0
  9. package/ios/OkHiWrapper.swift +348 -0
  10. package/ios/Okhi.h +5 -0
  11. package/ios/Okhi.mm +170 -0
  12. package/lib/commonjs/NativeOkhi.js +9 -0
  13. package/lib/commonjs/NativeOkhi.js.map +1 -0
  14. package/lib/commonjs/index.js +234 -28
  15. package/lib/commonjs/index.js.map +1 -1
  16. package/lib/commonjs/package.json +1 -0
  17. package/lib/commonjs/types.js.map +1 -0
  18. package/lib/module/NativeOkhi.js +5 -0
  19. package/lib/module/NativeOkhi.js.map +1 -0
  20. package/lib/module/index.js +221 -3
  21. package/lib/module/index.js.map +1 -1
  22. package/lib/module/package.json +1 -0
  23. package/lib/module/types.js +2 -0
  24. package/lib/module/types.js.map +1 -0
  25. package/lib/typescript/commonjs/package.json +1 -0
  26. package/lib/typescript/commonjs/src/NativeOkhi.d.ts +25 -0
  27. package/lib/typescript/commonjs/src/NativeOkhi.d.ts.map +1 -0
  28. package/lib/typescript/commonjs/src/index.d.ts +22 -0
  29. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  30. package/lib/typescript/commonjs/src/types.d.ts +81 -0
  31. package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
  32. package/lib/typescript/module/package.json +1 -0
  33. package/lib/typescript/module/src/NativeOkhi.d.ts +25 -0
  34. package/lib/typescript/module/src/NativeOkhi.d.ts.map +1 -0
  35. package/lib/typescript/module/src/index.d.ts +22 -0
  36. package/lib/typescript/module/src/index.d.ts.map +1 -0
  37. package/lib/typescript/module/src/types.d.ts +81 -0
  38. package/lib/typescript/module/src/types.d.ts.map +1 -0
  39. package/package.json +91 -112
  40. package/src/NativeOkhi.ts +68 -0
  41. package/src/index.tsx +271 -3
  42. package/src/types.ts +90 -0
  43. package/android/src/main/java/com/reactnativeokhi/OkhiModule.java +0 -389
  44. package/android/src/main/java/com/reactnativeokhi/OkhiPackage.java +0 -28
  45. package/ios/OkHiExtension.swift +0 -27
  46. package/ios/OkHiStruct.swift +0 -29
  47. package/ios/Okhi-Bridging-Header.h +0 -3
  48. package/ios/Okhi.m +0 -62
  49. package/ios/Okhi.swift +0 -325
  50. package/ios/Okhi.xcodeproj/project.pbxproj +0 -283
  51. package/lib/commonjs/OkCollect/Helpers.js +0 -40
  52. package/lib/commonjs/OkCollect/Helpers.js.map +0 -1
  53. package/lib/commonjs/OkCollect/OkHiLocationManager.js +0 -305
  54. package/lib/commonjs/OkCollect/OkHiLocationManager.js.map +0 -1
  55. package/lib/commonjs/OkCollect/Spinner.js +0 -27
  56. package/lib/commonjs/OkCollect/Spinner.js.map +0 -1
  57. package/lib/commonjs/OkCollect/Util.js +0 -226
  58. package/lib/commonjs/OkCollect/Util.js.map +0 -1
  59. package/lib/commonjs/OkCollect/app.json +0 -4
  60. package/lib/commonjs/OkCollect/index.js +0 -47
  61. package/lib/commonjs/OkCollect/index.js.map +0 -1
  62. package/lib/commonjs/OkCollect/types.js +0 -6
  63. package/lib/commonjs/OkCollect/types.js.map +0 -1
  64. package/lib/commonjs/OkCore/Helpers.js +0 -386
  65. package/lib/commonjs/OkCore/Helpers.js.map +0 -1
  66. package/lib/commonjs/OkCore/OkHiException.js +0 -96
  67. package/lib/commonjs/OkCore/OkHiException.js.map +0 -1
  68. package/lib/commonjs/OkCore/OkHiMode.js +0 -14
  69. package/lib/commonjs/OkCore/OkHiMode.js.map +0 -1
  70. package/lib/commonjs/OkCore/_helpers.js +0 -41
  71. package/lib/commonjs/OkCore/_helpers.js.map +0 -1
  72. package/lib/commonjs/OkCore/_types.js +0 -2
  73. package/lib/commonjs/OkCore/_types.js.map +0 -1
  74. package/lib/commonjs/OkCore/index.js +0 -119
  75. package/lib/commonjs/OkCore/index.js.map +0 -1
  76. package/lib/commonjs/OkCore/types.js +0 -6
  77. package/lib/commonjs/OkCore/types.js.map +0 -1
  78. package/lib/commonjs/OkHiNativeModule/index.js +0 -19
  79. package/lib/commonjs/OkHiNativeModule/index.js.map +0 -1
  80. package/lib/commonjs/OkVerify/index.js +0 -211
  81. package/lib/commonjs/OkVerify/index.js.map +0 -1
  82. package/lib/commonjs/OkVerify/types.js.map +0 -1
  83. package/lib/module/OkCollect/Helpers.js +0 -34
  84. package/lib/module/OkCollect/Helpers.js.map +0 -1
  85. package/lib/module/OkCollect/OkHiLocationManager.js +0 -298
  86. package/lib/module/OkCollect/OkHiLocationManager.js.map +0 -1
  87. package/lib/module/OkCollect/Spinner.js +0 -20
  88. package/lib/module/OkCollect/Spinner.js.map +0 -1
  89. package/lib/module/OkCollect/Util.js +0 -214
  90. package/lib/module/OkCollect/Util.js.map +0 -1
  91. package/lib/module/OkCollect/app.json +0 -4
  92. package/lib/module/OkCollect/index.js +0 -4
  93. package/lib/module/OkCollect/index.js.map +0 -1
  94. package/lib/module/OkCollect/types.js +0 -2
  95. package/lib/module/OkCollect/types.js.map +0 -1
  96. package/lib/module/OkCore/Helpers.js +0 -363
  97. package/lib/module/OkCore/Helpers.js.map +0 -1
  98. package/lib/module/OkCore/OkHiException.js +0 -89
  99. package/lib/module/OkCore/OkHiException.js.map +0 -1
  100. package/lib/module/OkCore/OkHiMode.js +0 -8
  101. package/lib/module/OkCore/OkHiMode.js.map +0 -1
  102. package/lib/module/OkCore/_helpers.js +0 -34
  103. package/lib/module/OkCore/_helpers.js.map +0 -1
  104. package/lib/module/OkCore/_types.js +0 -2
  105. package/lib/module/OkCore/_types.js.map +0 -1
  106. package/lib/module/OkCore/index.js +0 -65
  107. package/lib/module/OkCore/index.js.map +0 -1
  108. package/lib/module/OkCore/types.js +0 -2
  109. package/lib/module/OkCore/types.js.map +0 -1
  110. package/lib/module/OkHiNativeModule/index.js +0 -13
  111. package/lib/module/OkHiNativeModule/index.js.map +0 -1
  112. package/lib/module/OkVerify/index.js +0 -195
  113. package/lib/module/OkVerify/index.js.map +0 -1
  114. package/lib/module/OkVerify/types.js +0 -2
  115. package/lib/module/OkVerify/types.js.map +0 -1
  116. package/lib/typescript/OkCollect/Helpers.d.ts +0 -9
  117. package/lib/typescript/OkCollect/OkHiLocationManager.d.ts +0 -7
  118. package/lib/typescript/OkCollect/Spinner.d.ts +0 -5
  119. package/lib/typescript/OkCollect/Util.d.ts +0 -31
  120. package/lib/typescript/OkCollect/index.d.ts +0 -3
  121. package/lib/typescript/OkCollect/types.d.ts +0 -139
  122. package/lib/typescript/OkCore/Helpers.d.ts +0 -95
  123. package/lib/typescript/OkCore/OkHiException.d.ts +0 -81
  124. package/lib/typescript/OkCore/OkHiMode.d.ts +0 -7
  125. package/lib/typescript/OkCore/_helpers.d.ts +0 -3
  126. package/lib/typescript/OkCore/_types.d.ts +0 -38
  127. package/lib/typescript/OkCore/index.d.ts +0 -17
  128. package/lib/typescript/OkCore/types.d.ts +0 -203
  129. package/lib/typescript/OkHiNativeModule/index.d.ts +0 -48
  130. package/lib/typescript/OkVerify/index.d.ts +0 -65
  131. package/lib/typescript/OkVerify/types.d.ts +0 -0
  132. package/lib/typescript/index.d.ts +0 -3
  133. package/react-native-okhi.podspec +0 -35
  134. package/src/OkCollect/Helpers.ts +0 -53
  135. package/src/OkCollect/OkHiLocationManager.tsx +0 -391
  136. package/src/OkCollect/Spinner.tsx +0 -18
  137. package/src/OkCollect/Util.ts +0 -270
  138. package/src/OkCollect/app.json +0 -4
  139. package/src/OkCollect/index.ts +0 -3
  140. package/src/OkCollect/types.ts +0 -154
  141. package/src/OkCore/Helpers.ts +0 -477
  142. package/src/OkCore/OkHiException.ts +0 -93
  143. package/src/OkCore/OkHiMode.ts +0 -7
  144. package/src/OkCore/_helpers.ts +0 -47
  145. package/src/OkCore/_types.ts +0 -37
  146. package/src/OkCore/index.ts +0 -87
  147. package/src/OkCore/types.ts +0 -235
  148. package/src/OkHiNativeModule/index.ts +0 -92
  149. package/src/OkVerify/index.ts +0 -259
  150. package/src/OkVerify/types.ts +0 -0
  151. /package/lib/commonjs/{OkVerify/types.js → types.js} +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022 OkHi
3
+ Copyright (c) 2026 OkHi <kiano@okhi.co> (https://okhi.com)
4
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  of this software and associated documentation files (the "Software"), to deal
6
6
  in the Software without restriction, including without limitation the rights
package/README.md CHANGED
@@ -1,7 +1,37 @@
1
- # OkHi React Native
1
+ # react-native-okhi
2
2
 
3
- The official OkHi React Native library will enable you to start collecting and verifying your user's addresses.
3
+ The OkHi React Native library enables you to collect and verify addresses from your users
4
4
 
5
- [Documentation](https://docs.okhi.com/okhi-documentation/code-libraries/react-native-guide)
5
+ ## Installation
6
6
 
7
- [API reference](https://okhi.github.io/react-native-okhi/)
7
+
8
+ ```sh
9
+ npm install react-native-okhi
10
+ ```
11
+
12
+
13
+ ## Usage
14
+
15
+
16
+ ```js
17
+ import { multiply } from 'react-native-okhi';
18
+
19
+ // ...
20
+
21
+ const result = multiply(3, 7);
22
+ ```
23
+
24
+
25
+ ## Contributing
26
+
27
+ - [Development workflow](CONTRIBUTING.md#development-workflow)
28
+ - [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request)
29
+ - [Code of conduct](CODE_OF_CONDUCT.md)
30
+
31
+ ## License
32
+
33
+ MIT
34
+
35
+ ---
36
+
37
+ Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
@@ -0,0 +1,21 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "ReactNativeOkHi"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = package["homepage"]
10
+ s.license = package["license"]
11
+ s.authors = package["author"]
12
+
13
+ s.platforms = { :ios => min_ios_version_supported }
14
+ s.source = { :git => "https://github.com/OkHi/react-native-okhi.git", :tag => "#{s.version}" }
15
+
16
+ s.source_files = "ios/**/*.{h,m,mm,swift,cpp}"
17
+ s.private_header_files = "ios/**/*.h"
18
+
19
+ s.dependency "OkHi", "~> 1.10.5"
20
+ install_modules_dependencies(s)
21
+ end
@@ -1,41 +1,44 @@
1
1
  buildscript {
2
+ ext.getExtOrDefault = {name ->
3
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['Okhi_' + name]
4
+ }
5
+
2
6
  repositories {
3
- google()
4
- mavenCentral()
5
- maven { url "https://repo.okhi.io/artifactory/maven" }
7
+ google()
8
+ mavenCentral()
6
9
  }
7
10
 
8
11
  dependencies {
9
- classpath 'com.android.tools.build:gradle:7.2.2'
12
+ classpath "com.android.tools.build:gradle:8.7.2"
13
+ // noinspection DifferentKotlinGradleVersion
14
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
10
15
  }
11
16
  }
12
17
 
13
- def isNewArchitectureEnabled() {
14
- return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
15
- }
16
-
17
- apply plugin: 'com.android.library'
18
18
 
19
- if (isNewArchitectureEnabled()) {
20
- apply plugin: 'com.facebook.react'
21
- }
19
+ apply plugin: "com.android.library"
20
+ apply plugin: "kotlin-android"
22
21
 
23
- def getExtOrDefault(name) {
24
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['Okhi_' + name]
25
- }
22
+ apply plugin: "com.facebook.react"
26
23
 
27
24
  def getExtOrIntegerDefault(name) {
28
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['Okhi_' + name]).toInteger()
25
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["Okhi_" + name]).toInteger()
29
26
  }
30
27
 
31
28
  android {
32
- compileSdkVersion getExtOrIntegerDefault('compileSdkVersion')
29
+ namespace "com.okhi"
30
+
31
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
33
32
 
34
33
  defaultConfig {
35
- minSdkVersion getExtOrIntegerDefault('minSdkVersion')
36
- targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
37
- buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
34
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
35
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
36
+ }
37
+
38
+ buildFeatures {
39
+ buildConfig true
38
40
  }
41
+
39
42
  buildTypes {
40
43
  release {
41
44
  minifyEnabled false
@@ -43,98 +46,34 @@ android {
43
46
  }
44
47
 
45
48
  lintOptions {
46
- disable 'GradleCompatible'
49
+ disable "GradleCompatible"
47
50
  }
48
51
 
49
52
  compileOptions {
50
53
  sourceCompatibility JavaVersion.VERSION_1_8
51
54
  targetCompatibility JavaVersion.VERSION_1_8
52
55
  }
56
+
57
+ sourceSets {
58
+ main {
59
+ java.srcDirs += [
60
+ "generated/java",
61
+ "generated/jni"
62
+ ]
63
+ }
64
+ }
53
65
  }
54
66
 
55
67
  repositories {
56
68
  mavenCentral()
57
69
  google()
58
-
59
- def found = false
60
- def defaultDir = null
61
- def androidSourcesName = 'React Native sources'
62
-
63
- if (rootProject.ext.has('reactNativeAndroidRoot')) {
64
- defaultDir = rootProject.ext.get('reactNativeAndroidRoot')
65
- } else {
66
- defaultDir = new File(
67
- projectDir,
68
- '/../../../node_modules/react-native/android'
69
- )
70
- }
71
-
72
- if (defaultDir.exists()) {
73
- maven {
74
- url defaultDir.toString()
75
- name androidSourcesName
76
- }
77
-
78
- logger.info(":${project.name}:reactNativeAndroidRoot ${defaultDir.canonicalPath}")
79
- found = true
80
- } else {
81
- def parentDir = rootProject.projectDir
82
-
83
- 1.upto(5, {
84
- if (found) return true
85
- parentDir = parentDir.parentFile
86
-
87
- def androidSourcesDir = new File(
88
- parentDir,
89
- 'node_modules/react-native'
90
- )
91
-
92
- def androidPrebuiltBinaryDir = new File(
93
- parentDir,
94
- 'node_modules/react-native/android'
95
- )
96
-
97
- if (androidPrebuiltBinaryDir.exists()) {
98
- maven {
99
- url androidPrebuiltBinaryDir.toString()
100
- name androidSourcesName
101
- }
102
-
103
- logger.info(":${project.name}:reactNativeAndroidRoot ${androidPrebuiltBinaryDir.canonicalPath}")
104
- found = true
105
- } else if (androidSourcesDir.exists()) {
106
- maven {
107
- url androidSourcesDir.toString()
108
- name androidSourcesName
109
- }
110
-
111
- logger.info(":${project.name}:reactNativeAndroidRoot ${androidSourcesDir.canonicalPath}")
112
- found = true
113
- }
114
- })
115
- }
116
-
117
- if (!found) {
118
- throw new GradleException(
119
- "${project.name}: unable to locate React Native android sources. " +
120
- "Ensure you have you installed React Native as a dependency in your project and try again."
121
- )
122
- }
70
+ maven { url "https://repo.okhi.io/artifactory/maven" }
123
71
  }
124
72
 
73
+ def kotlin_version = getExtOrDefault("kotlinVersion")
125
74
 
126
75
  dependencies {
127
- //noinspection GradleDynamicVersion
128
- implementation "com.facebook.react:react-native:+"
129
- implementation 'io.okhi.android:core:1.7.40'
130
- implementation 'io.okhi.android:okverify:1.9.82'
131
- // From node_modules
132
- }
133
-
134
- if (isNewArchitectureEnabled()) {
135
- react {
136
- jsRootDir = file("../src/")
137
- libraryName = "Okhi"
138
- codegenJavaPackageName = "com.reactnativeokhi"
139
- }
76
+ implementation 'io.okhi.android:okhi:1.0.0'
77
+ implementation "com.facebook.react:react-android"
78
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
140
79
  }
@@ -1,5 +1,5 @@
1
- Okhi_kotlinVersion=1.7.0
1
+ Okhi_kotlinVersion=2.0.21
2
2
  Okhi_minSdkVersion=21
3
- Okhi_targetSdkVersion=35
3
+ Okhi_targetSdkVersion=34
4
4
  Okhi_compileSdkVersion=35
5
- Okhi_ndkversion=21.4.7075529
5
+ Okhi_ndkVersion=27.1.12297006
@@ -1,4 +1,2 @@
1
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
- package="com.reactnativeokhi">
3
-
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
4
2
  </manifest>
@@ -0,0 +1,336 @@
1
+ package com.okhi
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.Callback
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.bridge.ReadableMap
7
+ import com.facebook.react.module.annotations.ReactModule
8
+ import io.okhi.android.OkHi
9
+ import io.okhi.android.collect.OkCollect
10
+ import io.okhi.android.collect.OkCollectConfig
11
+ import io.okhi.android.collect.OkCollectStyle
12
+ import io.okhi.android.collect.models.OkHiSuccessResponse
13
+ import io.okhi.android.core.interfaces.OkHiAddressVerificationCallback
14
+ import io.okhi.android.core.model.OkHiAuth
15
+ import io.okhi.android.core.model.OkHiException
16
+ import io.okhi.android.core.model.OkHiLocation
17
+ import io.okhi.android.core.model.OkHiUser
18
+
19
+ @ReactModule(name = OkhiModule.NAME)
20
+ class OkhiModule(reactContext: ReactApplicationContext) : NativeOkhiSpec(reactContext) {
21
+ var currentCallback: Callback? = null
22
+
23
+ val okhiAddressVerificationCallback = object : OkHiAddressVerificationCallback() {
24
+ override fun onClose() {
25
+ val error = Arguments.createMap().apply {
26
+ putString("code", "user_closed")
27
+ putString("message", "user closed address creation")
28
+ }
29
+ currentCallback?.invoke(null, error)
30
+ }
31
+
32
+ override fun onError(e: OkHiException) {
33
+ val error = Arguments.createMap().apply {
34
+ putString("code", e.code)
35
+ putString("message", e.message)
36
+ }
37
+ currentCallback?.invoke(null, error)
38
+ }
39
+
40
+ override fun onSuccess(response: OkHiSuccessResponse) {
41
+ val response = Arguments.createMap().apply {
42
+ putString("user", response.user.toJSON().toString())
43
+ putString("location", response.location.toJSON().toString())
44
+ }
45
+ currentCallback?.invoke(response, null)
46
+ }
47
+ }
48
+
49
+ override fun getName(): String {
50
+ return NAME
51
+ }
52
+
53
+ override fun multiply(a: Double, b: Double): Double {
54
+ return a * b
55
+ }
56
+
57
+ override fun login(credentials: ReadableMap?, callback: Callback?) {
58
+ if (credentials == null) {
59
+ callback?.invoke(null)
60
+ return
61
+ }
62
+
63
+ val authMap = credentials.getMap("auth")
64
+ val userMap = credentials.getMap("user")
65
+
66
+ if (authMap == null || userMap == null) {
67
+ callback?.invoke(null)
68
+ return
69
+ }
70
+
71
+ val branchId = authMap.getString("branchId") ?: ""
72
+ val clientKey = authMap.getString("clientKey") ?: ""
73
+ val env = authMap.getString("env") ?: "prod"
74
+
75
+ val phone = userMap.getString("phone") ?: ""
76
+ val firstName = userMap.getString("firstName") ?: ""
77
+ val lastName = userMap.getString("lastName") ?: ""
78
+ val email = userMap.getString("email") ?: ""
79
+ val appUserId = if (userMap.hasKey("appUserId")) userMap.getString("appUserId") else null
80
+
81
+ val auth = OkHiAuth(
82
+ branchId = branchId,
83
+ clientKey = clientKey,
84
+ env = env
85
+ )
86
+
87
+ val user = OkHiUser(
88
+ firstName = firstName,
89
+ lastName = lastName,
90
+ phone = phone,
91
+ email = email,
92
+ appUserId = appUserId
93
+ )
94
+
95
+ OkHi.login(reactApplicationContext.applicationContext, auth, user) { results ->
96
+ if (results != null) {
97
+ val writableArray = Arguments.createArray()
98
+ for (result in results) {
99
+ writableArray.pushString(result)
100
+ }
101
+ callback?.invoke(writableArray)
102
+ } else {
103
+ callback?.invoke(null)
104
+ }
105
+ }
106
+ }
107
+
108
+ override fun startDigitalAddressVerification(okcollect: ReadableMap?, callback: Callback?) {
109
+ currentCallback = callback
110
+ val activity = reactApplicationContext.currentActivity
111
+ if (activity == null) {
112
+ val error = Arguments.createMap().apply {
113
+ putString("code", "unknown")
114
+ putString("message", "unable to get current activity")
115
+ }
116
+ callback?.invoke(null, error)
117
+ } else {
118
+ OkHi.startDigitalAddressVerification(
119
+ activity = activity,
120
+ collect = parseOkCollect(okcollect),
121
+ callback = okhiAddressVerificationCallback
122
+ )
123
+ }
124
+ }
125
+
126
+ override fun startPhysicalAddressVerification(okcollect: ReadableMap?, callback: Callback?) {
127
+ currentCallback = callback
128
+ val activity = reactApplicationContext.currentActivity
129
+ if (activity == null) {
130
+ val error = Arguments.createMap().apply {
131
+ putString("code", "unknown")
132
+ putString("message", "unable to get current activity")
133
+ }
134
+ callback?.invoke(null, error)
135
+ } else {
136
+ OkHi.startPhysicalAddressVerification(
137
+ activity = activity,
138
+ collect = parseOkCollect(okcollect),
139
+ callback = okhiAddressVerificationCallback
140
+ )
141
+ }
142
+ }
143
+
144
+ override fun startDigitalAndPhysicalAddressVerification(okcollect: ReadableMap?, callback: Callback?) {
145
+ currentCallback = callback
146
+ val activity = reactApplicationContext.currentActivity
147
+ if (activity == null) {
148
+ val error = Arguments.createMap().apply {
149
+ putString("code", "unknown")
150
+ putString("message", "unable to get current activity")
151
+ }
152
+ callback?.invoke(null, error)
153
+ } else {
154
+ OkHi.startDigitalAndPhysicalAddressVerification(
155
+ activity = activity,
156
+ collect = parseOkCollect(okcollect),
157
+ callback = okhiAddressVerificationCallback
158
+ )
159
+ }
160
+ }
161
+
162
+ override fun createAddress(okcollect: ReadableMap?, callback: Callback?) {
163
+ currentCallback = callback
164
+ val activity = reactApplicationContext.currentActivity
165
+ if (activity == null) {
166
+ val error = Arguments.createMap().apply {
167
+ putString("code", "unknown")
168
+ putString("message", "unable to get current activity")
169
+ }
170
+ callback?.invoke(null, error)
171
+ } else {
172
+ OkHi.createAddress(
173
+ activity = activity,
174
+ collect = parseOkCollect(okcollect),
175
+ callback = okhiAddressVerificationCallback
176
+ )
177
+ }
178
+ }
179
+
180
+ private fun parseOkCollect(okcollect: ReadableMap?): OkCollect {
181
+ var nativeOkCollect: OkCollect? = null
182
+ if (okcollect == null) {
183
+ nativeOkCollect = OkCollect()
184
+ } else {
185
+ val styleMap = okcollect.getMap("style")
186
+ val color = styleMap?.getString("color") ?: "#005D67"
187
+ val logo = styleMap?.getString("color") ?: "https://cdn.okhi.co/icon.png"
188
+
189
+ val configurationMap = okcollect.getMap("configuration")
190
+ val streetView = configurationMap?.getBoolean("streetView") ?: true
191
+ val withHomeAddressType = configurationMap?.getBoolean("withHomeAddressType") ?: true
192
+ val withWorkAddressType = configurationMap?.getBoolean("withWorkAddressType") ?: false
193
+ val withAppBar = configurationMap?.getBoolean("withAppBar") ?: true
194
+
195
+ val locationId = if (okcollect.hasKey("locationId")) okcollect.getString("locationId") else null
196
+
197
+ val style = OkCollectStyle(
198
+ color = color,
199
+ name = name,
200
+ logo = logo
201
+ )
202
+
203
+ val config = OkCollectConfig(
204
+ streetView = streetView,
205
+ withHomeAddressType = withHomeAddressType,
206
+ withWorkAddressType = withWorkAddressType,
207
+ withAppBar = withAppBar
208
+ )
209
+
210
+ var nativeLocation: OkHiLocation? = null
211
+ if (locationId != null) {
212
+ nativeLocation = OkHiLocation(locationId)
213
+ }
214
+
215
+ nativeOkCollect = OkCollect(
216
+ style,
217
+ config,
218
+ nativeLocation
219
+ )
220
+ }
221
+
222
+ return nativeOkCollect
223
+ }
224
+
225
+ // Helper Methods
226
+
227
+ override fun isLocationServicesEnabled(callback: Callback?) {
228
+ val result = OkHi.isLocationServicesEnabled(reactApplicationContext.applicationContext)
229
+ callback?.invoke(result, null)
230
+ }
231
+
232
+ override fun canOpenProtectedApps(callback: Callback?) {
233
+ val result = OkHi.canOpenProtectedApps(reactApplicationContext.applicationContext)
234
+ callback?.invoke(result, null)
235
+ }
236
+
237
+ override fun getLocationAccuracyLevel(callback: Callback?) {
238
+ val result = OkHi.getLocationAccuracyLevel(reactApplicationContext.applicationContext)
239
+ callback?.invoke(result.toString(), null)
240
+ }
241
+
242
+ override fun isBackgroundLocationPermissionGranted(callback: Callback?) {
243
+ val result = OkHi.isBackgroundLocationPermissionGranted(reactApplicationContext.applicationContext)
244
+ callback?.invoke(result, null)
245
+ }
246
+
247
+ override fun isCoarseLocationPermissionGranted(callback: Callback?) {
248
+ val result = OkHi.isCoarseLocationPermissionGranted(reactApplicationContext.applicationContext)
249
+ callback?.invoke(result, null)
250
+ }
251
+
252
+ override fun isFineLocationPermissionGranted(callback: Callback?) {
253
+ val result = OkHi.isFineLocationPermissionGranted(reactApplicationContext.applicationContext)
254
+ callback?.invoke(result, null)
255
+ }
256
+
257
+ override fun isPlayServicesAvailable(callback: Callback?) {
258
+ val result = OkHi.isPlayServicesAvailable(reactApplicationContext.applicationContext)
259
+ callback?.invoke(result, null)
260
+ }
261
+
262
+ override fun isPostNotificationPermissionGranted(callback: Callback?) {
263
+ val result = OkHi.isPostNotificationPermissionGranted(reactApplicationContext.applicationContext)
264
+ callback?.invoke(result, null)
265
+ }
266
+
267
+ override fun openProtectedApps() {
268
+ OkHi.openProtectedApps(reactApplicationContext.applicationContext)
269
+ }
270
+
271
+ // Request Helpers
272
+
273
+ override fun requestLocationPermission(callback: Callback?) {
274
+ val activity = reactApplicationContext.currentActivity
275
+ if (activity == null) {
276
+ val error = Arguments.createMap().apply {
277
+ putString("code", "unknown")
278
+ putString("message", "unable to get current activity")
279
+ }
280
+ callback?.invoke(null, error)
281
+ } else {
282
+ OkHi.requestLocationPermission(activity) { result ->
283
+ callback?.invoke(result, null)
284
+ }
285
+ }
286
+ }
287
+
288
+ override fun requestBackgroundLocationPermission(callback: Callback?) {
289
+ val activity = reactApplicationContext.currentActivity
290
+ if (activity == null) {
291
+ val error = Arguments.createMap().apply {
292
+ putString("code", "unknown")
293
+ putString("message", "unable to get current activity")
294
+ }
295
+ callback?.invoke(null, error)
296
+ } else {
297
+ OkHi.requestBackgroundLocationPermission(activity) { result ->
298
+ callback?.invoke(result, null)
299
+ }
300
+ }
301
+ }
302
+
303
+ override fun requestEnableLocationServices(callback: Callback?) {
304
+ val activity = reactApplicationContext.currentActivity
305
+ if (activity == null) {
306
+ val error = Arguments.createMap().apply {
307
+ putString("code", "unknown")
308
+ putString("message", "unable to get current activity")
309
+ }
310
+ callback?.invoke(null, error)
311
+ } else {
312
+ OkHi.requestEnableLocationServices(activity) { result ->
313
+ callback?.invoke(result, null)
314
+ }
315
+ }
316
+ }
317
+
318
+ override fun requestPostNotificationPermissions(callback: Callback?) {
319
+ val activity = reactApplicationContext.currentActivity
320
+ if (activity == null) {
321
+ val error = Arguments.createMap().apply {
322
+ putString("code", "unknown")
323
+ putString("message", "unable to get current activity")
324
+ }
325
+ callback?.invoke(null, error)
326
+ } else {
327
+ OkHi.requestPostNotificationPermissions(activity) { result ->
328
+ callback?.invoke(result, null)
329
+ }
330
+ }
331
+ }
332
+
333
+ companion object {
334
+ const val NAME = "Okhi"
335
+ }
336
+ }
@@ -0,0 +1,33 @@
1
+ package com.okhi
2
+
3
+ import com.facebook.react.BaseReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.module.model.ReactModuleInfo
7
+ import com.facebook.react.module.model.ReactModuleInfoProvider
8
+ import java.util.HashMap
9
+
10
+ class OkhiPackage : BaseReactPackage() {
11
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
12
+ return if (name == OkhiModule.NAME) {
13
+ OkhiModule(reactContext)
14
+ } else {
15
+ null
16
+ }
17
+ }
18
+
19
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
20
+ return ReactModuleInfoProvider {
21
+ val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
22
+ moduleInfos[OkhiModule.NAME] = ReactModuleInfo(
23
+ OkhiModule.NAME,
24
+ OkhiModule.NAME,
25
+ false, // canOverrideExistingModule
26
+ false, // needsEagerInit
27
+ false, // isCxxModule
28
+ true // isTurboModule
29
+ )
30
+ moduleInfos
31
+ }
32
+ }
33
+ }