mirror of
https://github.com/hmalik144/Driver.git
synced 2025-12-10 02:45:20 +00:00
- flavours compartmentalised
Took 10 hours 11 minutes
This commit is contained in:
@@ -14,6 +14,11 @@ orbs:
|
||||
jobs:
|
||||
# Below is the definition of your job to build and test your app, you can rename and customize it as you want.
|
||||
build-and-test:
|
||||
# Parameters used for determining
|
||||
parameters:
|
||||
flavour:
|
||||
type: string
|
||||
default: "Driver"
|
||||
# These next lines define the Android machine image executor.
|
||||
# See: https://circleci.com/docs/2.0/executor-types/
|
||||
executor:
|
||||
@@ -29,14 +34,13 @@ jobs:
|
||||
name: Setup variables for build
|
||||
command: |
|
||||
echo "$GOOGLE_SERVICES_KEY" > "app/google-services.json"
|
||||
# echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > "android/app/release_keystore.jks"
|
||||
- run:
|
||||
name: Grant execute permission for gradlew
|
||||
command: |
|
||||
chmod +x gradlew
|
||||
# The next step will run the unit tests
|
||||
- android/run-tests:
|
||||
test-command: ./gradlew testDriverDebugUnitTest --continue
|
||||
test-command: ./gradlew test<< parameters.flavour >>DebugUnitTest --continue
|
||||
# Install Firebase tools needed for firebase emulator
|
||||
- run:
|
||||
name: Install firebase tools
|
||||
@@ -50,15 +54,10 @@ jobs:
|
||||
background: true
|
||||
# Then start the emulator and run the Instrumentation tests!
|
||||
- android/start-emulator-and-run-tests:
|
||||
post-emulator-launch-assemble-command: ./gradlew assembleDriverDebugAndroidTest
|
||||
test-command: ./gradlew connectedDriverDebugAndroidTest
|
||||
post-emulator-launch-assemble-command: ./gradlew assemble<< parameters.flavour >>DebugAndroidTest
|
||||
test-command: ./gradlew connected<< parameters.flavour >>DebugAndroidTest
|
||||
system-image: system-images;android-25;google_apis;x86
|
||||
# And finally run the release build
|
||||
# - run:
|
||||
# name: Assemble release build
|
||||
# command: |
|
||||
# ./gradlew assembleDriverRelease
|
||||
# Then publish the artifacts of the Instrumentation tests!
|
||||
# store test reports
|
||||
- store_artifacts:
|
||||
path: app/build/reports/androidTests/connected
|
||||
destination: reports
|
||||
@@ -74,11 +73,58 @@ jobs:
|
||||
# Then publish the results of the Instrumentation tests!
|
||||
- store_test_results:
|
||||
path: app/build/outputs/androidTest-results/connected
|
||||
|
||||
# Assemble
|
||||
assemble-and-release:
|
||||
# Parameters used for determining
|
||||
parameters:
|
||||
flavour:
|
||||
type: string
|
||||
default: ""
|
||||
executor:
|
||||
name: android/android-machine
|
||||
steps:
|
||||
- run:
|
||||
name: Setup variables for release
|
||||
command: |
|
||||
echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > "android/app/release_keystore.jks"
|
||||
echo "$GOOGLE_PLAY_KEY" > "android/playstore.json"
|
||||
# And finally run the release build
|
||||
- run:
|
||||
name: Assemble release build
|
||||
command: |
|
||||
./gradlew assembleDriverRelease
|
||||
# Invoke jobs via workflows
|
||||
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows
|
||||
workflows:
|
||||
sample: # This is the name of the workflow, feel free to change it to better match your workflow.
|
||||
# Inside the workflow, you define the jobs you want to run.
|
||||
version: 2
|
||||
all-branch:
|
||||
jobs:
|
||||
- build-and-test
|
||||
- build-and-test:
|
||||
flavour: Driver
|
||||
filters:
|
||||
branches:
|
||||
ignore:
|
||||
- main_driver
|
||||
- main_admin
|
||||
release-driver:
|
||||
jobs:
|
||||
- build-and-test:
|
||||
flavour: Driver
|
||||
- assemble-and-release:
|
||||
flavour: "Driver"
|
||||
filters:
|
||||
branches:
|
||||
only: main_driver
|
||||
requires:
|
||||
- build-and-test
|
||||
release-admin:
|
||||
jobs:
|
||||
- build-and-test:
|
||||
flavour: Admin
|
||||
- assemble-and-release:
|
||||
flavour: Admin
|
||||
filters:
|
||||
branches:
|
||||
only: main_admin
|
||||
requires:
|
||||
- build-and-test
|
||||
@@ -14,7 +14,7 @@ def relStoreFile = System.getenv("RELEASE_KEYSTORE")
|
||||
android {
|
||||
compileSdkVersion 31
|
||||
defaultConfig {
|
||||
applicationId "h_mal.appttude.com"
|
||||
applicationId "h_mal.appttude.com.driver"
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 31
|
||||
versionCode 6
|
||||
@@ -47,7 +47,7 @@ android {
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
// signingConfig signingConfigs.release
|
||||
signingConfig signingConfigs.release
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
@@ -66,12 +66,11 @@ android {
|
||||
flavorDimensions "Default"
|
||||
productFlavors {
|
||||
driver {
|
||||
applicationIdSuffix ".driver"
|
||||
versionCode 6
|
||||
versionName "1.0.5"
|
||||
}
|
||||
admin {
|
||||
applicationIdSuffix ".driverAdmin"
|
||||
applicationIdSuffix ".admin"
|
||||
versionCode 4
|
||||
versionName "0.0.5"
|
||||
}
|
||||
@@ -84,7 +83,7 @@ android {
|
||||
}
|
||||
admin {
|
||||
manifest {
|
||||
srcFile 'src/driver_admin/AndroidManifest.xml'
|
||||
srcFile 'src/admin/AndroidManifest.xml'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
12
app/src/admin/AndroidManifest.xml
Normal file
12
app/src/admin/AndroidManifest.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- To auto-complete the email text field in the login form with the user's emails -->
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
|
||||
<application
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round">
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.objects
|
||||
package h_mal.appttude.com.driver.admin.objects
|
||||
|
||||
|
||||
class ApprovalsObject {
|
||||
@@ -29,6 +29,6 @@ class ApprovalsObject {
|
||||
this.mot_details_approval = mot_details_approval
|
||||
this.insurance_details_approval = insurance_details_approval
|
||||
this.log_book_approval = log_book_approval
|
||||
ph_car_approval = private_hire_vehicle_approval
|
||||
this.ph_car_approval = private_hire_vehicle_approval
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package h_mal.appttude.com.driver.admin.objects
|
||||
|
||||
import h_mal.appttude.com.driver.model.*
|
||||
import java.util.*
|
||||
|
||||
class ArchiveObject {
|
||||
var driver_license: HashMap<String, DriversLicense>? = null
|
||||
var private_hire: HashMap<String, PrivateHireLicense>? = null
|
||||
var vehicle_details: HashMap<String, VehicleProfile>? = null
|
||||
var insurance_details: HashMap<String, Insurance>? = null
|
||||
var mot_details: HashMap<String, Mot>? = null
|
||||
var log_book: HashMap<String, Logbook>? = null
|
||||
var ph_car: HashMap<String, PrivateHireVehicle>? = null
|
||||
|
||||
constructor()
|
||||
constructor(
|
||||
driver_license: HashMap<String, DriversLicense>?,
|
||||
private_hire: HashMap<String, PrivateHireLicense>?,
|
||||
vehicle_details: HashMap<String, VehicleProfile>?,
|
||||
insurance_details: HashMap<String, Insurance>?,
|
||||
mot_details: HashMap<String, Mot>?,
|
||||
log_book: HashMap<String, Logbook>?,
|
||||
private_hire_vehicle: HashMap<String, PrivateHireVehicle>?
|
||||
) {
|
||||
this.driver_license = driver_license
|
||||
this.private_hire = private_hire
|
||||
this.vehicle_details = vehicle_details
|
||||
this.insurance_details = insurance_details
|
||||
this.mot_details = mot_details
|
||||
this.log_book = log_book
|
||||
this.ph_car = private_hire_vehicle
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.objects
|
||||
package h_mal.appttude.com.driver.admin.objects
|
||||
|
||||
|
||||
class UserObject {
|
||||
@@ -1,7 +1,7 @@
|
||||
package h_mal.appttude.com.objects
|
||||
package h_mal.appttude.com.driver.admin.objects
|
||||
|
||||
import h_mal.appttude.com.objects.wholeObject.DriverProfile
|
||||
import h_mal.appttude.com.objects.wholeObject.VehicleProfile
|
||||
import h_mal.appttude.com.driver.admin.objects.wholeObject.DriverProfile
|
||||
import h_mal.appttude.com.driver.admin.objects.wholeObject.VehicleProfile
|
||||
|
||||
|
||||
class WholeDriverObject {
|
||||
@@ -0,0 +1,24 @@
|
||||
package h_mal.appttude.com.driver.admin.objects.wholeObject
|
||||
|
||||
import h_mal.appttude.com.driver.model.DriverProfile
|
||||
import h_mal.appttude.com.driver.model.DriversLicense
|
||||
import h_mal.appttude.com.driver.model.PrivateHireLicense
|
||||
|
||||
|
||||
class DriverProfile {
|
||||
var driver_profile: DriverProfile? = null
|
||||
var driver_license: DriversLicense? = null
|
||||
var private_hire: PrivateHireLicense? = null
|
||||
|
||||
constructor(
|
||||
driver_profile: DriverProfile?,
|
||||
driver_license: DriversLicense?,
|
||||
private_hire: PrivateHireLicense?
|
||||
) {
|
||||
this.driver_profile = driver_profile
|
||||
this.driver_license = driver_license
|
||||
this.private_hire = private_hire
|
||||
}
|
||||
|
||||
constructor()
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package h_mal.appttude.com.objects.wholeObject
|
||||
package h_mal.appttude.com.driver.admin.objects.wholeObject
|
||||
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
import h_mal.appttude.com.objects.WholeDriverObject
|
||||
import h_mal.appttude.com.driver.admin.objects.WholeDriverObject
|
||||
|
||||
|
||||
class MappedObject : Parcelable {
|
||||
@@ -0,0 +1,31 @@
|
||||
package h_mal.appttude.com.driver.admin.objects.wholeObject
|
||||
|
||||
import h_mal.appttude.com.driver.model.Insurance
|
||||
import h_mal.appttude.com.driver.model.Logbook
|
||||
import h_mal.appttude.com.driver.model.PrivateHireVehicle
|
||||
import h_mal.appttude.com.driver.model.Mot
|
||||
import h_mal.appttude.com.driver.model.VehicleProfile
|
||||
|
||||
|
||||
class VehicleProfile {
|
||||
var insurance_details: Insurance? = null
|
||||
var log_book: Logbook? = null
|
||||
var mot_details: Mot? = null
|
||||
var vehicle_details: VehicleProfile? = null
|
||||
var privateHireVehicle: PrivateHireVehicle? = null
|
||||
|
||||
constructor()
|
||||
constructor(
|
||||
insurance_details: Insurance?,
|
||||
log_book: Logbook?,
|
||||
mot_details: Mot?,
|
||||
vehicle_details: VehicleProfile?,
|
||||
private_hire_vehicle: PrivateHireVehicle?
|
||||
) {
|
||||
this.insurance_details = insurance_details
|
||||
this.log_book = log_book
|
||||
this.mot_details = mot_details
|
||||
this.vehicle_details = vehicle_details
|
||||
this.privateHireVehicle = private_hire_vehicle
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
package h_mal.appttude.com.ui
|
||||
package h_mal.appttude.com.driver.ui
|
||||
|
||||
import android.app.Activity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ArrayAdapter
|
||||
import h_mal.appttude.com.objects.wholeObject.MappedObject
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.driver.admin.objects.wholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class ApprovalListAdapter(
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.ui
|
||||
package h_mal.appttude.com.driver.ui
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.ui
|
||||
package h_mal.appttude.com.driver.ui
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.DialogInterface
|
||||
@@ -8,14 +8,14 @@ import android.util.Log
|
||||
import android.view.*
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.firebase.database.DataSnapshot
|
||||
import com.google.firebase.database.DatabaseError
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.database.ValueEventListener
|
||||
import h_mal.appttude.com.objects.WholeDriverObject
|
||||
import h_mal.appttude.com.objects.wholeObject.MappedObject
|
||||
import h_mal.appttude.com.R
|
||||
import kotlinx.android.synthetic.admin.fragment_home_super_user.*
|
||||
import h_mal.appttude.com.driver.admin.objects.WholeDriverObject
|
||||
import h_mal.appttude.com.driver.admin.objects.wholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import java.io.IOException
|
||||
import java.util.*
|
||||
|
||||
@@ -42,7 +42,7 @@ class HomeSuperUserFragment : Fragment() {
|
||||
// Inflate the layout for this fragment
|
||||
val view: View = inflater.inflate(R.layout.fragment_home_super_user, container, false)
|
||||
|
||||
recycler_view.apply {
|
||||
view.findViewById<RecyclerView>(R.id.recycler_view).apply {
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
recyclerViewAdapter = RecyclerViewAdapter(context, mappedObjectList)
|
||||
adapter = recyclerViewAdapter
|
||||
@@ -0,0 +1,50 @@
|
||||
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.ui
|
||||
package h_mal.appttude.com.driver.ui
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
@@ -12,9 +12,9 @@ import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.squareup.picasso.Picasso
|
||||
import h_mal.appttude.com.objects.UserObject
|
||||
import h_mal.appttude.com.objects.wholeObject.MappedObject
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.driver.admin.objects.UserObject
|
||||
import h_mal.appttude.com.driver.admin.objects.wholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class RecyclerViewAdapter constructor(var context: Context?, var objects: List<MappedObject>?) :
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.ui
|
||||
package h_mal.appttude.com.driver.ui
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
@@ -7,8 +7,8 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.GridView
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.objects.wholeObject.MappedObject
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.driver.admin.objects.wholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class UserMainFragment : Fragment() {
|
||||
@@ -1,33 +0,0 @@
|
||||
package h_mal.appttude.com.objects
|
||||
|
||||
import h_mal.appttude.com.model.*
|
||||
import java.util.*
|
||||
|
||||
class ArchiveObject {
|
||||
var driver_license: HashMap<String, DriversLicenseObject>? = null
|
||||
var private_hire: HashMap<String, PrivateHireObject>? = null
|
||||
var vehicle_details: HashMap<String, VehicleProfileObject>? = null
|
||||
var insurance_details: HashMap<String, InsuranceObject>? = null
|
||||
var mot_details: HashMap<String, MotObject>? = null
|
||||
var log_book: HashMap<String, LogbookObject>? = null
|
||||
var ph_car: HashMap<String, PrivateHireVehicleObject>? = null
|
||||
|
||||
constructor()
|
||||
constructor(
|
||||
driver_license: HashMap<String, DriversLicenseObject>?,
|
||||
private_hire: HashMap<String, PrivateHireObject>?,
|
||||
vehicle_details: HashMap<String, VehicleProfileObject>?,
|
||||
insurance_details: HashMap<String, InsuranceObject>?,
|
||||
mot_details: HashMap<String, MotObject>?,
|
||||
log_book: HashMap<String, LogbookObject>?,
|
||||
private_hire_vehicle: HashMap<String, PrivateHireVehicleObject>?
|
||||
) {
|
||||
this.driver_license = driver_license
|
||||
this.private_hire = private_hire
|
||||
this.vehicle_details = vehicle_details
|
||||
this.insurance_details = insurance_details
|
||||
this.mot_details = mot_details
|
||||
this.log_book = log_book
|
||||
this.ph_car = private_hire_vehicle
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
package h_mal.appttude.com.objects.wholeObject
|
||||
|
||||
import h_mal.appttude.com.model.DriverProfileObject
|
||||
import h_mal.appttude.com.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.model.PrivateHireObject
|
||||
|
||||
|
||||
class DriverProfile {
|
||||
var driver_profile: DriverProfileObject? = null
|
||||
var driver_license: DriversLicenseObject? = null
|
||||
var private_hire: PrivateHireObject? = null
|
||||
|
||||
constructor(
|
||||
driver_profile: DriverProfileObject?,
|
||||
driver_license: DriversLicenseObject?,
|
||||
private_hire: PrivateHireObject?
|
||||
) {
|
||||
this.driver_profile = driver_profile
|
||||
this.driver_license = driver_license
|
||||
this.private_hire = private_hire
|
||||
}
|
||||
|
||||
constructor()
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
package h_mal.appttude.com.objects.wholeObject
|
||||
|
||||
import h_mal.appttude.com.model.InsuranceObject
|
||||
import h_mal.appttude.com.model.LogbookObject
|
||||
import h_mal.appttude.com.model.PrivateHireVehicleObject
|
||||
import h_mal.appttude.com.model.MotObject
|
||||
import h_mal.appttude.com.model.VehicleProfileObject
|
||||
|
||||
|
||||
class VehicleProfile {
|
||||
var insurance_details: InsuranceObject? = null
|
||||
var log_book: LogbookObject? = null
|
||||
var mot_details: MotObject? = null
|
||||
var vehicle_details: VehicleProfileObject? = null
|
||||
var privateHireVehicleObject: PrivateHireVehicleObject? = null
|
||||
|
||||
constructor()
|
||||
|
||||
// public VehicleProfile(InsuranceObject insurance_details, LogbookObject log_book, MotObject mot_details, VehicleProfileObject vehicle_details) {
|
||||
// this.insurance_details = insurance_details;
|
||||
// this.log_book = log_book;
|
||||
// this.mot_details = mot_details;
|
||||
// this.vehicle_details = vehicle_details;
|
||||
// }
|
||||
constructor(
|
||||
insurance_details: InsuranceObject?,
|
||||
log_book: LogbookObject?,
|
||||
mot_details: MotObject?,
|
||||
vehicle_details: VehicleProfileObject?,
|
||||
private_hire_vehicle: PrivateHireVehicleObject?
|
||||
) {
|
||||
this.insurance_details = insurance_details
|
||||
this.log_book = log_book
|
||||
this.mot_details = mot_details
|
||||
this.vehicle_details = vehicle_details
|
||||
privateHireVehicleObject = private_hire_vehicle
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
package h_mal.appttude.com.ui
|
||||
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
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.dialogs.ExitDialog.displayExitDialog
|
||||
import h_mal.appttude.com.utils.setGlideImage
|
||||
import h_mal.appttude.com.viewmodels.MainViewModel
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
import kotlinx.android.synthetic.main.app_bar_main.*
|
||||
import kotlinx.android.synthetic.main.nav_header_main.view.*
|
||||
|
||||
|
||||
class MainActivity : BaseActivity<MainViewModel>(),
|
||||
NavigationView.OnNavigationItemSelectedListener {
|
||||
|
||||
private val vm by createLazyViewModel<MainViewModel>()
|
||||
override fun getViewModel(): MainViewModel = vm
|
||||
override val layoutId: Int = R.layout.activity_main
|
||||
|
||||
lateinit var navController: NavController
|
||||
lateinit var appBarConfiguration: AppBarConfiguration
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setSupportActionBar(toolbar)
|
||||
supportActionBar?.setDisplayShowTitleEnabled(false)
|
||||
navController = findNavController(R.id.container)
|
||||
|
||||
appBarConfiguration = AppBarConfiguration(navController.graph, drawer_layout)
|
||||
nav_view.setupWithNavController(navController)
|
||||
setupActionBarWithNavController(navController, appBarConfiguration)
|
||||
|
||||
getViewModel().getUserDetails()
|
||||
setupLogoutInDrawer()
|
||||
}
|
||||
|
||||
override fun onSupportNavigateUp(): Boolean {
|
||||
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
|
||||
}
|
||||
|
||||
override fun setTitle(title: CharSequence) {
|
||||
toolbar.title = title
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
|
||||
drawer_layout.closeDrawer(GravityCompat.START)
|
||||
} else {
|
||||
val navHostFragment = supportFragmentManager.findFragmentById(R.id.container)
|
||||
navHostFragment?.childFragmentManager?.backStackEntryCount?.takeIf { it >= 1 }?.let {
|
||||
return super.onBackPressed()
|
||||
}
|
||||
displayExitDialog()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
when (data) {
|
||||
is FirebaseUser -> {
|
||||
setupDrawer(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupDrawer(user: FirebaseUser) {
|
||||
val header: View = nav_view.getHeaderView(0)
|
||||
header.driver_email.text = user.email
|
||||
header.driver_name.text = user.displayName
|
||||
header.profileImage.setGlideImage(user.photoUrl)
|
||||
}
|
||||
|
||||
private fun setupLogoutInDrawer() {
|
||||
logout.setOnClickListener {
|
||||
getViewModel().logOut()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onNavigationItemSelected(item: MenuItem): Boolean {
|
||||
// Handle navigation view item clicks here.
|
||||
when (item.itemId) {
|
||||
R.id.nav_user_settings -> {}
|
||||
}
|
||||
drawer_layout.closeDrawer(GravityCompat.START)
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,8 @@
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
tools:listitem="@layout/list_item_layout">
|
||||
|
||||
</androidx.recyclerview.widget.RecyclerView>
|
||||
|
||||
|
||||
15
app/src/admin/res/navigation/main_navigation.xml
Normal file
15
app/src/admin/res/navigation/main_navigation.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/main_navigation"
|
||||
app:startDestination="@id/homeAdminFragment">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/homeAdminFragment"
|
||||
android:name="h_mal.appttude.com.driver.ui.HomeSuperUserFragment"
|
||||
android:label="fragment_home"
|
||||
tools:layout="@layout/fragment_home_super_user">
|
||||
</fragment>
|
||||
|
||||
</navigation>
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com
|
||||
package h_mal.appttude.com.driver
|
||||
|
||||
import android.content.res.Resources
|
||||
import androidx.annotation.StringRes
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com
|
||||
package h_mal.appttude.com.driver
|
||||
|
||||
import android.view.View
|
||||
import androidx.annotation.StringRes
|
||||
@@ -10,7 +10,7 @@ import androidx.test.espresso.UiController
|
||||
import androidx.test.espresso.ViewAction
|
||||
import androidx.test.espresso.matcher.ViewMatchers.isRoot
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import h_mal.appttude.com.base.BaseActivity
|
||||
import h_mal.appttude.com.driver.base.BaseActivity
|
||||
import org.hamcrest.Matcher
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com
|
||||
package h_mal.appttude.com.driver
|
||||
|
||||
|
||||
private const val apiKey = "test_key"
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com
|
||||
package h_mal.appttude.com.driver
|
||||
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
@@ -1,10 +1,10 @@
|
||||
package h_mal.appttude.com
|
||||
package h_mal.appttude.com.driver
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import com.google.firebase.database.FirebaseDatabase
|
||||
import com.google.firebase.storage.FirebaseStorage
|
||||
import h_mal.appttude.com.base.BaseActivity
|
||||
import h_mal.appttude.com.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.driver.base.BaseActivity
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthSource
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.tasks.await
|
||||
import org.junit.After
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com
|
||||
package h_mal.appttude.com.driver
|
||||
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.firebase
|
||||
package h_mal.appttude.com.driver.firebase
|
||||
|
||||
data class SignUpResponse(
|
||||
val expiresIn: String? = null,
|
||||
@@ -1,7 +1,7 @@
|
||||
package h_mal.appttude.com.robots
|
||||
package h_mal.appttude.com.driver.robots
|
||||
|
||||
import h_mal.appttude.com.BaseTestRobot
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.driver.BaseTestRobot
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
fun home(func: HomeRobot.() -> Unit) = HomeRobot().apply { func() }
|
||||
class HomeRobot : BaseTestRobot() {
|
||||
@@ -1,7 +1,7 @@
|
||||
package h_mal.appttude.com.robots
|
||||
package h_mal.appttude.com.driver.robots
|
||||
|
||||
import h_mal.appttude.com.BaseTestRobot
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.driver.BaseTestRobot
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
fun login(func: LoginRobot.() -> Unit) = LoginRobot().apply { func() }
|
||||
@@ -1,7 +1,7 @@
|
||||
package h_mal.appttude.com.robots
|
||||
package h_mal.appttude.com.driver.robots
|
||||
|
||||
import h_mal.appttude.com.BaseTestRobot
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.driver.BaseTestRobot
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
fun register(func: RegisterRobot.() -> Unit) = RegisterRobot().apply { func() }
|
||||
class RegisterRobot : BaseTestRobot() {
|
||||
@@ -1,14 +1,14 @@
|
||||
package h_mal.appttude.com.tests
|
||||
package h_mal.appttude.com.driver.tests
|
||||
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.LargeTest
|
||||
import h_mal.appttude.com.FirebaseTest
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.USER_PASSWORD
|
||||
import h_mal.appttude.com.robots.home
|
||||
import h_mal.appttude.com.robots.login
|
||||
import h_mal.appttude.com.ui.user.LoginActivity
|
||||
import h_mal.appttude.com.driver.FirebaseTest
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.USER_PASSWORD
|
||||
import h_mal.appttude.com.driver.robots.home
|
||||
import h_mal.appttude.com.driver.robots.login
|
||||
import h_mal.appttude.com.driver.ui.user.LoginActivity
|
||||
import org.junit.*
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package h_mal.appttude.com.tests
|
||||
package h_mal.appttude.com.driver.tests
|
||||
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.LargeTest
|
||||
import h_mal.appttude.com.FirebaseTest
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.USER_PASSWORD
|
||||
import h_mal.appttude.com.robots.home
|
||||
import h_mal.appttude.com.robots.login
|
||||
import h_mal.appttude.com.robots.register
|
||||
import h_mal.appttude.com.ui.user.LoginActivity
|
||||
import h_mal.appttude.com.driver.FirebaseTest
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.USER_PASSWORD
|
||||
import h_mal.appttude.com.driver.robots.home
|
||||
import h_mal.appttude.com.driver.robots.login
|
||||
import h_mal.appttude.com.driver.robots.register
|
||||
import h_mal.appttude.com.driver.ui.user.LoginActivity
|
||||
import org.junit.*
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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 :
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
@@ -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() {
|
||||
@@ -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>() {
|
||||
@@ -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 :
|
||||
@@ -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
|
||||
@@ -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 :
|
||||
@@ -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 :
|
||||
@@ -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>() {
|
||||
@@ -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 :
|
||||
@@ -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
|
||||
@@ -1,18 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="h_mal.appttude.com">
|
||||
package="h_mal.appttude.com.driver">
|
||||
<!-- To auto-complete the email text field in the login form with the user's emails -->
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
|
||||
<application
|
||||
android:name="h_mal.appttude.com.application.DriverApplication"
|
||||
android:name="h_mal.appttude.com.driver.application.DriverApplication"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity
|
||||
android:name="h_mal.appttude.com.driver.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.driver.ui.MainActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="h_mal.appttude.com.driver.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>
|
||||
@@ -1,4 +0,0 @@
|
||||
package h_mal.appttude.com.data
|
||||
|
||||
const val DRIVER = "driver"
|
||||
const val ADMIN = "super_user"
|
||||
@@ -1,11 +1,11 @@
|
||||
package h_mal.appttude.com.application
|
||||
package h_mal.appttude.com.driver.application
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import h_mal.appttude.com.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.viewmodels.*
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.viewmodels.*
|
||||
|
||||
class ApplicationViewModelFactory(
|
||||
private val auth: FirebaseAuthSource,
|
||||
@@ -1,9 +1,9 @@
|
||||
package h_mal.appttude.com.application
|
||||
package h_mal.appttude.com.driver.application
|
||||
|
||||
import android.app.Application
|
||||
import h_mal.appttude.com.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import org.kodein.di.Kodein
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.android.x.androidXModule
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.Archive
|
||||
package h_mal.appttude.com.driver.archive
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
@@ -7,7 +7,7 @@ import android.view.ViewGroup
|
||||
import android.widget.ListView
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
class ArchiveFragment : Fragment() {
|
||||
// var archive: ArchiveObject? = null
|
||||
@@ -1,14 +1,14 @@
|
||||
package h_mal.appttude.com.Archive
|
||||
package h_mal.appttude.com.driver.archive
|
||||
|
||||
//import h_mal.appttude.com.Global.FirebaseClass
|
||||
//import h_mal.appttude.com.Global.ImageSwiperClass
|
||||
//import h_mal.appttude.com.Objects.ArchiveObject
|
||||
//import h_mal.appttude.com.driver.Global.FirebaseClass
|
||||
//import h_mal.appttude.com.driver.Global.ImageSwiperClass
|
||||
//import h_mal.appttude.com.driver.Objects.ArchiveObject
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.BaseAdapter
|
||||
import android.widget.TextView
|
||||
import h_mal.appttude.com.utils.DateUtils.convertDateStringDatePattern
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.convertDateStringDatePattern
|
||||
import java.text.ParseException
|
||||
|
||||
class ArchiveObjectListAdapter(
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.base
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
@@ -12,10 +12,10 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.ViewModelLazy
|
||||
import androidx.test.espresso.IdlingResource
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.data.ViewState
|
||||
import h_mal.appttude.com.utils.*
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.driver.data.ViewState
|
||||
import h_mal.appttude.com.driver.utils.*
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.android.kodein
|
||||
import org.kodein.di.generic.instance
|
||||
@@ -29,16 +29,18 @@ abstract class BaseActivity<V : BaseViewModel, VB : ViewBinding> : AppCompatActi
|
||||
private lateinit var loadingView: View
|
||||
|
||||
private var _binding: VB? = null
|
||||
private val binding: VB
|
||||
val binding: VB
|
||||
get() = _binding ?: error("Must only access binding while fragment is attached.")
|
||||
|
||||
|
||||
val viewModel: V by createLazyViewModel()
|
||||
|
||||
override val kodein by kodein()
|
||||
val factory by instance<ApplicationViewModelFactory>()
|
||||
private val factory by instance<ApplicationViewModelFactory>()
|
||||
|
||||
fun createLazyViewModel(): Lazy<V> = ViewModelLazy(
|
||||
/**
|
||||
* Create a lazy viewmodel based on the generic view model [V].
|
||||
*/
|
||||
private fun createLazyViewModel(): Lazy<V> = ViewModelLazy(
|
||||
getGenericClassAt(0),
|
||||
{ viewModelStore },
|
||||
{ factory },
|
||||
@@ -52,7 +54,10 @@ abstract class BaseActivity<V : BaseViewModel, VB : ViewBinding> : AppCompatActi
|
||||
?.kotlin
|
||||
?: throw IllegalStateException("Can not find class from generic argument")
|
||||
|
||||
fun inflateBindingByType(
|
||||
/**
|
||||
* Create a view binding out of the the generic [VB]
|
||||
*/
|
||||
private fun inflateBindingByType(
|
||||
genericClassAt: KClass<VB>
|
||||
): VB = try {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
@@ -74,8 +79,14 @@ abstract class BaseActivity<V : BaseViewModel, VB : ViewBinding> : AppCompatActi
|
||||
setupView(binding)
|
||||
}
|
||||
|
||||
|
||||
open fun setupView(binding: VB) {}
|
||||
|
||||
/**
|
||||
* Extension function which can be used in our child class for binding.
|
||||
*
|
||||
* @sample applyBinding { textView.text = "Hello" }
|
||||
*/
|
||||
fun applyBinding(block: VB.() -> Unit) {
|
||||
block(binding)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.base
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.ClipData
|
||||
@@ -11,9 +11,9 @@ import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.createViewModelLazy
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import h_mal.appttude.com.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.data.ViewState
|
||||
import h_mal.appttude.com.utils.PermissionsUtils
|
||||
import h_mal.appttude.com.driver.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.driver.data.ViewState
|
||||
import h_mal.appttude.com.driver.utils.PermissionsUtils
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.android.x.kodein
|
||||
import org.kodein.di.generic.instance
|
||||
@@ -1,9 +1,9 @@
|
||||
package h_mal.appttude.com.base
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import h_mal.appttude.com.data.ViewState
|
||||
import h_mal.appttude.com.utils.Event
|
||||
import h_mal.appttude.com.driver.data.ViewState
|
||||
import h_mal.appttude.com.driver.utils.Event
|
||||
|
||||
abstract class BaseViewModel : ViewModel() {
|
||||
open val uiState: MutableLiveData<ViewState> = MutableLiveData()
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.base
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
@@ -8,10 +8,10 @@ import android.view.View
|
||||
import android.widget.EditText
|
||||
import androidx.core.widget.doAfterTextChanged
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import h_mal.appttude.com.data.UserAuthState
|
||||
import h_mal.appttude.com.ui.user.LoginActivity
|
||||
import h_mal.appttude.com.utils.PermissionsUtils.askForPermissions
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEditText
|
||||
import h_mal.appttude.com.driver.data.UserAuthState
|
||||
import h_mal.appttude.com.driver.ui.user.LoginActivity
|
||||
import h_mal.appttude.com.driver.utils.PermissionsUtils.askForPermissions
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEditText
|
||||
|
||||
private const val IMAGE_PERMISSION_RESULT = 402
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package h_mal.appttude.com.base
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.utils.Coroutines.io
|
||||
import h_mal.appttude.com.utils.DateUtils.getDateTimeStamp
|
||||
import h_mal.appttude.com.utils.getDataFromDatabaseRef
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthentication
|
||||
import h_mal.appttude.com.driver.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.getDateTimeStamp
|
||||
import h_mal.appttude.com.driver.utils.getDataFromDatabaseRef
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
@@ -1,43 +1,54 @@
|
||||
package h_mal.appttude.com.ui
|
||||
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.drawerlayout.widget.DrawerLayout
|
||||
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 androidx.viewbinding.ViewBinding
|
||||
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
|
||||
import h_mal.appttude.com.driver.databinding.NavHeaderMainBinding
|
||||
import h_mal.appttude.com.driver.dialogs.ExitDialog.displayExitDialog
|
||||
import h_mal.appttude.com.driver.utils.isTrue
|
||||
import h_mal.appttude.com.driver.utils.setGlideImage
|
||||
|
||||
|
||||
class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),
|
||||
abstract class DrawerActivity<V : BaseViewModel, VB : ViewBinding> : BaseActivity<V, VB>(),
|
||||
NavigationView.OnNavigationItemSelectedListener {
|
||||
|
||||
abstract val containerId: Int
|
||||
abstract val drawerLayoutId: Int
|
||||
abstract val toolbarId: Int
|
||||
abstract val navViewId:Int
|
||||
|
||||
lateinit var navController: NavController
|
||||
lateinit var appBarConfiguration: AppBarConfiguration
|
||||
|
||||
override fun setupView(binding: ActivityMainBinding) = binding.run {
|
||||
setSupportActionBar(appBarLayout.toolbar)
|
||||
lateinit var toolbar: Toolbar
|
||||
lateinit var drawerLayout: DrawerLayout
|
||||
lateinit var navView: NavigationView
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
toolbar = findViewById(toolbarId)
|
||||
drawerLayout = findViewById(drawerLayoutId)
|
||||
navView = findViewById(navViewId)
|
||||
|
||||
setSupportActionBar(toolbar)
|
||||
supportActionBar?.setDisplayShowTitleEnabled(false)
|
||||
navController = findNavController(R.id.container)
|
||||
navController = findNavController(containerId)
|
||||
|
||||
appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)
|
||||
navView.setupWithNavController(navController)
|
||||
setupActionBarWithNavController(navController, appBarConfiguration)
|
||||
|
||||
viewModel.getUserDetails()
|
||||
setupLogoutInDrawer()
|
||||
}
|
||||
|
||||
override fun onSupportNavigateUp(): Boolean {
|
||||
@@ -45,10 +56,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),
|
||||
}
|
||||
|
||||
override fun setTitle(title: CharSequence) {
|
||||
applyBinding {
|
||||
appBarLayout.toolbar.title = title
|
||||
}
|
||||
|
||||
toolbar.title = title
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
@@ -56,9 +64,9 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),
|
||||
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
|
||||
drawerLayout.closeDrawer(GravityCompat.START)
|
||||
} else {
|
||||
val navHostFragment = supportFragmentManager.findFragmentById(R.id.container)
|
||||
navHostFragment?.childFragmentManager?.backStackEntryCount?.let { it >= 1 }?.isTrue {
|
||||
navController.backQueue.size.let { it >= 1 }.isTrue {
|
||||
super.onBackPressed()
|
||||
return@applyBinding
|
||||
}
|
||||
displayExitDialog()
|
||||
}
|
||||
@@ -84,23 +92,8 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
drawerLayout.closeDrawer(GravityCompat.START)
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.data
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import com.google.firebase.database.DataSnapshot
|
||||
import com.google.firebase.database.DatabaseError
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.data
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.android.gms.tasks.Task
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.data
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.data
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.android.gms.tasks.Task
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.data
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
sealed class FirebaseCompletion {
|
||||
object Default : FirebaseCompletion()
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.data
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.database.FirebaseDatabase
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.data
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.storage.FirebaseStorage
|
||||
@@ -0,0 +1,4 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
const val DRIVER = "driver"
|
||||
const val ADMIN = "super_user"
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.data
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package h_mal.appttude.com.data
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import h_mal.appttude.com.utils.Event
|
||||
import h_mal.appttude.com.driver.utils.Event
|
||||
|
||||
|
||||
sealed class ViewState {
|
||||
@@ -1,12 +1,12 @@
|
||||
package h_mal.appttude.com.dialogs
|
||||
package h_mal.appttude.com.driver.dialogs
|
||||
|
||||
|
||||
import android.app.DatePickerDialog
|
||||
import android.app.DatePickerDialog.OnDateSetListener
|
||||
import android.icu.util.Calendar
|
||||
import android.widget.EditText
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.utils.DateUtils
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.utils.DateUtils
|
||||
|
||||
|
||||
private const val DATE_FORMAT = "dd/MM/yyyy"
|
||||
@@ -1,8 +1,8 @@
|
||||
package h_mal.appttude.com.dialogs
|
||||
package h_mal.appttude.com.driver.dialogs
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.AlertDialog
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.driver.R
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
object ExitDialog {
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.model
|
||||
package h_mal.appttude.com.driver.model
|
||||
|
||||
data class DriverProfile(
|
||||
var driverPic: String? = null,
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.model
|
||||
package h_mal.appttude.com.driver.model
|
||||
|
||||
|
||||
data class DriversLicense(
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.model
|
||||
package h_mal.appttude.com.driver.model
|
||||
|
||||
data class Insurance(
|
||||
var photoStrings: MutableList<String?>? = null,
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.model
|
||||
package h_mal.appttude.com.driver.model
|
||||
|
||||
|
||||
data class Logbook(
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.model
|
||||
package h_mal.appttude.com.driver.model
|
||||
|
||||
|
||||
data class Mot(
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.model
|
||||
package h_mal.appttude.com.driver.model
|
||||
|
||||
|
||||
data class PrivateHireLicense(
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.model
|
||||
package h_mal.appttude.com.driver.model
|
||||
|
||||
|
||||
class PrivateHireVehicle(
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.model
|
||||
package h_mal.appttude.com.driver.model
|
||||
|
||||
|
||||
data class VehicleProfile(
|
||||
6
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/dictionaries
generated
Normal file
6
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/dictionaries
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectDictionaryState">
|
||||
<dictionary name="h_mal" />
|
||||
</component>
|
||||
</project>
|
||||
6
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/kotlinc.xml
generated
Normal file
6
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/kotlinc.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Kotlin2JsCompilerArguments">
|
||||
<option name="sourceMapEmbedSources" />
|
||||
</component>
|
||||
</project>
|
||||
11
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/misc.xml
generated
Normal file
11
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/misc.xml
generated
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CMakeSettings">
|
||||
<configurations>
|
||||
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
|
||||
</configurations>
|
||||
</component>
|
||||
<component name="ProjectRootManager">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
8
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/modules.xml
generated
Normal file
8
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/ui.iml" filepath="$PROJECT_DIR$/ui.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/vcs.xml
generated
Normal file
6
app/src/main/java/h_mal/appttude/com/driver/ui/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/../../../../../../../.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,10 +1,10 @@
|
||||
package h_mal.appttude.com.ui.update
|
||||
package h_mal.appttude.com.driver.ui.update
|
||||
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.databinding.FragmentDeleteProfileBinding
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.databinding.FragmentDeleteProfileBinding
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
|
||||
|
||||
class DeleteProfileFragment :
|
||||
@@ -0,0 +1,17 @@
|
||||
package h_mal.appttude.com.driver.ui.update
|
||||
|
||||
import h_mal.appttude.com.driver.base.BaseActivity
|
||||
import h_mal.appttude.com.driver.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.driver.databinding.UpdateActivityBinding
|
||||
import h_mal.appttude.com.driver.utils.displayToast
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
|
||||
class UpdateActivity : BaseActivity<UpdateUserViewModel, UpdateActivityBinding>() {
|
||||
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
when (data) {
|
||||
is FirebaseCompletion.Changed -> displayToast(data.message)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package h_mal.appttude.com.ui.update
|
||||
package h_mal.appttude.com.driver.ui.update
|
||||
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.databinding.FragmentUpdateEmailBinding
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.databinding.FragmentUpdateEmailBinding
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
|
||||
|
||||
class UpdateEmailFragment : BaseFragment<UpdateUserViewModel, FragmentUpdateEmailBinding>() {
|
||||
@@ -1,11 +1,11 @@
|
||||
package h_mal.appttude.com.ui.update
|
||||
package h_mal.appttude.com.driver.ui.update
|
||||
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.databinding.UpdateOverviewFragmentBinding
|
||||
import h_mal.appttude.com.utils.navigateTo
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.databinding.UpdateOverviewFragmentBinding
|
||||
import h_mal.appttude.com.driver.utils.navigateTo
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
|
||||
class UpdateOverviewFragment : BaseFragment<UpdateUserViewModel, UpdateOverviewFragmentBinding>(),
|
||||
View.OnClickListener {
|
||||
@@ -1,11 +1,11 @@
|
||||
package h_mal.appttude.com.ui.update
|
||||
package h_mal.appttude.com.driver.ui.update
|
||||
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.databinding.FragmentUpdatePasswordBinding
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.databinding.FragmentUpdatePasswordBinding
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
|
||||
|
||||
class UpdatePasswordFragment : BaseFragment<UpdateUserViewModel, FragmentUpdatePasswordBinding>() {
|
||||
@@ -1,15 +1,15 @@
|
||||
package h_mal.appttude.com.ui.update
|
||||
package h_mal.appttude.com.driver.ui.update
|
||||
|
||||
import android.Manifest.permission.READ_EXTERNAL_STORAGE
|
||||
import android.net.Uri
|
||||
import androidx.core.widget.doAfterTextChanged
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.databinding.FragmentUpdateProfileBinding
|
||||
import h_mal.appttude.com.utils.PermissionsUtils.askForPermissions
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.utils.setGlideImage
|
||||
import h_mal.appttude.com.viewmodels.UpdateUserViewModel
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.databinding.FragmentUpdateProfileBinding
|
||||
import h_mal.appttude.com.driver.utils.PermissionsUtils.askForPermissions
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.utils.setGlideImage
|
||||
import h_mal.appttude.com.driver.viewmodels.UpdateUserViewModel
|
||||
|
||||
const val TAG_CONST = "non-user"
|
||||
private const val IMAGE_PERMISSION_RESULT = 402
|
||||
@@ -1,9 +1,9 @@
|
||||
package h_mal.appttude.com.ui.user
|
||||
package h_mal.appttude.com.driver.ui.user
|
||||
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.databinding.FragmentForgotPasswordBinding
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.databinding.FragmentForgotPasswordBinding
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
|
||||
|
||||
class ForgotPasswordFragment : BaseFragment<UserViewModel, FragmentForgotPasswordBinding>() {
|
||||
@@ -1,13 +1,13 @@
|
||||
package h_mal.appttude.com.ui.user
|
||||
package h_mal.appttude.com.driver.ui.user
|
||||
|
||||
|
||||
import android.content.Intent
|
||||
import com.google.firebase.auth.AuthResult
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
import h_mal.appttude.com.base.BaseActivity
|
||||
import h_mal.appttude.com.databinding.ActivityLoginBinding
|
||||
import h_mal.appttude.com.ui.MainActivity
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
import h_mal.appttude.com.driver.base.BaseActivity
|
||||
import h_mal.appttude.com.driver.databinding.ActivityLoginBinding
|
||||
import h_mal.appttude.com.driver.ui.MainActivity
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
|
||||
|
||||
/**
|
||||
@@ -1,13 +1,13 @@
|
||||
package h_mal.appttude.com.ui.user
|
||||
package h_mal.appttude.com.driver.ui.user
|
||||
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.databinding.FragmentLoginBinding
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.navigateTo
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.databinding.FragmentLoginBinding
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.navigateTo
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
|
||||
class LoginFragment : BaseFragment<UserViewModel, FragmentLoginBinding>() {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package h_mal.appttude.com.ui.user
|
||||
package h_mal.appttude.com.driver.ui.user
|
||||
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.databinding.FragmentRegisterBinding
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.databinding.FragmentRegisterBinding
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEmailEditText
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validatePasswordEditText
|
||||
import h_mal.appttude.com.driver.utils.setEnterPressedListener
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
|
||||
class RegisterFragment :
|
||||
BaseFragment<UserViewModel, FragmentRegisterBinding>() {
|
||||
@@ -1,13 +1,13 @@
|
||||
package h_mal.appttude.com.ui.user
|
||||
package h_mal.appttude.com.driver.ui.user
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.databinding.SplashScreenBinding
|
||||
import h_mal.appttude.com.utils.navigateTo
|
||||
import h_mal.appttude.com.viewmodels.UserViewModel
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.base.BaseFragment
|
||||
import h_mal.appttude.com.driver.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.driver.databinding.SplashScreenBinding
|
||||
import h_mal.appttude.com.driver.utils.navigateTo
|
||||
import h_mal.appttude.com.driver.viewmodels.UserViewModel
|
||||
|
||||
|
||||
class SplashScreenFragment : BaseFragment<UserViewModel, SplashScreenBinding>() {
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.utils
|
||||
package h_mal.appttude.com.driver.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.utils
|
||||
package h_mal.appttude.com.driver.utils
|
||||
|
||||
import android.view.View
|
||||
import android.view.animation.Animation
|
||||
@@ -1,4 +1,4 @@
|
||||
package h_mal.appttude.com.utils
|
||||
package h_mal.appttude.com.driver.utils
|
||||
|
||||
import androidx.test.espresso.IdlingResource
|
||||
import androidx.test.espresso.IdlingResource.ResourceCallback
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user