diff --git a/app/src/googleplay/java/org/tasks/play/PlayServices.kt b/app/src/googleplay/java/org/tasks/play/PlayServices.kt index b18a6c124..4d8f4358e 100644 --- a/app/src/googleplay/java/org/tasks/play/PlayServices.kt +++ b/app/src/googleplay/java/org/tasks/play/PlayServices.kt @@ -1,7 +1,8 @@ package org.tasks.play -import android.app.Activity import android.content.Context +import androidx.activity.ComponentActivity +import androidx.lifecycle.lifecycleScope import com.google.android.gms.common.ConnectionResult import com.google.android.gms.common.GoogleApiAvailability.getInstance import com.google.android.play.core.ktx.launchReview @@ -9,6 +10,7 @@ import com.google.android.play.core.ktx.requestReview import com.google.android.play.core.review.ReviewManagerFactory import com.todoroo.andlib.utility.DateUtilities.now import dagger.hilt.android.qualifiers.ApplicationContext +import kotlinx.coroutines.launch import org.tasks.R import org.tasks.analytics.Firebase import org.tasks.preferences.Preferences @@ -22,17 +24,17 @@ class PlayServices @Inject constructor( fun isAvailable() = getInstance().isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS - suspend fun requestReview(activity: Activity) { + fun requestReview(activity: ComponentActivity) = activity.lifecycleScope.launch { if (firebase.reviewCooldown) { - return + return@launch } try { with(ReviewManagerFactory.create(context)) { val request = requestReview() launchReview(activity, request) - preferences.lastReviewRequest = now() - firebase.logEvent(R.string.event_request_review) } + preferences.lastReviewRequest = now() + firebase.logEvent(R.string.event_request_review) } catch (e: Exception) { firebase.reportException(e) } diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt index b44889ddd..7cdaa9666 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt @@ -45,7 +45,6 @@ import org.tasks.extensions.Context.nightMode import org.tasks.filters.PlaceFilter import org.tasks.intents.TaskIntents.getTaskListIntent import org.tasks.location.LocationPickerActivity -import org.tasks.play.PlayServices import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.Preferences import org.tasks.themes.ColorProvider @@ -73,7 +72,6 @@ class MainActivity : AppCompatActivity(), TaskListFragmentCallbackHandler, Timer @Inject lateinit var tagDataDao: TagDataDao @Inject lateinit var alarmDao: AlarmDao @Inject lateinit var eventBus: MainActivityEventBus - @Inject lateinit var playServices: PlayServices @Inject lateinit var firebase: Firebase private var currentNightMode = 0 @@ -105,8 +103,6 @@ class MainActivity : AppCompatActivity(), TaskListFragmentCallbackHandler, Timer private suspend fun process(event: MainActivityEvent) = when (event) { is MainActivityEvent.OpenTask -> onTaskListItemClicked(event.task) - is MainActivityEvent.RequestRating -> - playServices.requestReview(this) is MainActivityEvent.ClearTaskEditFragment -> removeTaskEditFragment() } diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt index 2aebb68ab..9bcad7bc9 100755 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt @@ -101,6 +101,7 @@ import org.tasks.fragments.TaskEditControlSetFragmentManager.Companion.TAG_LIST import org.tasks.fragments.TaskEditControlSetFragmentManager.Companion.TAG_PRIORITY import org.tasks.markdown.MarkdownProvider import org.tasks.notifications.NotificationManager +import org.tasks.play.PlayServices import org.tasks.preferences.Preferences import org.tasks.ui.CalendarControlSet import org.tasks.ui.ChipProvider @@ -131,6 +132,7 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener { @Inject lateinit var taskEditEventBus: TaskEditEventBus @Inject lateinit var locale: Locale @Inject lateinit var chipProvider: ChipProvider + @Inject lateinit var playServices: PlayServices val editViewModel: TaskEditViewModel by viewModels() lateinit var binding: FragmentTaskEditBinding @@ -394,7 +396,10 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener { return model } - suspend fun save(remove: Boolean = true) = editViewModel.save(remove) + suspend fun save(remove: Boolean = true) { + editViewModel.save(remove) + activity?.let { playServices.requestReview(it) } + } private fun discardButtonClick() { if (editViewModel.hasChanges()) { diff --git a/app/src/main/java/org/tasks/ui/MainActivityEvent.kt b/app/src/main/java/org/tasks/ui/MainActivityEvent.kt index 7f86c11e6..13532746d 100644 --- a/app/src/main/java/org/tasks/ui/MainActivityEvent.kt +++ b/app/src/main/java/org/tasks/ui/MainActivityEvent.kt @@ -7,7 +7,6 @@ typealias MainActivityEventBus = MutableSharedFlow sealed interface MainActivityEvent { data class OpenTask(val task: Task) : MainActivityEvent - object RequestRating : MainActivityEvent object ClearTaskEditFragment : MainActivityEvent } diff --git a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt index fc716cdba..8d1ade3cd 100644 --- a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt @@ -392,7 +392,6 @@ class TaskEditViewModel @Inject constructor( model.calendarURI?.takeIf { it.isNotBlank() }?.let { taskListEvents.emit(TaskListEvent.CalendarEventCreated(model.title, it)) } - mainActivityEvents.emit(MainActivityEvent.RequestRating) } true }