about summary refs log tree commit diff
path: root/modules/expo-bluesky-swiss-army/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'modules/expo-bluesky-swiss-army/android/src')
-rw-r--r--modules/expo-bluesky-swiss-army/android/src/main/AndroidManifest.xml2
-rw-r--r--modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/deviceprefs/ExpoBlueskyDevicePrefsModule.kt10
-rw-r--r--modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/referrer/ExpoBlueskyReferrerModule.kt54
3 files changed, 66 insertions, 0 deletions
diff --git a/modules/expo-bluesky-swiss-army/android/src/main/AndroidManifest.xml b/modules/expo-bluesky-swiss-army/android/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..bdae66c8f
--- /dev/null
+++ b/modules/expo-bluesky-swiss-army/android/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+<manifest>
+</manifest>
diff --git a/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/deviceprefs/ExpoBlueskyDevicePrefsModule.kt b/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/deviceprefs/ExpoBlueskyDevicePrefsModule.kt
new file mode 100644
index 000000000..29017f17a
--- /dev/null
+++ b/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/deviceprefs/ExpoBlueskyDevicePrefsModule.kt
@@ -0,0 +1,10 @@
+package expo.modules.blueskyswissarmy.deviceprefs
+
+import expo.modules.kotlin.modules.Module
+import expo.modules.kotlin.modules.ModuleDefinition
+
+class ExpoBlueskyDevicePrefsModule : Module() {
+  override fun definition() = ModuleDefinition {
+    Name("ExpoBlueskyDevicePrefs")
+  }
+}
diff --git a/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/referrer/ExpoBlueskyReferrerModule.kt b/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/referrer/ExpoBlueskyReferrerModule.kt
new file mode 100644
index 000000000..3589b364e
--- /dev/null
+++ b/modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/referrer/ExpoBlueskyReferrerModule.kt
@@ -0,0 +1,54 @@
+package expo.modules.blueskyswissarmy.referrer
+
+import android.util.Log
+import com.android.installreferrer.api.InstallReferrerClient
+import com.android.installreferrer.api.InstallReferrerStateListener
+import expo.modules.kotlin.modules.Module
+import expo.modules.kotlin.modules.ModuleDefinition
+import expo.modules.kotlin.Promise
+
+class ExpoBlueskyReferrerModule : Module() {
+  override fun definition() = ModuleDefinition {
+    Name("ExpoBlueskyReferrer")
+
+    AsyncFunction("getGooglePlayReferrerInfoAsync") { promise: Promise ->
+      val referrerClient = InstallReferrerClient.newBuilder(appContext.reactContext).build()
+      referrerClient.startConnection(object : InstallReferrerStateListener {
+        override fun onInstallReferrerSetupFinished(responseCode: Int) {
+          if (responseCode == InstallReferrerClient.InstallReferrerResponse.OK) {
+            Log.d("ExpoGooglePlayReferrer", "Successfully retrieved referrer info.")
+
+            val response = referrerClient.installReferrer
+            Log.d("ExpoGooglePlayReferrer", "Install referrer: ${response.installReferrer}")
+
+            promise.resolve(
+              mapOf(
+                "installReferrer" to response.installReferrer,
+                "clickTimestamp" to response.referrerClickTimestampSeconds,
+                "installTimestamp" to response.installBeginTimestampSeconds
+              )
+            )
+          } else {
+            Log.d("ExpoGooglePlayReferrer", "Failed to get referrer info. Unknown error.")
+            promise.reject(
+              "ERR_GOOGLE_PLAY_REFERRER_UNKNOWN",
+              "Failed to get referrer info",
+              Exception("Failed to get referrer info")
+            )
+          }
+          referrerClient.endConnection()
+        }
+
+        override fun onInstallReferrerServiceDisconnected() {
+          Log.d("ExpoGooglePlayReferrer", "Failed to get referrer info. Service disconnected.")
+          referrerClient.endConnection()
+          promise.reject(
+            "ERR_GOOGLE_PLAY_REFERRER_DISCONNECTED",
+            "Failed to get referrer info",
+            Exception("Failed to get referrer info")
+          )
+        }
+      })
+    }
+  }
+}
\ No newline at end of file