From 57a9a0e2ba5f2e873ac1a40af192eabfb1231642 Mon Sep 17 00:00:00 2001 From: henrikth93 Date: Fri, 11 Oct 2024 11:30:13 +0200 Subject: [PATCH 1/8] Add action for "rate scribe" This commit will add an action for "rate scribe" --- .../java/be/scri/fragments/AboutFragment.kt | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/be/scri/fragments/AboutFragment.kt b/app/src/main/java/be/scri/fragments/AboutFragment.kt index 98a343c9..f6dcf43f 100644 --- a/app/src/main/java/be/scri/fragments/AboutFragment.kt +++ b/app/src/main/java/be/scri/fragments/AboutFragment.kt @@ -1,10 +1,13 @@ package be.scri.fragments +import android.content.Context +import android.net.Uri import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.activity.addCallback import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager @@ -104,15 +107,16 @@ class AboutFragment : Fragment() { ), ) - private fun getSecondRecyclerViewData(): List = - listOf( + private fun getSecondRecyclerViewData(): List { + val context = requireContext() + return listOf( ItemsViewModel( image = R.drawable.star, text = ItemsViewModel.Text(R.string.app_about_feedback_rate_scribe), image2 = R.drawable.external_link, url = null, activity = null, - action = null, + action = ::rateScribe, ), ItemsViewModel( image = R.drawable.bug_report_icon, @@ -147,6 +151,7 @@ class AboutFragment : Fragment() { action = null, ), ) + } private fun getThirdRecyclerViewData(): List = listOf( @@ -210,4 +215,37 @@ class AboutFragment : Fragment() { fragmentTransaction.addToBackStack(null) fragmentTransaction.commit() } + private fun getInstallSource(context: Context): String? { + return try { + val packageManager = context.packageManager + packageManager.getInstallerPackageName(context.packageName) + } catch (e: Exception) { + null + } + } + + private fun rateScribe() { + val context = requireContext() + var installSource = getInstallSource(context) + val url = null + //To be added later + /*var url = when (installSource) { + "com.android.vending" -> "https://play.google.com/store/apps/details?id=${context.packageName}" + "org.fdroid.fdroid" -> "https://f-droid.org/packages/${context.packageName}" + else -> null + } */ + + if (url != null) { + val intent = Intent(Intent.ACTION_VIEW).apply { + data = Uri.parse(url) + setPackage("com.android.chrome") + } + context.startActivity(intent) + } else { + Toast.makeText(context, "Unknown installation source", Toast.LENGTH_SHORT).show() + } + + + } + } From aab39dca3d5d8e4f09ab12cb9a98b610ae9528aa Mon Sep 17 00:00:00 2001 From: henrikth93 Date: Fri, 11 Oct 2024 11:37:19 +0200 Subject: [PATCH 2/8] Fix linting error Commented out the variable for installsource --- app/src/main/java/be/scri/fragments/AboutFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/be/scri/fragments/AboutFragment.kt b/app/src/main/java/be/scri/fragments/AboutFragment.kt index f6dcf43f..adfc28b0 100644 --- a/app/src/main/java/be/scri/fragments/AboutFragment.kt +++ b/app/src/main/java/be/scri/fragments/AboutFragment.kt @@ -226,7 +226,7 @@ class AboutFragment : Fragment() { private fun rateScribe() { val context = requireContext() - var installSource = getInstallSource(context) + // var installSource = getInstallSource(context) val url = null //To be added later /*var url = when (installSource) { From 34bb06a196d70deb41886dcdd2570131eaf456c5 Mon Sep 17 00:00:00 2001 From: henrikth93 Date: Fri, 11 Oct 2024 11:40:25 +0200 Subject: [PATCH 3/8] Comment out unused function Comment out unused function, which will later be used. --- app/src/main/java/be/scri/fragments/AboutFragment.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/be/scri/fragments/AboutFragment.kt b/app/src/main/java/be/scri/fragments/AboutFragment.kt index adfc28b0..155a8f98 100644 --- a/app/src/main/java/be/scri/fragments/AboutFragment.kt +++ b/app/src/main/java/be/scri/fragments/AboutFragment.kt @@ -215,14 +215,15 @@ class AboutFragment : Fragment() { fragmentTransaction.addToBackStack(null) fragmentTransaction.commit() } - private fun getInstallSource(context: Context): String? { + + /*private fun getInstallSource(context: Context): String? { return try { val packageManager = context.packageManager packageManager.getInstallerPackageName(context.packageName) } catch (e: Exception) { null } - } + }*/ private fun rateScribe() { val context = requireContext() From 3dbab3a58dd79c58da63bbcbf323b98e0b42df30 Mon Sep 17 00:00:00 2001 From: henrikth93 Date: Fri, 11 Oct 2024 11:43:06 +0200 Subject: [PATCH 4/8] Remove blank line Remove blank line --- app/src/main/java/be/scri/fragments/AboutFragment.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/java/be/scri/fragments/AboutFragment.kt b/app/src/main/java/be/scri/fragments/AboutFragment.kt index 155a8f98..74bbaa65 100644 --- a/app/src/main/java/be/scri/fragments/AboutFragment.kt +++ b/app/src/main/java/be/scri/fragments/AboutFragment.kt @@ -246,7 +246,5 @@ class AboutFragment : Fragment() { Toast.makeText(context, "Unknown installation source", Toast.LENGTH_SHORT).show() } - } - } From 94df7f1fab29bf3780f856b283f07f37953672cf Mon Sep 17 00:00:00 2001 From: henrikth93 Date: Fri, 11 Oct 2024 11:48:13 +0200 Subject: [PATCH 5/8] Fixing linting errors --- app/src/main/java/be/scri/fragments/AboutFragment.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/be/scri/fragments/AboutFragment.kt b/app/src/main/java/be/scri/fragments/AboutFragment.kt index 74bbaa65..fe3611af 100644 --- a/app/src/main/java/be/scri/fragments/AboutFragment.kt +++ b/app/src/main/java/be/scri/fragments/AboutFragment.kt @@ -1,6 +1,5 @@ package be.scri.fragments -import android.content.Context import android.net.Uri import android.content.Intent import android.os.Bundle @@ -227,9 +226,10 @@ class AboutFragment : Fragment() { private fun rateScribe() { val context = requireContext() - // var installSource = getInstallSource(context) + // var installSource = getInstallSource(context) val url = null - //To be added later + // To be added later + /*var url = when (installSource) { "com.android.vending" -> "https://play.google.com/store/apps/details?id=${context.packageName}" "org.fdroid.fdroid" -> "https://f-droid.org/packages/${context.packageName}" @@ -245,6 +245,5 @@ class AboutFragment : Fragment() { } else { Toast.makeText(context, "Unknown installation source", Toast.LENGTH_SHORT).show() } - } } From e9f381a0306e1199519cd601fb930849b83d0dfa Mon Sep 17 00:00:00 2001 From: henrikth93 Date: Fri, 11 Oct 2024 11:59:40 +0200 Subject: [PATCH 6/8] Fix linting errors Fixed multiline issue --- app/src/main/java/be/scri/fragments/AboutFragment.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/be/scri/fragments/AboutFragment.kt b/app/src/main/java/be/scri/fragments/AboutFragment.kt index fe3611af..e121f4b4 100644 --- a/app/src/main/java/be/scri/fragments/AboutFragment.kt +++ b/app/src/main/java/be/scri/fragments/AboutFragment.kt @@ -1,7 +1,7 @@ package be.scri.fragments -import android.net.Uri import android.content.Intent +import android.net.Uri import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -243,7 +243,11 @@ class AboutFragment : Fragment() { } context.startActivity(intent) } else { - Toast.makeText(context, "Unknown installation source", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "Unknown installation source", + Toast.LENGTH_SHORT + ).show() } } } From f8e6bf9204a36580519fbc7d796d5982b5b71b96 Mon Sep 17 00:00:00 2001 From: henrikth93 Date: Sat, 12 Oct 2024 15:12:28 +0200 Subject: [PATCH 7/8] Fixing linting errors Fixing linting errors --- .../java/be/scri/fragments/AboutFragment.kt | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/be/scri/fragments/AboutFragment.kt b/app/src/main/java/be/scri/fragments/AboutFragment.kt index e121f4b4..01db4fe4 100644 --- a/app/src/main/java/be/scri/fragments/AboutFragment.kt +++ b/app/src/main/java/be/scri/fragments/AboutFragment.kt @@ -1,5 +1,6 @@ package be.scri.fragments +import android.content.Context import android.content.Intent import android.net.Uri import android.os.Bundle @@ -215,39 +216,40 @@ class AboutFragment : Fragment() { fragmentTransaction.commit() } - /*private fun getInstallSource(context: Context): String? { - return try { + private fun getInstallSource(context: Context): String? = + try { val packageManager = context.packageManager packageManager.getInstallerPackageName(context.packageName) } catch (e: Exception) { null } - }*/ private fun rateScribe() { val context = requireContext() - // var installSource = getInstallSource(context) - val url = null - // To be added later + var installSource = getInstallSource(context) - /*var url = when (installSource) { - "com.android.vending" -> "https://play.google.com/store/apps/details?id=${context.packageName}" - "org.fdroid.fdroid" -> "https://f-droid.org/packages/${context.packageName}" - else -> null - } */ + var url = + when (installSource) { + "com.android.vending" -> "https://play.google.com/store/apps/details?id=${context.packageName}" + "org.fdroid.fdroid" -> "https://f-droid.org/packages/${context.packageName}" + else -> null + } if (url != null) { - val intent = Intent(Intent.ACTION_VIEW).apply { - data = Uri.parse(url) - setPackage("com.android.chrome") - } + val intent = + Intent(Intent.ACTION_VIEW) + .apply { + data = Uri.parse(url) + setPackage("com.android.chrome") + } context.startActivity(intent) } else { - Toast.makeText( - context, - "Unknown installation source", - Toast.LENGTH_SHORT - ).show() + Toast + .makeText( + context, + "Unknown installation source", + Toast.LENGTH_SHORT, + ).show() } } } From adbf6ae0b0d2dc578cde5c21f7895b07c54c8143 Mon Sep 17 00:00:00 2001 From: henrikth93 Date: Sat, 12 Oct 2024 17:42:09 +0200 Subject: [PATCH 8/8] Add functionality so that we access the review flow directly This commit will add functionality that enables us to access the google play store directly when rating the app --- app/build.gradle.kts | 1 + .../java/be/scri/fragments/AboutFragment.kt | 33 +++++++++++-------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0aa7c870..ad9b159a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -114,6 +114,7 @@ dependencies { implementation("androidx.recyclerview:recyclerview:1.3.2") implementation("androidx.cardview:cardview:1.0.0") implementation("androidx.viewpager2:viewpager2:1.1.0") + implementation("com.google.android.play:core:1.10.0") api("joda-time:joda-time:2.10.13") api("com.github.tibbi:RecyclerView-FastScroller:e7d3e150c4") diff --git a/app/src/main/java/be/scri/fragments/AboutFragment.kt b/app/src/main/java/be/scri/fragments/AboutFragment.kt index 01db4fe4..e4848685 100644 --- a/app/src/main/java/be/scri/fragments/AboutFragment.kt +++ b/app/src/main/java/be/scri/fragments/AboutFragment.kt @@ -17,6 +17,7 @@ import be.scri.activities.MainActivity import be.scri.databinding.FragmentAboutBinding import be.scri.helpers.CustomAdapter import be.scri.models.ItemsViewModel +import com.google.android.play.core.review.ReviewManagerFactory class AboutFragment : Fragment() { private lateinit var binding: FragmentAboutBinding @@ -228,28 +229,32 @@ class AboutFragment : Fragment() { val context = requireContext() var installSource = getInstallSource(context) - var url = - when (installSource) { - "com.android.vending" -> "https://play.google.com/store/apps/details?id=${context.packageName}" - "org.fdroid.fdroid" -> "https://f-droid.org/packages/${context.packageName}" - else -> null - } + if (installSource == "com.android.vending") { + val reviewManager = ReviewManagerFactory.create(context) + val request = reviewManager.requestReviewFlow() - if (url != null) { + request.addOnCompleteListener { task -> + if (task.isSuccessful) { + val reviewInfo = task.result + val activity = requireActivity() + reviewManager + .launchReviewFlow(activity, reviewInfo) + .addOnCompleteListener { _ -> + } + } else { + Toast.makeText(context, "Failed to launch review flow", Toast.LENGTH_SHORT).show() + } + } + } else if (installSource == "org.fdroid.fdroid") { + val url = "https://f-droid.org/packages/${context.packageName}" val intent = Intent(Intent.ACTION_VIEW) .apply { data = Uri.parse(url) - setPackage("com.android.chrome") } context.startActivity(intent) } else { - Toast - .makeText( - context, - "Unknown installation source", - Toast.LENGTH_SHORT, - ).show() + Toast.makeText(context, "Unknown installation source", Toast.LENGTH_SHORT).show() } } }