From 8d9e126c610bf518edc01f89df2663f948eef025 Mon Sep 17 00:00:00 2001 From: Nishant Mahajan Date: Thu, 14 Feb 2019 23:04:22 +0530 Subject: [PATCH] chore: make two flavor specific Koin modules and split WelcomeFragment WelcomeFragment has been split into a fdroid and a playstore variant. This has been done because the fdroid version doesn't need a ViewModel and any location services but the playstore version does. The fdroid flavor had a redundant ViewModel and it's code was confusing because the ViewModel was used for entirely different purposes in the two flavors. Making two flavor specific modules(one for fdroid and one for playstore) allowed us the split the WelcomeFragment itself. This has the benefit that the code in WelcomeFragment now reflects the features of the flavor and the redundant ViewModel is no longer needed. Fixes: #1082 --- .../general/di/FlavorSpecificModules.kt | 5 +++ .../general/welcome/WelcomeFragment.kt | 31 +++++++++++++++++++ .../general/welcome/WelcomeViewModel.kt | 28 ----------------- .../openevent/general/OpenEventGeneral.kt | 5 ++- .../fossasia/openevent/general/di/Modules.kt | 2 -- .../general/di/FlavorSpecificModules.kt | 9 ++++++ .../general/welcome/WelcomeFragment.kt | 0 7 files changed, 49 insertions(+), 31 deletions(-) create mode 100644 app/src/fdroid/java/org/fossasia/openevent/general/di/FlavorSpecificModules.kt create mode 100644 app/src/fdroid/java/org/fossasia/openevent/general/welcome/WelcomeFragment.kt delete mode 100644 app/src/fdroid/java/org/fossasia/openevent/general/welcome/WelcomeViewModel.kt create mode 100644 app/src/playStore/java/org/fossasia/openevent/general/di/FlavorSpecificModules.kt rename app/src/{main => playStore}/java/org/fossasia/openevent/general/welcome/WelcomeFragment.kt (100%) diff --git a/app/src/fdroid/java/org/fossasia/openevent/general/di/FlavorSpecificModules.kt b/app/src/fdroid/java/org/fossasia/openevent/general/di/FlavorSpecificModules.kt new file mode 100644 index 0000000000..c460e1e3eb --- /dev/null +++ b/app/src/fdroid/java/org/fossasia/openevent/general/di/FlavorSpecificModules.kt @@ -0,0 +1,5 @@ +package org.fossasia.openevent.general.di + +import org.koin.dsl.module.module + +val flavorSpecificModule = module { } diff --git a/app/src/fdroid/java/org/fossasia/openevent/general/welcome/WelcomeFragment.kt b/app/src/fdroid/java/org/fossasia/openevent/general/welcome/WelcomeFragment.kt new file mode 100644 index 0000000000..fac9a699ad --- /dev/null +++ b/app/src/fdroid/java/org/fossasia/openevent/general/welcome/WelcomeFragment.kt @@ -0,0 +1,31 @@ +package org.fossasia.openevent.general.welcome + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import androidx.navigation.Navigation +import kotlinx.android.synthetic.main.fragment_welcome.view.currentLocation +import kotlinx.android.synthetic.main.fragment_welcome.view.pickCityButton +import org.fossasia.openevent.general.R +import org.fossasia.openevent.general.utils.Utils + +class WelcomeFragment : Fragment() { + private lateinit var rootView: View + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + rootView = inflater.inflate(R.layout.fragment_welcome, container, false) + + (activity as? AppCompatActivity)?.supportActionBar?.hide() + + rootView.currentLocation.visibility = View.GONE + + rootView.pickCityButton.setOnClickListener { + Navigation.findNavController(rootView).navigate(R.id.searchLocationFragment, null, Utils.getAnimSlide()) + } + + return rootView + } +} diff --git a/app/src/fdroid/java/org/fossasia/openevent/general/welcome/WelcomeViewModel.kt b/app/src/fdroid/java/org/fossasia/openevent/general/welcome/WelcomeViewModel.kt deleted file mode 100644 index b50f18603f..0000000000 --- a/app/src/fdroid/java/org/fossasia/openevent/general/welcome/WelcomeViewModel.kt +++ /dev/null @@ -1,28 +0,0 @@ -package org.fossasia.openevent.general.welcome - -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import org.fossasia.openevent.general.common.SingleLiveEvent -import org.fossasia.openevent.general.data.Preference -import org.fossasia.openevent.general.search.LocationService - -class WelcomeViewModel(locationService: LocationService, preference: Preference) : ViewModel() { - - private val mutableRedirectToMain = MutableLiveData() - val redirectToMain: LiveData = mutableRedirectToMain - private val mutableVisibility = MutableLiveData() - val currentLocationVisibility: LiveData = mutableVisibility - private val mutableOpenLocationSettings = MutableLiveData() - val openLocationSettings: LiveData = mutableOpenLocationSettings - private val mutableErrorMessage = SingleLiveEvent() - val errorMessage: LiveData = mutableErrorMessage - - init { - mutableVisibility.value = false - } - - fun configure() { - // Since there are no location services for f-droid, this doesn't do anything. - } -} diff --git a/app/src/main/java/org/fossasia/openevent/general/OpenEventGeneral.kt b/app/src/main/java/org/fossasia/openevent/general/OpenEventGeneral.kt index f9be1329c6..a37de684c9 100644 --- a/app/src/main/java/org/fossasia/openevent/general/OpenEventGeneral.kt +++ b/app/src/main/java/org/fossasia/openevent/general/OpenEventGeneral.kt @@ -6,6 +6,7 @@ import com.jakewharton.threetenabp.AndroidThreeTen import org.fossasia.openevent.general.di.apiModule import org.fossasia.openevent.general.di.commonModule import org.fossasia.openevent.general.di.databaseModule +import org.fossasia.openevent.general.di.flavorSpecificModule import org.fossasia.openevent.general.di.networkModule import org.fossasia.openevent.general.di.viewModelModule import org.koin.android.ext.android.startKoin @@ -22,7 +23,9 @@ class OpenEventGeneral : MultiDexApplication() { override fun onCreate() { super.onCreate() appContext = applicationContext - startKoin(this, listOf(commonModule, apiModule, viewModelModule, networkModule, databaseModule)) + startKoin(this, listOf( + commonModule, apiModule, viewModelModule, networkModule, databaseModule, flavorSpecificModule + )) Timber.plant(Timber.DebugTree()) AndroidThreeTen.init(applicationContext) } diff --git a/app/src/main/java/org/fossasia/openevent/general/di/Modules.kt b/app/src/main/java/org/fossasia/openevent/general/di/Modules.kt index 992ccac30c..fb1994f2fb 100644 --- a/app/src/main/java/org/fossasia/openevent/general/di/Modules.kt +++ b/app/src/main/java/org/fossasia/openevent/general/di/Modules.kt @@ -66,7 +66,6 @@ import org.fossasia.openevent.general.ticket.TicketApi import org.fossasia.openevent.general.ticket.TicketId import org.fossasia.openevent.general.ticket.TicketService import org.fossasia.openevent.general.ticket.TicketsViewModel -import org.fossasia.openevent.general.welcome.WelcomeViewModel import org.koin.android.ext.koin.androidApplication import org.koin.android.ext.koin.androidContext import org.koin.androidx.viewmodel.ext.koin.viewModel @@ -148,7 +147,6 @@ val viewModelModule = module { viewModel { EditProfileViewModel(get(), get()) } viewModel { GeoLocationViewModel(get()) } viewModel { SmartAuthViewModel() } - viewModel { WelcomeViewModel(get(), get()) } } val networkModule = module { diff --git a/app/src/playStore/java/org/fossasia/openevent/general/di/FlavorSpecificModules.kt b/app/src/playStore/java/org/fossasia/openevent/general/di/FlavorSpecificModules.kt new file mode 100644 index 0000000000..ef77fdc8c9 --- /dev/null +++ b/app/src/playStore/java/org/fossasia/openevent/general/di/FlavorSpecificModules.kt @@ -0,0 +1,9 @@ +package org.fossasia.openevent.general.di + +import org.fossasia.openevent.general.welcome.WelcomeViewModel +import org.koin.androidx.viewmodel.ext.koin.viewModel +import org.koin.dsl.module.module + +val flavorSpecificModule = module { + viewModel { WelcomeViewModel(get(), get()) } +} diff --git a/app/src/main/java/org/fossasia/openevent/general/welcome/WelcomeFragment.kt b/app/src/playStore/java/org/fossasia/openevent/general/welcome/WelcomeFragment.kt similarity index 100% rename from app/src/main/java/org/fossasia/openevent/general/welcome/WelcomeFragment.kt rename to app/src/playStore/java/org/fossasia/openevent/general/welcome/WelcomeFragment.kt