expo-store-review 6.0.0 → 6.2.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.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,18 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 6.2.0 — 2023-02-03
14
+
15
+ ### 💡 Others
16
+
17
+ - On Android bump `compileSdkVersion` and `targetSdkVersion` to `33`. ([#20721](https://github.com/expo/expo/pull/20721) by [@lukmccall](https://github.com/lukmccall))
18
+
19
+ ## 6.1.0 — 2022-12-30
20
+
21
+ ### 🎉 New features
22
+
23
+ - Migrated Android implementation to Expo Modules API. ([#19898](https://github.com/expo/expo/pull/19898) by [@alanhughes](https://github.com/alanjhughes))
24
+
13
25
  ## 6.0.0 — 2022-10-25
14
26
 
15
27
  ### 🛠 Breaking changes
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # API documentation
6
6
 
7
- - [Documentation for the main branch](https://github.com/expo/expo/blob/main/docs/pages/versions/unversioned/sdk/storereview.md)
7
+ - [Documentation for the main branch](https://github.com/expo/expo/blob/main/docs/pages/versions/unversioned/sdk/storereview.mdx)
8
8
  - [Documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/storereview/)
9
9
 
10
10
  # Installation in managed Expo projects
@@ -3,7 +3,7 @@ apply plugin: 'kotlin-android'
3
3
  apply plugin: 'maven-publish'
4
4
 
5
5
  group = 'host.exp.exponent'
6
- version = '6.0.0'
6
+ version = '6.2.0'
7
7
 
8
8
  buildscript {
9
9
  def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
@@ -59,7 +59,7 @@ afterEvaluate {
59
59
  }
60
60
 
61
61
  android {
62
- compileSdkVersion safeExtGet("compileSdkVersion", 31)
62
+ compileSdkVersion safeExtGet("compileSdkVersion", 33)
63
63
 
64
64
  compileOptions {
65
65
  sourceCompatibility JavaVersion.VERSION_11
@@ -72,9 +72,9 @@ android {
72
72
 
73
73
  defaultConfig {
74
74
  minSdkVersion safeExtGet("minSdkVersion", 21)
75
- targetSdkVersion safeExtGet("targetSdkVersion", 31)
75
+ targetSdkVersion safeExtGet("targetSdkVersion", 33)
76
76
  versionCode 4
77
- versionName "6.0.0"
77
+ versionName "6.2.0"
78
78
  }
79
79
  lintOptions {
80
80
  abortOnError false
@@ -84,6 +84,8 @@ android {
84
84
  dependencies {
85
85
  implementation project(':expo-modules-core')
86
86
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getKotlinVersion()}"
87
- api 'com.google.android.gms:play-services-base:17.3.0'
88
- api 'com.google.android.play:core:1.8.0'
87
+
88
+ implementation "com.google.android.play:review:2.0.1"
89
+ implementation "com.google.android.play:review-ktx:2.0.0"
90
+ api "com.google.android.gms:play-services-base:17.3.0"
89
91
  }
@@ -0,0 +1,12 @@
1
+ package expo.modules.storereview
2
+
3
+ import expo.modules.kotlin.exception.CodedException
4
+
5
+ internal class MissingCurrentActivityException :
6
+ CodedException("Activity which was provided during module initialization is no longer available")
7
+
8
+ internal class RMTaskException :
9
+ CodedException("Android ReviewManager task failed")
10
+
11
+ internal class RMUnsuccessfulTaskException :
12
+ CodedException("Android ReviewManager task was not successful")
@@ -6,65 +6,59 @@ import android.os.Build
6
6
  import com.google.android.gms.common.GooglePlayServicesUtil
7
7
  import com.google.android.play.core.review.ReviewManager
8
8
  import com.google.android.play.core.review.ReviewManagerFactory
9
- import expo.modules.core.ExportedModule
10
- import expo.modules.core.ModuleRegistry
11
- import expo.modules.core.Promise
12
- import expo.modules.core.interfaces.ActivityProvider
13
- import expo.modules.core.interfaces.ExpoMethod
9
+ import expo.modules.kotlin.Promise
10
+ import expo.modules.kotlin.exception.Exceptions
11
+ import expo.modules.kotlin.modules.Module
12
+ import expo.modules.kotlin.modules.ModuleDefinition
14
13
 
15
- class StoreReviewModule(private val mContext: Context) :
16
- ExportedModule(mContext) {
17
- companion object {
18
- private const val NAME = "ExpoStoreReview"
19
- }
14
+ class StoreReviewModule : Module() {
15
+ private val context: Context
16
+ get() = appContext.reactContext ?: throw Exceptions.ReactContextLost()
20
17
 
21
- private lateinit var mActivityProvider: ActivityProvider
18
+ private val currentActivity
19
+ get() = appContext.activityProvider?.currentActivity
20
+ ?: throw MissingCurrentActivityException()
22
21
 
23
- override fun getName(): String {
24
- return NAME
25
- }
22
+ override fun definition() = ModuleDefinition {
23
+ Name("ExpoStoreReview")
26
24
 
27
- override fun onCreate(moduleRegistry: ModuleRegistry) {
28
- mActivityProvider = moduleRegistry.getModule(ActivityProvider::class.java)
29
- }
25
+ AsyncFunction("isAvailableAsync") {
26
+ return@AsyncFunction Build.VERSION.SDK_INT >= 21 && isPlayStoreInstalled()
27
+ }
30
28
 
31
- @ExpoMethod
32
- fun isAvailableAsync(promise: Promise) {
33
- if (Build.VERSION.SDK_INT >= 21 && isPlayStoreInstalled()) {
34
- promise.resolve(true)
35
- } else {
36
- promise.resolve(false)
29
+ AsyncFunction("requestReview") { promise: Promise ->
30
+ requestReview(promise)
37
31
  }
38
32
  }
39
33
 
40
- @ExpoMethod
41
- fun requestReview(promise: Promise) {
42
- val manager: ReviewManager = ReviewManagerFactory.create(mContext)
34
+ private fun requestReview(promise: Promise) {
35
+ val manager: ReviewManager = ReviewManagerFactory.create(context)
43
36
  val request = manager.requestReviewFlow()
37
+
44
38
  request.addOnCompleteListener { task ->
45
39
  if (task.isSuccessful) {
46
40
  val reviewInfo = task.result
47
- val flow = manager.launchReviewFlow(mActivityProvider.currentActivity, reviewInfo)
48
- flow.addOnCompleteListener { task ->
49
- if (task.isSuccessful) {
50
- promise.resolve(null)
51
- } else {
52
- promise.reject("ERR_STORE_REVIEW_FAILED", "Android ReviewManager task failed")
41
+ reviewInfo?.let {
42
+ val flow = manager.launchReviewFlow(currentActivity, it)
43
+ flow.addOnCompleteListener { result ->
44
+ if (result.isSuccessful) {
45
+ promise.resolve(null)
46
+ } else {
47
+ promise.reject(RMTaskException())
48
+ }
53
49
  }
54
- }
50
+ } ?: promise.reject(RMTaskException())
55
51
  } else {
56
- promise.reject("ERR_STORE_REVIEW_FAILED", "Android ReviewManager task was not successful")
52
+ promise.reject(RMUnsuccessfulTaskException())
57
53
  }
58
54
  }
59
55
  }
60
56
 
61
- private fun isPlayStoreInstalled(): Boolean {
62
- return try {
63
- mContext.packageManager
64
- .getPackageInfo(GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0)
65
- true
66
- } catch (e: PackageManager.NameNotFoundException) {
67
- false
68
- }
57
+ private fun isPlayStoreInstalled(): Boolean = try {
58
+ context.packageManager
59
+ .getPackageInfo(GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0)
60
+ true
61
+ } catch (e: PackageManager.NameNotFoundException) {
62
+ false
69
63
  }
70
64
  }
@@ -3,5 +3,8 @@
3
3
  "platforms": ["ios", "android"],
4
4
  "ios": {
5
5
  "modules": ["StoreReviewModule"]
6
+ },
7
+ "android": {
8
+ "modules": ["expo.modules.storereview.StoreReviewModule"]
6
9
  }
7
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-store-review",
3
- "version": "6.0.0",
3
+ "version": "6.2.0",
4
4
  "description": "ExpoStoreReview standalone module",
5
5
  "main": "build/StoreReview.js",
6
6
  "types": "build/StoreReview.d.ts",
@@ -36,5 +36,5 @@
36
36
  "peerDependencies": {
37
37
  "expo": "*"
38
38
  },
39
- "gitHead": "eab2b09c735fb0fc2bf734a3f29a6593adba3838"
39
+ "gitHead": "1815e2eaad8c753588c7b1eb74420174a28e01f4"
40
40
  }
@@ -1,8 +0,0 @@
1
- package expo.modules.storereview
2
-
3
- import android.content.Context
4
- import expo.modules.core.BasePackage
5
-
6
- class StoreReviewPackage : BasePackage() {
7
- override fun createExportedModules(context: Context) = listOf(StoreReviewModule(context))
8
- }