Make review request from edit fragment

pull/2533/head
Alex Baker 8 months ago
parent 20c81417a0
commit c2a9d21f01

@ -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)
}

@ -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()
}

@ -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()) {

@ -7,7 +7,6 @@ typealias MainActivityEventBus = MutableSharedFlow<MainActivityEvent>
sealed interface MainActivityEvent {
data class OpenTask(val task: Task) : MainActivityEvent
object RequestRating : MainActivityEvent
object ClearTaskEditFragment : MainActivityEvent
}

@ -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
}

Loading…
Cancel
Save