Skip to content

feat: Ask for rating on first order #2017

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 28, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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() {

Expand All @@ -45,6 +53,7 @@ class OrderCompletedFragment : Fragment() {
private val safeArgs: OrderCompletedFragmentArgs by navArgs()
private val orderCompletedViewModel by viewModel<OrderCompletedViewModel>()
private val similarEventsAdapter = SimilarEventsListAdapter()
private val preferences = Preference()

override fun onCreateView(
inflater: LayoutInflater,
Expand All @@ -60,6 +69,8 @@ class OrderCompletedFragment : Fragment() {
rootView.similarEventsRecycler.layoutManager = similarLinearLayoutManager
rootView.similarEventsRecycler.adapter = similarEventsAdapter

displayRateEventyayAlertDialog()

orderCompletedViewModel.loadEvent(safeArgs.eventId)
orderCompletedViewModel.event
.nonNull()
Expand Down Expand Up @@ -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 {
Expand Down
33 changes: 33 additions & 0 deletions app/src/main/res/layout/dialog_rate_us.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/rate_eventyay"
android:textSize="@dimen/text_size_extra_large"
android:textColor="@android:color/black"
android:layout_marginTop="@dimen/layout_margin_large"/>

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/rate_eventyay_dialog_message"
android:layout_margin="@dimen/layout_margin_medium"
android:textColor="@android:color/black"
android:textSize="@dimen/text_size_large"/>

<com.google.android.material.button.MaterialButton
android:id="@+id/rateEventyayButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_margin_medium"
android:layout_marginStart="@dimen/layout_margin_large"
android:layout_marginEnd="@dimen/layout_margin_large"
android:text="@string/rate_eventyay"
android:textAllCaps="false"/>

</LinearLayout>
4 changes: 4 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,10 @@
<string name="sort_by">Sort By</string>
<string name="category">Category</string>
<string name="sessions_and_speakers">Sessions and speakers</string>
<string name="rate_eventyay">Rate Eventyay</string>
<string name="no_thanks">No thanks</string>
<string name="maybe_later">Maybe later</string>
<string name="rate_eventyay_dialog_message">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!</string>

<!--Notification fragment-->
<string name="msg_failed_to_load_notification">Failed to load notifications</string>
Expand Down