- flavours compartmentalised

Took 10 hours 11 minutes
This commit is contained in:
2023-03-28 21:38:33 +01:00
parent f87d986849
commit 16433d0852
130 changed files with 814 additions and 706 deletions

View File

@@ -1,39 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="h_mal.appttude.com.driver">
<application
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round">
<activity
android:name="h_mal.appttude.com.ui.user.LoginActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar.User"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="h_mal.appttude.com.ui.MainActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name="h_mal.appttude.com.ui.update.UpdateActivity"
android:theme="@style/AppTheme.NoActionBar.Update" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="h_mal.appttude.com.driver"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
</manifest>

View File

@@ -1,13 +1,13 @@
package h_mal.appttude.com.ui
package h_mal.appttude.com.driver.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import h_mal.appttude.com.R
import h_mal.appttude.com.databinding.FragmentDriverOverallBinding
import h_mal.appttude.com.utils.navigateTo
import h_mal.appttude.com.driver.R
import h_mal.appttude.com.driver.databinding.FragmentDriverOverallBinding
import h_mal.appttude.com.driver.utils.navigateTo
class DriverOverallFragment : Fragment() {

View File

@@ -1,15 +1,15 @@
package h_mal.appttude.com.ui
package h_mal.appttude.com.driver.ui
import android.os.Bundle
import android.view.View
import h_mal.appttude.com.R
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.data.DRIVER
import h_mal.appttude.com.databinding.FragmentHomeDriverBinding
import h_mal.appttude.com.utils.hide
import h_mal.appttude.com.utils.navigateTo
import h_mal.appttude.com.utils.show
import h_mal.appttude.com.viewmodels.RoleViewModel
import h_mal.appttude.com.driver.R
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
import h_mal.appttude.com.driver.data.DRIVER
import h_mal.appttude.com.driver.databinding.FragmentHomeDriverBinding
import h_mal.appttude.com.driver.utils.hide
import h_mal.appttude.com.driver.utils.navigateTo
import h_mal.appttude.com.driver.utils.show
import h_mal.appttude.com.driver.viewmodels.RoleViewModel
class HomeFragment :

View File

@@ -0,0 +1,51 @@
package h_mal.appttude.com.driver.ui
import android.os.Bundle
import com.google.firebase.auth.FirebaseUser
import h_mal.appttude.com.driver.R
import h_mal.appttude.com.driver.base.DrawerActivity
import h_mal.appttude.com.driver.databinding.ActivityMainBinding
import h_mal.appttude.com.driver.databinding.NavHeaderMainBinding
import h_mal.appttude.com.driver.utils.setGlideImage
import h_mal.appttude.com.driver.viewmodels.MainViewModel
class MainActivity : DrawerActivity<MainViewModel, ActivityMainBinding>() {
override val containerId: Int = R.id.container
override val drawerLayoutId: Int = R.id.drawer_layout
override val toolbarId: Int = R.id.toolbar
override val navViewId: Int = R.id.nav_view
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel.getUserDetails()
setupLogoutInDrawer()
}
override fun onSuccess(data: Any?) {
super.onSuccess(data)
when (data) {
is FirebaseUser -> {
setupDrawer(data)
}
}
}
private fun setupDrawer(user: FirebaseUser) {
NavHeaderMainBinding.inflate(layoutInflater).apply {
driverEmail.text = user.email
driverName.text = user.displayName
profileImage.setGlideImage(user.photoUrl)
}
}
private fun setupLogoutInDrawer() {
binding.logout.setOnClickListener {
viewModel.logOut()
}
}
}

View File

