From 20305bf36754c188932285e5e50d621df09afa10 Mon Sep 17 00:00:00 2001 From: liveHarshit Date: Fri, 28 Jun 2019 11:43:18 +0530 Subject: [PATCH] feat: Ask for rating on first order (#2002) --- .../general/order/OrderCompletedFragment.kt | 36 +++++++++++++++++++ app/src/main/res/layout/dialog_rate_us.xml | 33 +++++++++++++++++ app/src/main/res/values/strings.xml | 4 +++ 3 files changed, 73 insertions(+) create mode 100644 app/src/main/res/layout/dialog_rate_us.xml diff --git a/app/src/main/java/org/fossasia/openevent/general/order/OrderCompletedFragment.kt b/app/src/main/java/org/fossasia/openevent/general/order/OrderCompletedFragment.kt index 18878c25a1..fc35d44fa3 100644 --- a/app/src/main/java/org/fossasia/openevent/general/order/OrderCompletedFragment.kt +++ b/app/src/main/java/org/fossasia/openevent/general/order/OrderCompletedFragment.kt @@ -1,5 +1,7 @@ package org.fossasia.openevent.general.order +import android.content.ActivityNotFoundException +import androidx.appcompat.app.AlertDialog import android.content.Intent import android.os.Bundle import android.provider.CalendarContract @@ -17,6 +19,7 @@ import androidx.navigation.Navigation.findNavController import androidx.navigation.fragment.FragmentNavigatorExtras import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearLayoutManager +import kotlinx.android.synthetic.main.dialog_rate_us.view.rateEventyayButton import kotlinx.android.synthetic.main.fragment_order_completed.view.similarEventsRecycler import kotlinx.android.synthetic.main.fragment_order_completed.view.similarEventLayout import kotlinx.android.synthetic.main.fragment_order_completed.view.shimmerSimilarEvents @@ -29,6 +32,7 @@ import kotlinx.android.synthetic.main.fragment_order_completed.view.view import org.fossasia.openevent.general.R import org.fossasia.openevent.general.common.EventClickListener import org.fossasia.openevent.general.common.FavoriteFabClickListener +import org.fossasia.openevent.general.data.Preference import org.fossasia.openevent.general.event.EventUtils import org.fossasia.openevent.general.event.Event import org.fossasia.openevent.general.event.similarevent.SimilarEventsListAdapter @@ -37,6 +41,10 @@ import org.fossasia.openevent.general.utils.stripHtml import org.koin.androidx.viewmodel.ext.android.viewModel import org.fossasia.openevent.general.utils.Utils.setToolbar import org.jetbrains.anko.design.longSnackbar +import android.net.Uri +import org.fossasia.openevent.general.BuildConfig + +private const val DISPLAY_RATING_DIALOG = "displayRatingDialog" class OrderCompletedFragment : Fragment() { @@ -45,6 +53,7 @@ class OrderCompletedFragment : Fragment() { private val safeArgs: OrderCompletedFragmentArgs by navArgs() private val orderCompletedViewModel by viewModel() private val similarEventsAdapter = SimilarEventsListAdapter() + private val preferences = Preference() override fun onCreateView( inflater: LayoutInflater, @@ -60,6 +69,8 @@ class OrderCompletedFragment : Fragment() { rootView.similarEventsRecycler.layoutManager = similarLinearLayoutManager rootView.similarEventsRecycler.adapter = similarEventsAdapter + displayRateEventyayAlertDialog() + orderCompletedViewModel.loadEvent(safeArgs.eventId) orderCompletedViewModel.event .nonNull() @@ -109,6 +120,31 @@ class OrderCompletedFragment : Fragment() { return rootView } + private fun displayRateEventyayAlertDialog() { + if (!preferences.getBoolean(DISPLAY_RATING_DIALOG, true)) + return + val layout = layoutInflater.inflate(R.layout.dialog_rate_us, null) + val alertDialog = AlertDialog.Builder(requireContext()) + .setView(layout) + .setNeutralButton(getString(R.string.no_thanks)) { _, _ -> + preferences.putBoolean(DISPLAY_RATING_DIALOG, false) + }.setPositiveButton(getString(R.string.maybe_later)) { _, _ -> + preferences.putBoolean(DISPLAY_RATING_DIALOG, true) + }.show() + layout.rateEventyayButton.setOnClickListener { + alertDialog.dismiss() + val appPackageName = BuildConfig.APPLICATION_ID + preferences.putBoolean(DISPLAY_RATING_DIALOG, false) + try { + startActivity(Intent(Intent.ACTION_VIEW, + Uri.parse("market://details?id=$appPackageName"))) + } catch (e: ActivityNotFoundException) { + startActivity(Intent(Intent.ACTION_VIEW, + Uri.parse("https://play.google.com/store/apps/details?id=$appPackageName"))) + } + } + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val eventClickListener: EventClickListener = object : EventClickListener { diff --git a/app/src/main/res/layout/dialog_rate_us.xml b/app/src/main/res/layout/dialog_rate_us.xml new file mode 100644 index 0000000000..b0ebecd4cd --- /dev/null +++ b/app/src/main/res/layout/dialog_rate_us.xml @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4d0ecab234..4f6c360eba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -403,6 +403,10 @@ Sort By Category Sessions and speakers + Rate Eventyay + No thanks + Maybe later + If you enjoy using Eventyay, would you mind taking a moment to rate it? It won\'t take more than a minute. Thanks fot your support! Failed to load notifications