Skip to content
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
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'androidx.navigation.safeargs'

def STRIPE_API_TOKEN = System.getenv('STRIPE_API_TOKEN') ?: "YOUR_API_KEY"

Expand Down
12 changes: 0 additions & 12 deletions app/src/main/java/org/fossasia/openevent/general/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,10 @@ import kotlinx.android.synthetic.main.activity_main.navigation
import kotlinx.android.synthetic.main.activity_main.navigationAuth
import kotlinx.android.synthetic.main.activity_main.mainFragmentCoordinatorLayout
import org.fossasia.openevent.general.data.Preference
import org.fossasia.openevent.general.order.LAUNCH_TICKETS
import org.fossasia.openevent.general.order.TICKETS
import org.fossasia.openevent.general.search.RC_CREDENTIALS_READ
import org.fossasia.openevent.general.search.RC_CREDENTIALS_SAVE
import org.fossasia.openevent.general.search.SAVED_LOCATION
import org.fossasia.openevent.general.search.SmartAuthViewModel
import org.fossasia.openevent.general.search.TO_SEARCH
import org.fossasia.openevent.general.utils.Utils.navAnimGone
import org.fossasia.openevent.general.utils.Utils.navAnimVisible

Expand All @@ -39,15 +36,6 @@ class MainActivity : AppCompatActivity() {
if (preference.getString(SAVED_LOCATION).isNullOrEmpty())
navController.navigate(R.id.welcomeFragment)

val bundle = if (savedInstanceState == null) intent.extras else null
if (bundle != null) {
if (bundle.getBoolean(TO_SEARCH))
navController.navigate(R.id.searchFragment)

if (bundle.getBoolean(TICKETS) || bundle.getBoolean(LAUNCH_TICKETS))
navController.navigate(R.id.orderUnderUserFragment)
}

navController.addOnDestinationChangedListener { _, destination, _ ->
currentFragmentId = destination.id
handleNavigationVisibility(currentFragmentId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,12 +115,9 @@ class EventsFragment : Fragment() {
rootView.swiperefresh.isRefreshing = it
})

if (eventsViewModel.savedLocation != null) {
rootView.locationTextView.text = eventsViewModel.savedLocation
eventsViewModel.loadLocationEvents()
} else {
rootView.locationTextView.text = "where?"
}
eventsViewModel.loadLocation()
rootView.locationTextView.text = eventsViewModel.savedLocation
eventsViewModel.loadLocationEvents()

rootView.locationTextView.setOnClickListener {
findNavController(rootView).navigate(R.id.searchLocationFragment, null, getAnimSlide())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import org.fossasia.openevent.general.data.Preference
import org.fossasia.openevent.general.search.SAVED_LOCATION
import timber.log.Timber

class EventsViewModel(private val eventService: EventService, private val preference: Preference) :
ViewModel() {

private val compositeDisposable = CompositeDisposable()
private val tokenKey = "LOCATION"

private val mutableProgress = MutableLiveData<Boolean>()
val progress: LiveData<Boolean> = mutableProgress
Expand All @@ -24,10 +24,13 @@ class EventsViewModel(private val eventService: EventService, private val prefer
private val mutableShowShimmerEvents = MutableLiveData<Boolean>()
val showShimmerEvents: LiveData<Boolean> = mutableShowShimmerEvents

val savedLocation by lazy { preference.getString(tokenKey) }
var savedLocation: String? = null

fun loadLocation() {
savedLocation = preference.getString(SAVED_LOCATION)
}

fun loadLocationEvents() {
preference.putString(tokenKey, savedLocation)
val query = "[{\"name\":\"location-name\",\"op\":\"ilike\",\"val\":\"%$savedLocation%\"}]"

compositeDisposable.add(eventService.getEventsByLocation(query)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Observer
import androidx.navigation.NavOptions
import androidx.navigation.Navigation
import androidx.navigation.Navigation.findNavController
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.fragment_order.view.orderCoordinatorLayout
Expand All @@ -21,17 +22,13 @@ import kotlinx.android.synthetic.main.fragment_order.view.name
import kotlinx.android.synthetic.main.fragment_order.view.share
import kotlinx.android.synthetic.main.fragment_order.view.time
import kotlinx.android.synthetic.main.fragment_order.view.view
import org.fossasia.openevent.general.MainActivity
import org.fossasia.openevent.general.R
import org.fossasia.openevent.general.event.Event
import org.fossasia.openevent.general.event.EventUtils
import org.fossasia.openevent.general.ticket.EVENT_ID
import org.fossasia.openevent.general.utils.Utils.getAnimSlide
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.koin.androidx.viewmodel.ext.android.viewModel

const val TICKETS: String = "OpenMyTickets"

class OrderCompletedFragment : Fragment() {

private lateinit var rootView: View
Expand Down Expand Up @@ -118,22 +115,16 @@ class OrderCompletedFragment : Fragment() {
}

private fun redirectToEventsFragment() {
findNavController(rootView).navigate(R.id.eventsFragment, null, getAnimSlide())
findNavController(rootView).popBackStack(R.id.eventsFragment, false)
}

private fun openEventDetails() {
findNavController(rootView).navigate(R.id.eventDetailsFragment, null, getAnimSlide() )
findNavController(rootView).popBackStack(R.id.eventDetailsFragment, false)
}

private fun openTicketDetails() {
val searchBundle = Bundle()
searchBundle.putBoolean(TICKETS, true)
activity?.supportFragmentManager?.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
val intent = Intent(activity, MainActivity::class.java)
intent.putExtras(searchBundle)
startActivity(intent)
activity?.overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right)
activity?.finish()
val navOptions = NavOptions.Builder().setPopUpTo(R.id.eventsFragment, false).build()
Navigation.findNavController(rootView).navigate(R.id.orderUnderUserFragment, null, navOptions)
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import org.koin.androidx.viewmodel.ext.android.viewModel
import timber.log.Timber

const val ORDERS: String = "orders"
const val LAUNCH_TICKETS: String = "LAUNCH_TICKETS"

class OrdersUnderUserFragment : Fragment() {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ class SearchFragment : Fragment() {
Navigation.findNavController(rootView).navigate(R.id.searchTimeFragment, bundle, getAnimSlide())
}

if (searchViewModel.savedDate != null) {
rootView.timeTextView.text = searchViewModel.savedDate
val time = arguments?.let {
SearchFragmentArgs.fromBundle(it).stringSavedDate
}
rootView.timeTextView.text = time ?: "Anytime"

if (searchViewModel.savedLocation != null) {
rootView.locationTextView.text = searchViewModel.savedLocation
}
searchViewModel.loadSavedLocation()
rootView.locationTextView.text = searchViewModel.savedLocation

rootView.locationTextView.setOnClickListener {
val bundle = Bundle()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.fossasia.openevent.general.search

import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.view.LayoutInflater
Expand All @@ -13,12 +12,12 @@ import androidx.appcompat.widget.SearchView
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.navigation.Navigation
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.fragment_search_location.search
import kotlinx.android.synthetic.main.fragment_search_location.view.locationProgressBar
import kotlinx.android.synthetic.main.fragment_search_location.view.search
import kotlinx.android.synthetic.main.fragment_search_location.view.currentLocation
import org.fossasia.openevent.general.MainActivity
import org.fossasia.openevent.general.R
import org.fossasia.openevent.general.utils.Utils
import org.koin.androidx.viewmodel.ext.android.viewModel
Expand Down Expand Up @@ -94,15 +93,8 @@ class SearchLocationFragment : Fragment() {
}

private fun redirectToMain() {
val startMainActivity = Intent(activity, MainActivity::class.java).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
if (fromSearchFragment) {
val searchBundle = Bundle()
searchBundle.putBoolean(TO_SEARCH, true)
startMainActivity.putExtras(searchBundle)
}
activity?.startActivity(startMainActivity)
activity?.overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right)
activity?.finish()
val fragmentId = if (fromSearchFragment) R.id.searchFragment else R.id.eventsFragment
Navigation.findNavController(rootView).popBackStack(fragmentId, false)
}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.fossasia.openevent.general.search

import android.os.Bundle
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
Expand All @@ -26,7 +25,6 @@ import org.fossasia.openevent.general.event.RecyclerViewClickListener
import org.fossasia.openevent.general.favorite.FavoriteEventsRecyclerAdapter
import org.fossasia.openevent.general.utils.Utils.getAnimFade
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.fossasia.openevent.general.utils.nullToEmpty
import org.koin.androidx.viewmodel.ext.android.viewModel
import timber.log.Timber

Expand Down Expand Up @@ -117,12 +115,7 @@ class SearchResultsFragment : Fragment() {
val location = bundle?.getString(LOCATION)
val date = bundle?.getString(DATE)
searchViewModel.searchEvent = query
if (searchViewModel.savedLocation != null && TextUtils.isEmpty(location) && date == "Anytime")
searchViewModel.loadEvents(
searchViewModel.savedLocation.nullToEmpty(),
searchViewModel.savedDate.nullToEmpty())
else
searchViewModel.loadEvents(location.toString(), date.toString())
searchViewModel.loadEvents(location.toString(), date.toString())
}

private fun showNoSearchResults(events: List<Event>) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
package org.fossasia.openevent.general.search

import android.app.DatePickerDialog
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.navigation.NavOptions
import androidx.navigation.Navigation
import kotlinx.android.synthetic.main.fragment_search_time.view.anytimeTextView
import kotlinx.android.synthetic.main.fragment_search_time.view.todayTextView
import kotlinx.android.synthetic.main.fragment_search_time.view.tomorrowTextView
import kotlinx.android.synthetic.main.fragment_search_time.view.thisWeekendTextView
import kotlinx.android.synthetic.main.fragment_search_time.view.nextMonthTextView
import kotlinx.android.synthetic.main.fragment_search_time.view.timeTextView
import org.fossasia.openevent.general.MainActivity
import org.fossasia.openevent.general.R
import org.fossasia.openevent.general.event.EventUtils.getSimpleFormattedDate
import org.koin.androidx.viewmodel.ext.android.viewModel
Expand All @@ -26,7 +26,6 @@ const val TODAY = "Today"
const val TOMORROW = "Tomorrow"
const val THIS_WEEKEND = "This Weekend"
const val NEXT_MONTH = "In the next month"
const val TO_SEARCH = "ToSearchFragment"

class SearchTimeFragment : Fragment() {
private val searchTimeViewModel by viewModel<SearchTimeViewModel>()
Expand All @@ -49,33 +48,27 @@ class SearchTimeFragment : Fragment() {
calendar.set(Calendar.YEAR, year)
calendar.set(Calendar.MONTH, monthOfYear)
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth)

searchTimeViewModel.saveDate(getSimpleFormattedDate(calendar.time))
calendar.add(Calendar.DATE, 1)
searchTimeViewModel.saveNextDate(getSimpleFormattedDate(calendar.time))
redirectToSearch()
redirectToSearch(getSimpleFormattedDate(calendar.time))
}

rootView.anytimeTextView.setOnClickListener {
searchTimeViewModel.saveDate(ANYTIME)
redirectToSearch()
redirectToSearch(ANYTIME)
}

rootView.todayTextView.setOnClickListener {
searchTimeViewModel.saveDate(getSimpleFormattedDate(calendar.time))
calendar.add(Calendar.DATE, 1)
searchTimeViewModel.saveNextDate(getSimpleFormattedDate(calendar.time))
searchTimeViewModel.saveDate(TODAY)
redirectToSearch()
redirectToSearch(TODAY)
}

rootView.tomorrowTextView.setOnClickListener {
calendar.add(Calendar.DATE, 1)
searchTimeViewModel.saveNextDate(getSimpleFormattedDate(calendar.time))
calendar.add(Calendar.DATE, 1)
searchTimeViewModel.saveNextToNextDate(getSimpleFormattedDate(calendar.time))
searchTimeViewModel.saveDate(TOMORROW)
redirectToSearch()
redirectToSearch(TOMORROW)
}

rootView.thisWeekendTextView.setOnClickListener {
Expand All @@ -87,8 +80,7 @@ class SearchTimeFragment : Fragment() {
searchTimeViewModel.saveWeekendDate(getSimpleFormattedDate(calendar.time))
calendar.add(Calendar.DATE, 1)
searchTimeViewModel.saveNextToWeekendDate(getSimpleFormattedDate(calendar.time))
searchTimeViewModel.saveDate(THIS_WEEKEND)
redirectToSearch()
redirectToSearch(THIS_WEEKEND)
}

rootView.nextMonthTextView.setOnClickListener {
Expand All @@ -98,27 +90,22 @@ class SearchTimeFragment : Fragment() {
searchTimeViewModel.saveNextMonth(getSimpleFormattedDate(calendar.time))
calendar.add(Calendar.MONTH, 1)
searchTimeViewModel.saveNextToNextMonth(getSimpleFormattedDate(calendar.time))
searchTimeViewModel.saveDate(NEXT_MONTH)
redirectToSearch()
redirectToSearch(NEXT_MONTH)
}

rootView.timeTextView.setOnClickListener {
DatePickerDialog(context, date, calendar
DatePickerDialog(requireContext(), date, calendar
.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH)).show()
}

return rootView
}

private fun redirectToSearch() {
val intent = Intent(context, MainActivity::class.java).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
val bundle = Bundle()
bundle.putBoolean(TO_SEARCH, true)
intent.putExtras(bundle)
startActivity(intent)
activity?.overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right)
activity?.finish()
private fun redirectToSearch(time: String) {
val args = SearchFragmentArgs.Builder(time).build().toBundle()
val navOptions = NavOptions.Builder().setPopUpTo(R.id.eventsFragment, false).build()
Navigation.findNavController(rootView).navigate(R.id.searchFragment, args, navOptions)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import org.fossasia.openevent.general.data.Preference

class SearchTimeViewModel(private val preference: Preference) : ViewModel() {
companion object {
val tokenKeyDate = "DATE"
val tokenKeyNextDate = "NEXT_DATE"
val tokenKeyNextToNextDate = "NEXT_TO_NEXT_DATE"
val tokenKeyWeekendDate = "WEEKEND"
Expand All @@ -14,10 +13,6 @@ class SearchTimeViewModel(private val preference: Preference) : ViewModel() {
val tokenKeyNextToNextMonth = "NEXT_TO_NEXT_MONTH"
}

fun saveDate(time: String) {
preference.putString(tokenKeyDate, time)
}

fun saveNextDate(time: String) {
preference.putString(tokenKeyNextDate, time)
}
Expand Down
Loading