@@ -1,13 +1,13 @@
package h_mal.appttude.com.ui
package h_mal.appttude.com.driver.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import h_mal.appttude.com.R
import h_mal.appttude.com.databinding.FragmentVehicleOverallBinding
import h_mal.appttude.com.utils.navigateTo
import h_mal.appttude.com.driver.R
import h_mal.appttude.com.driver.databinding.FragmentVehicleOverallBinding
import h_mal.appttude.com.driver.utils.navigateTo
class VehicleOverallFragment : Fragment() {

View File

@@ -1,13 +1,13 @@
package h_mal.appttude.com.ui
package h_mal.appttude.com.driver.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import h_mal.appttude.com.R
import h_mal.appttude.com.databinding.FragmentWelcomeBinding
import h_mal.appttude.com.utils.navigateTo
import h_mal.appttude.com.driver.R
import h_mal.appttude.com.driver.databinding.FragmentWelcomeBinding
import h_mal.appttude.com.driver.utils.navigateTo
class WelcomeFragment : Fragment() {

View File

@@ -1,13 +1,13 @@
package h_mal.appttude.com.ui.driverprofile
package h_mal.appttude.com.driver.ui.driverprofile
import android.net.Uri
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentDriverLicenseBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.DriversLicense
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.DriverLicenseViewModel
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
import h_mal.appttude.com.driver.databinding.FragmentDriverLicenseBinding
import h_mal.appttude.com.driver.dialogs.DateDialog
import h_mal.appttude.com.driver.model.DriversLicense
import h_mal.appttude.com.driver.utils.isTrue
import h_mal.appttude.com.driver.utils.setGlideImage
import h_mal.appttude.com.driver.viewmodels.DriverLicenseViewModel
class DriverLicenseFragment :
DataSubmissionBaseFragment<DriverLicenseViewModel, FragmentDriverLicenseBinding, DriversLicense>() {

View File

@@ -1,13 +1,13 @@
package h_mal.appttude.com.ui.driverprofile
package h_mal.appttude.com.driver.ui.driverprofile
import android.net.Uri
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentDriverProfileBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.DriverProfile
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.DriverProfileViewModel
import h_mal.appttude.com.driver.databinding.FragmentDriverProfileBinding
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
import h_mal.appttude.com.driver.dialogs.DateDialog
import h_mal.appttude.com.driver.model.DriverProfile
import h_mal.appttude.com.driver.utils.isTrue
import h_mal.appttude.com.driver.utils.setGlideImage
import h_mal.appttude.com.driver.viewmodels.DriverProfileViewModel
class DriverProfileFragment :

View File

@@ -1,13 +1,13 @@
package h_mal.appttude.com.ui.driverprofile
package h_mal.appttude.com.driver.ui.driverprofile
import android.net.Uri
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentPrivateHireLicenseBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.PrivateHireLicense
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.PrivateHireLicenseViewModel
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
import h_mal.appttude.com.driver.databinding.FragmentPrivateHireLicenseBinding
import h_mal.appttude.com.driver.dialogs.DateDialog
import h_mal.appttude.com.driver.model.PrivateHireLicense
import h_mal.appttude.com.driver.utils.isTrue
import h_mal.appttude.com.driver.utils.setGlideImage
import h_mal.appttude.com.driver.viewmodels.PrivateHireLicenseViewModel
class PrivateHireLicenseFragment : DataSubmissionBaseFragment

View File

@@ -1,16 +1,16 @@
package h_mal.appttude.com.ui.vehicleprofile
package h_mal.appttude.com.driver.ui.vehicleprofile
import android.net.Uri
import android.os.Bundle
import android.view.View
import android.widget.ImageView
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentInsuranceBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.Insurance
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.InsuranceViewModel
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
import h_mal.appttude.com.driver.databinding.FragmentInsuranceBinding
import h_mal.appttude.com.driver.dialogs.DateDialog
import h_mal.appttude.com.driver.model.Insurance
import h_mal.appttude.com.driver.utils.isTrue
import h_mal.appttude.com.driver.utils.setGlideImage
import h_mal.appttude.com.driver.viewmodels.InsuranceViewModel
class InsuranceFragment :

View File

@@ -1,12 +1,12 @@
package h_mal.appttude.com.ui.vehicleprofile
package h_mal.appttude.com.driver.ui.vehicleprofile
import android.net.Uri
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentLogbookBinding
import h_mal.appttude.com.model.Logbook
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.LogbookViewModel
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
import h_mal.appttude.com.driver.databinding.FragmentLogbookBinding
import h_mal.appttude.com.driver.model.Logbook
import h_mal.appttude.com.driver.utils.isTrue
import h_mal.appttude.com.driver.utils.setGlideImage
import h_mal.appttude.com.driver.viewmodels.LogbookViewModel
class LogbookFragment :

View File

@@ -1,13 +1,13 @@
package h_mal.appttude.com.ui.vehicleprofile
package h_mal.appttude.com.driver.ui.vehicleprofile
import android.net.Uri
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentMotBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.Mot
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.MotViewModel
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
import h_mal.appttude.com.driver.databinding.FragmentMotBinding
import h_mal.appttude.com.driver.dialogs.DateDialog
import h_mal.appttude.com.driver.model.Mot
import h_mal.appttude.com.driver.utils.isTrue
import h_mal.appttude.com.driver.utils.setGlideImage
import h_mal.appttude.com.driver.viewmodels.MotViewModel
class MotFragment : DataSubmissionBaseFragment<MotViewModel, FragmentMotBinding, Mot>() {

View File

@@ -1,13 +1,13 @@
package h_mal.appttude.com.ui.vehicleprofile
package h_mal.appttude.com.driver.ui.vehicleprofile
import android.net.Uri
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentPrivateHireLicenseBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.PrivateHireVehicle
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.PrivateHireVehicleViewModel
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
import h_mal.appttude.com.driver.databinding.FragmentPrivateHireLicenseBinding
import h_mal.appttude.com.driver.dialogs.DateDialog
import h_mal.appttude.com.driver.model.PrivateHireVehicle
import h_mal.appttude.com.driver.utils.isTrue
import h_mal.appttude.com.driver.utils.setGlideImage
import h_mal.appttude.com.driver.viewmodels.PrivateHireVehicleViewModel
class PrivateHireVehicleFragment :

View File

@@ -1,11 +1,11 @@
package h_mal.appttude.com.ui.vehicleprofile
package h_mal.appttude.com.driver.ui.vehicleprofile
import h_mal.appttude.com.base.DataSubmissionBaseFragment
import h_mal.appttude.com.databinding.FragmentVehicleSetupBinding
import h_mal.appttude.com.dialogs.DateDialog
import h_mal.appttude.com.model.VehicleProfile
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.viewmodels.VehicleProfileViewModel
import h_mal.appttude.com.driver.base.DataSubmissionBaseFragment
import h_mal.appttude.com.driver.databinding.FragmentVehicleSetupBinding
import h_mal.appttude.com.driver.dialogs.DateDialog
import h_mal.appttude.com.driver.model.VehicleProfile
import h_mal.appttude.com.driver.utils.isTrue
import h_mal.appttude.com.driver.viewmodels.VehicleProfileViewModel
class VehicleProfileFragment : DataSubmissionBaseFragment

View File

@@ -1,106 +0,0 @@
package h_mal.appttude.com.ui
import android.view.MenuItem
import androidx.core.view.GravityCompat
import androidx.navigation.NavController
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.google.android.material.navigation.NavigationView
import com.google.firebase.auth.FirebaseUser
import h_mal.appttude.com.R
import h_mal.appttude.com.base.BaseActivity
import h_mal.appttude.com.databinding.ActivityMainBinding
import h_mal.appttude.com.databinding.NavHeaderMainBinding
import h_mal.appttude.com.dialogs.ExitDialog.displayExitDialog
import h_mal.appttude.com.utils.isTrue
import h_mal.appttude.com.utils.setGlideImage
import h_mal.appttude.com.viewmodels.MainViewModel
class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),
NavigationView.OnNavigationItemSelectedListener {
lateinit var navController: NavController
lateinit var appBarConfiguration: AppBarConfiguration
override fun setupView(binding: ActivityMainBinding) = binding.run {
setSupportActionBar(appBarLayout.toolbar)
supportActionBar?.setDisplayShowTitleEnabled(false)
navController = findNavController(R.id.container)
appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)
navView.setupWithNavController(navController)
setupActionBarWithNavController(navController, appBarConfiguration)
viewModel.getUserDetails()
setupLogoutInDrawer()
}
override fun onSupportNavigateUp(): Boolean {
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}
override fun setTitle(title: CharSequence) {
applyBinding {
appBarLayout.toolbar.title = title
}
}
override fun onBackPressed() {
applyBinding {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START)
} else {
val navHostFragment = supportFragmentManager.findFragmentById(R.id.container)
navHostFragment?.childFragmentManager?.backStackEntryCount?.let { it >= 1 }?.isTrue {
super.onBackPressed()
}
displayExitDialog()
}
}
}
override fun onSuccess(data: Any?) {
super.onSuccess(data)
when (data) {
is FirebaseUser -> {
setupDrawer(data)
}
}
}
private fun setupDrawer(user: FirebaseUser) {
applyBinding {
NavHeaderMainBinding.inflate(layoutInflater).apply {
driverEmail.text = user.email
driverName.text = user.displayName
profileImage.setGlideImage(user.photoUrl)
}
}
}
private fun setupLogoutInDrawer() {
applyBinding {
logout.setOnClickListener {
viewModel.logOut()
}
}
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
// Handle navigation view item clicks here.
when (item.itemId) {
R.id.nav_user_settings -> {}
}
applyBinding {
drawerLayout.closeDrawer(GravityCompat.START)
}
return true
}
}